Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
dz̸·Ö²¼Ê½·þÎñЭµ÷¼¼Êõ Zookeeper
 
À´Ô´:linkedkeeper ·¢²¼ÓÚ:2017-7-28
  3579  次浏览      30
 

GoogleµÄÈýƪÂÛÎÄÓ°ÏìÁ˺ܶàºÜ¶àÈË£¬Ò²Ó°ÏìÁ˺ܶàºÜ¶àϵͳ¡£ÕâÈýƪÂÛÎÄÒ»Ö±ÊÇ·Ö²¼Ê½ÁìÓò´«Ôĵľ­µä¡£¸ù¾ÝMapReduce£¬ÓÚÊÇÎÒÃÇÓÐÁËHadoop£»¸ù¾ÝGFS£¬ÓÚÊÇÎÒÃÇÓÐÁËHDFS£»¸ù¾ÝBigTable£¬ÓÚÊÇÎÒÃÇÓÐÁËHBase¡£¶øÔÚÕâÈýƪÂÛÎÄÀï¶¼Ìá¼°GoogleµÄÒ»¸öLock Service ¡ª¡ª Chubby£¬Å¶£¬ÓÚÊÇÎÒÃÇÓÐÁËZookeeper¡£

Ëæ×Å´óÊý¾ÝµÄ»ðÈÈ£¬HxxÃÇÒѾ­±äµÃ¶úÊìÄÜÏ꣬ÏÖÔÚ×÷Ϊһ¸ö¿ª·¢ÈËÔ±Èç¹û¶¼²»ÖªµÀÕ⼸¸öÃû´Ê³öÃŶ¼ºÃÏñ²»ºÃÒâ˼¸úÈË´òÕкô¡£µ«Êµ¼ÊÉ϶ÔÎÒÃÇÕâЩ·Ç´óÊý¾Ý¿ª·¢ÈËÔ±¶øÑÔ£¬ZookeeperÊDZÈHxxÃÇ¿ÉÄܽӴ¥µ½¸ü¶àµÄÒ»¸ö»ù´¡·þÎñ¡£µ«ÊÇ£¬ÎÞÄεÄÊÇËüһֱĬĬµÄλÓÚ¶þÏߣ¬´ÓÀ´Ã»ÓÐHxxÃÇÄÇôҫÑÛ¡£ÄÇôµ½µ×ʲôÊÇZookeeperÄØ£¿Zookeeper¿ÉÒÔÓÃÀ´¸Éʲô£¿ÎÒÃǽ«ÈçºÎʹÓÃZookeeper£¿ZookeeperÓÖÊÇÔõôʵÏֵģ¿

ʲôÊÇZookeeper

ÔÚZookeeperµÄ¹ÙÍøÉÏÓÐÕâôһ¾ä»°£ºZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services¡£

Õâ´ó¸ÅÃèÊöÁËZookeeperÖ÷ÒªÊÇÒ»¸ö·Ö²¼Ê½·þÎñЭµ÷¿ò¼Ü£¬ÊµÏÖͬ²½·þÎñ£¬ÅäÖÃά»¤ºÍÃüÃû·þÎñµÈ·Ö²¼Ê½Ó¦Óá£ÊÇÒ»¸ö¸ßÐÔÄܵķֲ¼Ê½Êý¾ÝÒ»ÖÂÐÔ½â¾ö·½°¸¡£

ͨË׵ؽ²£¬ZooKeeperÊǶ¯ÎïÔ°¹ÜÀíÔ±£¬ËüÊÇÄÃÀ´¹Ü´óÏó Hadoop¡¢¾¨Óã HBase¡¢KafkaµÈµÄ¹ÜÀíÔ±¡£

ZookeeperºÍCAPµÄ¹ØÏµ

×÷Ϊһ¸ö·Ö²¼Ê½ÏµÍ³£¬·ÖÇøÈÝ´íÐÔÊÇÒ»¸ö±ØÐëÒª¿¼ÂǵĹؼüµã¡£Ò»¸ö·Ö²¼Ê½ÏµÍ³Ò»µ©É¥Ê§ÁË·ÖÇøÈÝ´íÐÔ£¬Ò²¾Í±íʾ·ÅÆúÁËÀ©Õ¹ÐÔ¡£ÒòΪÔÚ·Ö²¼Ê½ÏµÍ³ÖУ¬ÍøÂç¹ÊÕÏÊǾ­³£³öÏֵģ¬Ò»µ©³öÏÖÔÚÕâÖÖÎÊÌâ¾Í»áµ¼ÖÂÕû¸öϵͳ²»¿ÉÓÃÊǾø¶Ô²»ÄÜÈÝÈ̵ġ£ËùÒÔ£¬´ó²¿·Ö·Ö²¼Ê½ÏµÍ³¶¼»áÔÚ±£Ö¤·ÖÇøÈÝ´íÐÔµÄǰÌáÏÂÔÚÒ»ÖÂÐԺͿÉÓÃÐÔÖ®¼ä×öȨºâ¡£

ZooKeeperÊǸöCP£¨Ò»ÖÂÐÔ+·ÖÇøÈÝ´íÐÔ£©µÄ£¬¼´ÈκÎʱ¿Ì¶ÔZooKeeperµÄ·ÃÎÊÇëÇóÄܵõ½Ò»ÖµÄÊý¾Ý½á¹û£¬Í¬Ê±ÏµÍ³¶ÔÍøÂç·Ö¸î¾ß±¸ÈÝ´íÐÔ£»µ«ÊÇËü²»Äܱ£Ö¤Ã¿´Î·þÎñÇëÇóµÄ¿ÉÓÃÐÔ¡£Ò²¾ÍÊÇÔÚ¼«¶Ë»·¾³Ï£¬ZooKeeper¿ÉÄܻᶪÆúһЩÇëÇó£¬Ïû·ÑÕß³ÌÐòÐèÒªÖØÐÂÇëÇó²ÅÄÜ»ñµÃ½á¹û¡£

ZooKeeperÊÇ·Ö²¼Ê½Ð­µ÷·þÎñ£¬ËüµÄÖ°ÔðÊDZ£Ö¤Êý¾ÝÔÚÆä¹ÜϽϵÄËùÓзþÎñÖ®¼ä±£³Öͬ²½¡¢Ò»Ö£»ËùÒԾͲ»ÄÑÀí½âΪʲôZooKeeper±»Éè¼Æ³ÉCP¶ø²»ÊÇAPÌØÐÔµÄÁË¡£¶øÇÒ£¬ ×÷ΪZooKeeperµÄºËÐÄʵÏÖËã·¨Zab£¬¾ÍÊǽâ¾öÁË·Ö²¼Ê½ÏµÍ³ÏÂÊý¾ÝÈçºÎÔÚ¶à¸ö·þÎñÖ®¼ä±£³Öͬ²½ÎÊÌâµÄ¡£

Zookeeper½ÚµãÌØÐÔ¼°½ÚµãÊôÐÔ·ÖÎö

ZookeeperÌṩ»ùÓÚÀàËÆÓÚÎļþϵͳµÄĿ¼½ÚµãÊ÷·½Ê½µÄÊý¾Ý´æ´¢£¬µ«ÊÇZookeeper²¢²»ÊÇÓÃÀ´×¨ÃÅ´æ´¢Êý¾ÝµÄ£¬ËüµÄ×÷ÓÃÖ÷ÒªÊÇÓÃÀ´Î¬»¤ºÍ¼à¿ØÄã´æ´¢µÄÊý¾ÝµÄ״̬±ä»¯¡£Í¨¹ý¼à¿ØÕâЩÊý¾Ý״̬µÄ±ä»¯£¬´Ó¶ø¿ÉÒÔ´ïµ½»ùÓÚÊý¾ÝµÄ¼¯Èº¹ÜÀí¡£

Êý¾ÝÄ£ÐÍ

ÓëLinuxÎļþϵͳ²»Í¬µÄÊÇ£¬LinuxÎļþϵͳÓÐĿ¼ºÍÎļþµÄÇø±ð£¬¶øZookeeperµÄÊý¾Ý½Úµã³ÆÎªZNode£¬ZNodeÊÇZookeeperÖÐÊý¾ÝµÄ×îСµ¥Ôª£¬Ã¿¸öZNode¶¼¿ÉÒÔ±£´æÊý¾Ý£¬Í¬Ê±»¹¿ÉÒÔ¹ÒÔØ×ӽڵ㣬Òò´Ë¹¹³ÉÁËÒ»¸ö²ã´Î»¯µÄÃüÃû¿Õ¼ä£¬³ÆÎªÊ÷¡£

ZookeeperÖÐZNodeµÄ½Úµã´´½¨Ê±ºòÊÇ¿ÉÒÔÖ¸¶¨ÀàÐ͵ģ¬Ö÷ÒªÓÐÏÂÃæ¼¸ÖÖÀàÐÍ¡£

PERSISTENT£º³Ö¾Ã»¯ZNode½Úµã£¬Ò»µ©´´½¨Õâ¸öZNodeµã´æ´¢µÄÊý¾Ý²»»áÖ÷¶¯Ïûʧ£¬³ý·ÇÊǿͻ§¶ËÖ÷¶¯µÄdelete¡£

EPHEMERAL£ºÁÙʱZNode½Úµã£¬ClientÁ¬½Óµ½Zookeeper ServiceµÄʱºò»á½¨Á¢Ò»¸öSession£¬Ö®ºóÓÃÕâ¸öZookeeperÁ¬½ÓʵÀý´´½¨¸ÃÀàÐ͵Äznode£¬Ò»µ©Client¹Ø±ÕÁËZookeeperµÄÁ¬½Ó£¬·þÎñÆ÷¾Í»áÇå³ýSession£¬È»ºóÕâ¸öSession½¨Á¢µÄZNode½Úµã¶¼»á´ÓÃüÃû¿Õ¼äÏûʧ¡£×ܽá¾ÍÊÇ£¬Õâ¸öÀàÐ͵ÄznodeµÄÉúÃüÖÜÆÚÊǺÍClient½¨Á¢µÄÁ¬½ÓÒ»ÑùµÄ¡£

PERSISTENT_SEQUENTIAL£ºË³Ðò×Ô¶¯±àºÅµÄZNode½Úµã£¬ÕâÖÖznoe½Úµã»á¸ù¾Ýµ±Ç°Òѽü´æÔÚµÄZNode½Úµã±àºÅ×Ô¶¯¼Ó 1£¬¶øÇÒ²»»áËæSession¶Ï¿ª¶øÏûʧ¡£

EPEMERAL_SEQUENTIAL£ºÁÙʱ×Ô¶¯±àºÅ½Úµã£¬ZNode½Úµã±àºÅ»á×Ô¶¯Ôö¼Ó£¬µ«ÊÇ»áËæSessionÏûʧ¶øÏûʧ

WatcherÊý¾Ý±ä¸ü֪ͨ

ZookeeperʹÓÃWatcher»úÖÆÊµÏÖ·Ö²¼Ê½Êý¾ÝµÄ·¢²¼/¶©ÔŦÄÜ¡£

ZookeeperµÄWatcher»úÖÆÖ÷Òª°üÀ¨¿Í»§¶ËÏ̡߳¢¿Í»§¶ËWatcherManager¡¢Zookeeper·þÎñÆ÷Èý²¿·Ö¡£¿Í»§¶ËÔÚÏòZookeeper·þÎñÆ÷×¢²áµÄͬʱ£¬»á½«Watcher¶ÔÏó´æ´¢ÔÚ¿Í»§¶ËµÄWatcherManagerµ±ÖС£µ±Zookeeper·þÎñÆ÷´¥·¢Watcherʼþºó£¬»áÏò¿Í»§¶Ë·¢ËÍ֪ͨ£¬¿Í»§¶ËÏ̴߳ÓWatcherManagerÖÐÈ¡³ö¶ÔÓ¦µÄWatcher¶ÔÏóÀ´Ö´Ðлص÷Âß¼­¡£

ACL±£ÕÏÊý¾ÝµÄ°²È«

ZookeeperÄÚ²¿´æ´¢ÁË·Ö²¼Ê½ÏµÍ³ÔËÐÐʱ״̬µÄÔªÊý¾Ý£¬ÕâЩԪÊý¾Ý»áÖ±½ÓÓ°Ïì»ùÓÚZookeeper½øÐй¹ÔìµÄ·Ö²¼Ê½ÏµÍ³µÄÔËÐÐ״̬£¬ÈçºÎ±£ÕÏϵͳÖÐÊý¾ÝµÄ°²È«£¬´Ó¶ø±ÜÃâÒòÎó²Ù×÷¶ø´øÀ´µÄÊý¾ÝËæÒâ±ä¸ü¶øµ¼ÖµÄÊý¾Ý¿âÒ쳣ʮ·ÖÖØÒª£¬ZookeeperÌṩÁËÒ»Ì×ÍêÉÆµÄACLȨÏÞ¿ØÖÆ»úÖÆÀ´±£ÕÏÊý¾ÝµÄ°²È«¡£

ÎÒÃÇ¿ÉÒÔ´ÓÈý¸ö·½ÃæÀ´Àí½âACL»úÖÆ£ºÈ¨ÏÞģʽ Scheme¡¢ÊÚȨ¶ÔÏó ID¡¢È¨ÏÞ Permission£¬Í¨³£Ê¹ÓÃ"scheme:id:permission"À´±êʶһ¸öÓÐЧµÄACLÐÅÏ¢¡£

ÄÚ´æÊý¾Ý

ZookeeperµÄÊý¾ÝÄ£ÐÍÊÇÊ÷½á¹¹£¬ÔÚÄÚ´æÊý¾Ý¿âÖУ¬´æ´¢ÁËÕû¿ÃÊ÷µÄÄÚÈÝ£¬°üÀ¨ËùÓеĽڵã·¾¶¡¢½ÚµãÊý¾Ý¡¢ACLÐÅÏ¢£¬Zookeeper»á¶¨Ê±½«Õâ¸öÊý¾Ý´æ´¢µ½´ÅÅÌÉÏ¡£

DataTree£ºDataTreeÊÇÄÚ´æÊý¾Ý´æ´¢µÄºËÐÄ£¬ÊÇÒ»¸öÊ÷½á¹¹£¬´ú±íÁËÄÚ´æÖÐÒ»·ÝÍêÕûµÄÊý¾Ý¡£DataTree²»°üº¬ÈκÎÓëÍøÂç¡¢¿Í»§¶ËÁ¬½Ó¼°ÇëÇó´¦ÀíÏà¹ØµÄÒµÎñÂß¼­£¬ÊÇÒ»¸ö¶ÀÁ¢µÄ×é¼þ¡£

DataNode£ºDataNodeÊÇÊý¾Ý´æ´¢µÄ×îСµ¥Ôª£¬ÆäÄÚ²¿³ýÁ˱£´æÁ˽áµãµÄÊý¾ÝÄÚÈÝ¡¢ACLÁÐ±í¡¢½Úµã״̬֮Í⣬»¹¼Ç¼Á˸¸½ÚµãµÄÒýÓúÍ×Ó½ÚµãÁбíÁ½¸öÊôÐÔ£¬ÆäÒ²ÌṩÁ˶Ô×Ó½ÚµãÁÐ±í½øÐвÙ×÷µÄ½Ó¿Ú¡£

ZKDatabase£ºZookeeperµÄÄÚ´æÊý¾Ý¿â£¬¹ÜÀíZookeeperµÄËùÓлỰ¡¢DataTree´æ´¢ºÍÊÂÎñÈÕÖ¾¡£ZKDatabase»á¶¨Ê±Ïò´ÅÅÌdump¿ìÕÕÊý¾Ý£¬Í¬Ê±ÔÚZookeeperÆô¶¯Ê±£¬»áͨ¹ý´ÅÅ̵ÄÊÂÎñÈÕÖ¾ºÍ¿ìÕÕÎļþ»Ö¸´³ÉÒ»¸öÍêÕûµÄÄÚ´æÊý¾Ý¿â¡£

ZookeeperµÄʵÏÖÔ­Àí·ÖÎö

1. Zookeeper ServiceÍøÂç½á¹¹

ZookeeperµÄ¹¤×÷¼¯Èº¿ÉÒÔ¼òµ¥·Ö³ÉÁ½À࣬һ¸öÊÇLeader£¬Î¨Ò»Ò»¸ö£¬ÆäÓàµÄ¶¼ÊÇfollower£¬ÈçºÎÈ·¶¨LeaderÊÇͨ¹ýÄÚ²¿Ñ¡¾ÙÈ·¶¨µÄ¡£

LeaderºÍ¸÷¸öfollowerÊÇ»¥ÏàͨÐŵ쬶ÔÓÚZookeeperϵͳµÄÊý¾Ý¶¼ÊDZ£´æÔÚÄÚ´æÀïÃæµÄ£¬Í¬ÑùÒ²»á±¸·ÝÒ»·ÝÔÚ´ÅÅÌÉÏ¡£

Èç¹ûLeader¹ÒÁË£¬Zookeeper¼¯Èº»áÖØÐÂÑ¡¾Ù£¬ÔÚºÁÃë¼¶±ð¾Í»áÖØÐÂÑ¡¾Ù³öÒ»¸öLeader¡£

¼¯ÈºÖгý·ÇÓÐÒ»°ëÒÔÉϵÄZookeeper½Úµã¹ÒÁË£¬Zookeeper Service²Å²»¿ÉÓá£

2. Zookeeper¶ÁдÊý¾Ý

дÊý¾Ý£¬Ò»¸ö¿Í»§¶Ë½øÐÐдÊý¾ÝÇëÇóʱ£¬Èç¹ûÊÇfollower½ÓÊÕµ½Ð´ÇëÇ󣬾ͻá°ÑÇëÇóת·¢¸øLeader£¬Leaderͨ¹ýÄÚ²¿µÄZabЭÒé½øÐÐÔ­×ӹ㲥£¬Ö±µ½ËùÓÐZookeeper½Úµã¶¼³É¹¦Ð´ÁËÊý¾Ýºó£¨ÄÚ´æÍ¬²½ÒÔ¼°´ÅÅ̸üУ©£¬Õâ´ÎдÇëÇóËãÊÇÍê³É£¬È»ºóZookeeper Service¾Í»á¸øClient·¢»ØÏìÓ¦¡£

¶ÁÊý¾Ý£¬ÒòΪ¼¯ÈºÖÐËùÓеÄZookeeper½Úµã¶¼³ÊÏÖÒ»¸öͬÑùµÄÃüÃû¿Õ¼äÊÓͼ£¨¾ÍÊǽṹÊý¾Ý£©£¬ÉÏÃæµÄдÇëÇóÒѾ­±£Ö¤ÁËдһ´ÎÊý¾Ý±ØÐë±£Ö¤¼¯ÈºËùÓеÄZookeeper½Úµã¶¼ÊÇͬ²½ÃüÃû¿Õ¼äµÄ£¬ËùÒÔ¶ÁµÄʱºò¿ÉÒÔÔÚÈÎÒâһ̨Zookeeper½ÚµãÉÏ¡£

3. Zookeeper¹¤×÷Ô­Àí

ZabЭÒé

ZookeeperµÄºËÐÄÊǹ㲥£¬Õâ¸ö»úÖÆ±£Ö¤Á˸÷¸öServerÖ®¼äµÄͬ²½¡£ÊµÏÖÕâ¸ö»úÖÆµÄЭÒé½Ð×öZabЭÒé¡£

Zab£¨ZooKeeper Atomic Broadcast£©Ô­×ÓÏûÏ¢¹ã²¥Ð­Òé×÷ΪÊý¾ÝÒ»ÖÂÐԵĺËÐÄËã·¨£¬ZabЭÒéÊÇרΪZookeeperÉè¼ÆµÄÖ§³Ö±ÀÀ£»Ö¸´Ô­×ÓÏûÏ¢¹ã²¥Ëã·¨¡£

ZabЭÒéºËÐÄÈçÏ£º

ËùÓеÄÊÂÎñÇëÇó±ØÐëÒ»¸öÈ«¾ÖΨһµÄ·þÎñÆ÷£¨Leader£©À´Ð­µ÷´¦Àí£¬¼¯ÈºÆäÓàµÄ·þÎñÆ÷³ÆÎªfollower·þÎñÆ÷¡£Leader·þÎñÆ÷¸ºÔð½«Ò»¸ö¿Í»§¶ËÇëÇóת»¯ÎªÊÂÎñÌáÒ飨Proposal£©£¬²¢½«¸Ãproposal·Ö·¢¸ø¼¯ÈºËùÓеÄfollower·þÎñÆ÷¡£Ö®ºóLeader·þÎñÆ÷ÐèÒªµÈ´ýËùÓеÄfollower·þÎñÆ÷µÄ·´À¡£¬Ò»µ©³¬¹ýÁ˰ëÊýµÄfollower·þÎñÆ÷½øÐÐÁËÕýÈ··´À¡ºó£¬ÄÇôLeader·þÎñÆ÷¾Í»áÔÙ´ÎÏòËùÓеÄfollower·þÎñÆ÷·Ö·¢commitÏûÏ¢£¬ÒªÇóÆä½«Ç°Ò»¸öproposal½øÐÐÌá½»¡£

Zabģʽ

ZabЭÒé°üÀ¨Á½ÖÖ»ù±¾µÄģʽ£º±ÀÀ£»Ö¸´ºÍÏûÏ¢¹ã²¥¡£

µ±Õû¸ö·þÎñ¿ò¼ÜÆô¶¯¹ý³ÌÖлòLeader·þÎñÆ÷³öÏÖÍøÂçÖжϡ¢±ÀÀ£Í˳öÓëÖØÆôµÈÒì³£Çé¿öʱ£¬ZabЭÒé¾Í»á½øÈë»Ö¸´Ä£Ê½²¢Ñ¡¾Ù²úÉúеÄLeader·þÎñÆ÷¡£

µ±Ñ¡¾Ù²úÉúÁËеÄLeader·þÎñÆ÷£¬Í¬Ê±¼¯ÈºÖÐÒѾ­Óйý°ëµÄ»úÆ÷Óë¸ÃLeader·þÎñÆ÷Íê³ÉÁË״̬ͬ²½Ö®ºó£¬ZabЭÒé¾Í»áÍ˳ö»Ö¸´Ä£Ê½£¬×´Ì¬Í¬²½ÊÇÖ¸Êý¾Ýͬ²½£¬ÓÃÀ´±£Ö¤¼¯ÈºÔÚ¹ý°ëµÄ»úÆ÷Äܹ»ºÍLeader·þÎñÆ÷µÄÊý¾Ý״̬±£³ÖÒ»Ö¡£

µ±¼¯ÈºÖÐÒѾ­Óйý°ëµÄFollower·þÎñÆ÷Íê³ÉÁ˺ÍLeader·þÎñÆ÷µÄ״̬ͬ²½£¬ÄÇôÕû¸ö·þÎñ¿ò¼Ü¾Í¿ÉÒÔ½øÈëÏûÏ¢¹ã²¥Ä£Ê½¡£

µ±Ò»Ì¨Í¬Ñù×ñÊØZabЭÒéµÄ·þÎñÆ÷Æô¶¯ºó¼ÓÈëµ½¼¯ÈºÖУ¬Èç¹û´Ëʱ¼¯ÈºÖÐÒѾ­´æÔÚÒ»¸öLeader·þÎñÆ÷ÔÚ¸ºÔð½øÐÐÏûÏ¢¹ã²¥£¬ÄÇô¼ÓÈëµÄ·þÎñÆ÷¾Í»á×Ô¾õµØ½øÈëÊý¾Ý»Ö¸´Ä£Ê½£ºÕÒµ½LeaderËùÔڵķþÎñÆ÷£¬²¢ÓëÆä½øÐÐÊý¾Ýͬ²½£¬È»ºóÒ»Æð²ÎÓëµ½ÏûÏ¢¹ã²¥Á÷³ÌÖÐÈ¥¡£

ZookeeperÖ»ÔÊÐíΨһµÄÒ»¸öLeader·þÎñÆ÷À´½øÐÐÊÂÎñÇëÇóµÄ´¦Àí£¬Leader·þÎñÆ÷ÔÚ½ÓÊÕµ½¿Í»§¶ËµÄÊÂÎñÇëÇóºó£¬»áÉú³É¶ÔÓ¦µÄÊÂÎñÌáÒé²¢·¢ÆðÒ»Âֹ㲥ЭÒ飬¶øÈç¹û¼¯ÈºÖÐµÄÆäËû»úÆ÷ÊÕµ½¿Í»§¶ËµÄÊÂÎñÇëÇóºó£¬ÄÇôÕâЩ·ÇLeader·þÎñÆ÷»áÊ×ÏȽ«Õâ¸öÊÂÎñÇëÇóת·¢¸øLeader·þÎñÆ÷¡£

ÏûÏ¢¹ã²¥

ZabЭÒéµÄÏûÏ¢¹ã²¥¹ý³ÌʹÓÃÊÇÒ»¸öÔ­×ӹ㲥ЭÒ飬ÀàËÆÒ»¸ö2PCÌá½»¹ý³Ì¡£¾ßÌåµÄ£º

ZooKeeperʹÓõ¥Ò»Ö÷½ø³ÌLeaderÓÃÓÚ´¦Àí¿Í»§¶ËËùÓÐÊÂÎñÇëÇ󣬲¢²ÉÓÃZabµÄÔ­×ӹ㲥ЭÒ飬½«·þÎñÆ÷Êý¾Ý״̬±ä¸üÒÔÊÂÎñProposalµÄÐÎʽ¹ã²¥FollowerÉÏ£¬Òò´ËÄܺܺõĴ¦Àí¿Í»§¶ËµÄ´óÁ¿²¢·¢ÇëÇó¡£

ÁíÒ»·½Ã棬ÓÉÓÚÊÂÎñ¼ä¿ÉÄÜ´æÔÚ×ÅÒÀÀµ¹ØÏµ£¬ZabЭÒé±£Ö¤Leader¹ã²¥µÄ±ä¸üÐòÁб»Ë³ÐòµÄ´¦Àí£¬ÓÐЩ״̬µÄ±ä¸ü±ØÐëÒÀÀµÓÚ±ÈËüÔçÉú³ÉµÄÄÇЩ״̬±ä¸ü¡£

×îºó£¬¿¼Âǵ½Ö÷½ø³ÌLeaderÔÚÈκÎʱºò¿ÉÄܱÀÀ£»òÕßÒì³£Í˳ö£¬ Òò´ËZabЭÒ黹ҪLeader½ø³Ì±ÀÀ£µÄʱºò¿ÉÒÔÖØÐÂÑ¡³öLeader²¢ÇÒ±£Ö¤Êý¾ÝµÄÍêÕûÐÔ£»FollowerÊÕµ½Proposalºó£¬Ð´µ½´ÅÅÌ£¬·µ»ØAck¡£LeaderÊÕµ½´ó¶àÊýACKºó£¬¹ã²¥CommitÏûÏ¢£¬×Ô¼ºÒ²Ìá½»¸ÃÏûÏ¢¡£FollowerÊÕµ½CommitÖ®ºó£¬Ìá½»¸ÃÏûÏ¢¡£

ZabЭÒé¼ò»¯ÁË2PCÊÂÎñÌá½»£º

È¥³ýÖжÏÂß¼­ÒƳý£¬followerҪôack£¬ÒªÃ´ÅׯúLeader¡£

Leader²»ÐèÒªËùÓеÄFollower¶¼ÏìÓ¦³É¹¦£¬Ö»ÒªÒ»¸ö¶àÊýÅÉAck¼´¿É¡£

±ÀÀ£»Ö¸´

ÉÏÃæÎÒÃǽ²ÁËZabЭÒéÔÚÕý³£Çé¿öϵÄÏûÏ¢¹ã²¥¹ý³Ì£¬ÄÇôһµ©Leader·þÎñÆ÷³öÏÖ±ÀÀ£»òÕßÓë¹ý°ëµÄfollower·þÎñÆ÷ʧȥÁªÏµ£¬¾Í½øÈë±ÀÀ£»Ö¸´Ä£Ê½¡£

»Ö¸´Ä£Ê½ÐèÒªÖØÐÂÑ¡¾Ù³öÒ»¸öеÄLeader£¬ÈÃËùÓеÄServer¶¼»Ö¸´µ½Ò»¸öÕýÈ·µÄ״̬¡£

Zookeeperʵ¼ù£¬¹²ÏíËø£¬LeaderÑ¡¾Ù

·Ö²¼Ê½ËøÓÃÓÚ¿ØÖÆ·Ö²¼Ê½ÏµÍ³Ö®¼äͬ²½·ÃÎʹ²Ïí×ÊÔ´µÄÒ»ÖÖ·½Ê½£¬¿ÉÒÔ±£Ö¤²»Í¬ÏµÍ³·ÃÎÊÒ»¸ö»òÒ»×é×ÊԴʱµÄÒ»ÖÂÐÔ£¬Ö÷Òª·ÖΪÅÅËüËøºÍ¹²ÏíËø¡£

ÅÅËüËøÓÖ³ÆÎªÐ´Ëø»ò¶ÀÕ¼Ëø£¬ÈôÊÂÎñT1¶ÔÊý¾Ý¶ÔÏóO1¼ÓÉÏÁËÅÅËüËø£¬ÄÇôÔÚÕû¸ö¼ÓËøÆÚ¼ä£¬Ö»ÔÊÐíÊÂÎñT1¶ÔO1½øÐжÁÈ¡ºÍ¸üвÙ×÷£¬ÆäËûÈκÎÊÂÎñ¶¼²»ÄÜÔÙ¶ÔÕâ¸öÊý¾Ý¶ÔÏó½øÐÐÈκÎÀàÐ͵IJÙ×÷£¬Ö±µ½T1ÊÍ·ÅÁËÅÅËüËø¡£

¹²ÏíËøÓÖ³ÆÎª¶ÁËø£¬ÈôÊÂÎñT1¶ÔÊý¾Ý¶ÔÏóO1¼ÓÉϹ²ÏíËø£¬ÄÇôµ±Ç°ÊÂÎñÖ»ÄܶÔO1½øÐжÁÈ¡²Ù×÷£¬ÆäËûÊÂÎñÒ²Ö»ÄܶÔÕâ¸öÊý¾Ý¶ÔÏó¼Ó¹²ÏíËø£¬Ö±µ½¸ÃÊý¾Ý¶ÔÏóÉϵÄËùÓй²ÏíËø¶¼±»ÊÍ·Å¡£

ÍÆ¼öÎÄÕ£º»ùÓÚZkʵÏÖ·Ö²¼Ê½Ëø

LeaderÑ¡¾Ù

LeaderÑ¡¾ÙÊDZ£Ö¤·Ö²¼Ê½Êý¾ÝÒ»ÖÂÐԵĹؼüËùÔÚ¡£µ±Zookeeper¼¯ÈºÖеÄһ̨·þÎñÆ÷³öÏÖÒÔÏÂÁ½ÖÖÇé¿ö֮һʱ£¬ÐèÒª½øÈëLeaderÑ¡¾Ù¡£

·þÎñÆ÷³õʼ»¯Æô¶¯¡£

·þÎñÆ÷ÔËÐÐÆÚ¼äÎÞ·¨ºÍLeader±£³ÖÁ¬½Ó¡£

ZookeeperÔÚ3.4.0°æ±¾ºóÖ»±£ÁôÁËTCP°æ±¾µÄ FastLeaderElection Ñ¡¾ÙËã·¨¡£µ±Ò»Ì¨»úÆ÷½øÈëLeaderÑ¡¾Ùʱ£¬µ±Ç°¼¯Èº¿ÉÄܻᴦÓÚÒÔÏÂÁ½ÖÖ״̬£º

¼¯ÈºÖÐÒÑ´æÔÚLeader¡£

¼¯ÈºÖв»´æÔÚLeader¡£

¶ÔÓÚ¼¯ÈºÖÐÒѾ­´æÔÚLeader¶øÑÔ£¬´ËÖÖÇé¿öÒ»°ã¶¼ÊÇij̨»úÆ÷Æô¶¯µÃ½ÏÍí£¬ÔÚÆäÆô¶¯Ö®Ç°£¬¼¯ÈºÒѾ­ÔÚÕý³£¹¤×÷£¬¶ÔÕâÖÖÇé¿ö£¬¸Ã»úÆ÷ÊÔͼȥѡ¾ÙLeaderʱ£¬»á±»¸æÖªµ±Ç°·þÎñÆ÷µÄLeaderÐÅÏ¢£¬¶ÔÓڸûúÆ÷¶øÑÔ£¬½ö½öÐèÒªºÍLeader»úÆ÷½¨Á¢ÆðÁ¬½Ó£¬²¢½øÐÐ״̬ͬ²½¼´¿É¡£

¶øÔÚ¼¯ÈºÖв»´æÔÚLeaderÇé¿öÏÂÔò»áÏà¶Ô¸´ÔÓ£¬Æä²½ÖèÈçÏ£º

(1) µÚÒ»´ÎͶƱ¡£ÎÞÂÛÄÄÖÖµ¼Ö½øÐÐLeaderÑ¡¾Ù£¬¼¯ÈºµÄËùÓлúÆ÷¶¼´¦ÓÚÊÔͼѡ¾Ù³öÒ»¸öLeaderµÄ״̬£¬¼´LOOKING״̬£¬LOOKING»úÆ÷»áÏòËùÓÐÆäËû»úÆ÷·¢ËÍÏûÏ¢£¬¸ÃÏûÏ¢³ÆÎªÍ¶Æ±¡£Í¶Æ±Öаüº¬ÁËSID£¨·þÎñÆ÷µÄΨһ±êʶ£©ºÍZXID£¨ÊÂÎñID£©£¬(SID, ZXID)ÐÎʽÀ´±êʶһ´ÎͶƱÐÅÏ¢¡£¼Ù¶¨ZookeeperÓÉ5̨»úÆ÷×é³É£¬SID·Ö±ðΪ1¡¢2¡¢3¡¢4¡¢5£¬ZXID·Ö±ðΪ9¡¢9¡¢9¡¢8¡¢8£¬²¢ÇÒ´ËʱSIDΪ2µÄ»úÆ÷ÊÇLeader»úÆ÷£¬Ä³Ò»Ê±¿Ì£¬1¡¢2ËùÔÚ»úÆ÷³öÏÖ¹ÊÕÏ£¬Òò´Ë¼¯Èº¿ªÊ¼½øÐÐLeaderÑ¡¾Ù¡£ÔÚµÚÒ»´ÎͶƱʱ£¬Ã¿Ì¨»úÆ÷¶¼»á½«×Ô¼º×÷ΪͶƱ¶ÔÏó£¬ÓÚÊÇSIDΪ3¡¢4¡¢5µÄ»úÆ÷ͶƱÇé¿ö·Ö±ðΪ(3, 9)£¬(4, 8)£¬ (5, 8)¡£

(2) ±ä¸üͶƱ¡£Ã¿Ì¨»úÆ÷·¢³öͶƱºó£¬Ò²»áÊÕµ½ÆäËû»úÆ÷µÄͶƱ£¬Ã¿Ì¨»úÆ÷»á¸ù¾ÝÒ»¶¨¹æÔòÀ´´¦ÀíÊÕµ½µÄÆäËû»úÆ÷µÄͶƱ£¬²¢ÒÔ´ËÀ´¾ö¶¨ÊÇ·ñÐèÒª±ä¸ü×Ô¼ºµÄͶƱ£¬Õâ¸ö¹æÔòÒ²ÊÇÕû¸öLeaderÑ¡¾ÙËã·¨µÄºËÐÄËùÔÚ£¬ÆäÖÐÊõÓïÃèÊöÈçÏÂ

vote_sid£º½ÓÊÕµ½µÄͶƱÖÐËùÍÆ¾ÙLeader·þÎñÆ÷µÄSID¡£

vote_zxid£º½ÓÊÕµ½µÄͶƱÖÐËùÍÆ¾ÙLeader·þÎñÆ÷µÄZXID¡£

self_sid£ºµ±Ç°·þÎñÆ÷×Ô¼ºµÄSID¡£

self_zxid£ºµ±Ç°·þÎñÆ÷×Ô¼ºµÄZXID¡£

ÿ´Î¶ÔÊÕµ½µÄͶƱµÄ´¦Àí£¬¶¼ÊǶÔ(vote_sid, vote_zxid)ºÍ(self_sid, self_zxid)¶Ô±ÈµÄ¹ý³Ì¡£

¹æÔòÒ»£ºÈç¹ûvote_zxid´óÓÚself_zxid£¬¾ÍÈϿɵ±Ç°ÊÕµ½µÄͶƱ£¬²¢Ôٴν«¸ÃͶƱ·¢ËͳöÈ¥¡£

¹æÔò¶þ£ºÈç¹ûvote_zxidСÓÚself_zxid£¬ÄÇô¼á³Ö×Ô¼ºµÄͶƱ£¬²»×öÈκαä¸ü¡£

¹æÔòÈý£ºÈç¹ûvote_zxidµÈÓÚself_zxid£¬ÄÇô¾Í¶Ô±ÈÁ½ÕßµÄSID£¬Èç¹ûvote_sid´óÓÚself_sid£¬ÄÇô¾ÍÈϿɵ±Ç°ÊÕµ½µÄͶƱ£¬²¢Ôٴν«¸ÃͶƱ·¢ËͳöÈ¥¡£

¹æÔòËÄ£ºÈç¹ûvote_zxidµÈÓÚself_zxid£¬²¢ÇÒvote_sidСÓÚself_sid£¬ÄÇô¼á³Ö×Ô¼ºµÄͶƱ£¬²»×öÈκαä¸ü¡£

½áºÏÉÏÃæ¹æÔò£¬¸ø³öÏÂÃæµÄ¼¯Èº±ä¸ü¹ý³Ì¡£

(3) È·¶¨Leader¡£¾­¹ýµÚ¶þÂÖͶƱºó£¬¼¯ÈºÖеÄÿ̨»úÆ÷¶¼»áÔٴνÓÊÕµ½ÆäËû»úÆ÷µÄͶƱ£¬È»ºó¿ªÊ¼Í³¼ÆÍ¶Æ±£¬Èç¹ûһ̨»úÆ÷ÊÕµ½Á˳¬¹ý°ëÊýµÄÏàͬͶƱ£¬ÄÇôÕâ¸öͶƱ¶ÔÓ¦µÄSID»úÆ÷¼´ÎªLeader¡£´ËʱServer3½«³ÉΪLeader¡£

ÓÉÉÏÃæ¹æÔò¿ÉÖª£¬Í¨³£ÄÇ̨·þÎñÆ÷ÉϵÄÊý¾ÝԽУ¨ZXID»áÔ½´ó£©£¬Æä³ÉΪLeaderµÄ¿ÉÄÜÐÔÔ½´ó£¬Ò²¾ÍÔ½Äܹ»±£Ö¤Êý¾ÝµÄ»Ö¸´¡£Èç¹ûZXIDÏàͬ£¬ÔòSIDÔ½´ó»ú»áÔ½´ó¡£

   
3579 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù