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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
·Ö²¼Ê½·þÎñ¿ò¼Ü ZookeeperÈëÃÅѧϰ
 
×÷Õߣº -Áã
  2038  次浏览      27
 2020-6-22 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½²½âÁËZooKeeperÊÇʲô£¬ËüµÄ½ÇÉ«¼°¼Ü¹¹£¬ZooKeeperÊý¾ÝÄ£ÐÍZnode£¬ZooKeeper·þÎñÖвÙ×÷£¬ZookeeperÏÂÔØ°²×°ÓëÅäÖúÍÃüÁîÏà¹Ø¡£
À´×ÔÓÚ²©¿ÍÔ°£¬,ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

ZooKeeper½éÉÜ

ZooKeeperÊÇÒ»ÖÖΪ·Ö²¼Ê½Ó¦ÓÃËùÉè¼ÆµÄ¸ß¿ÉÓᢸßÐÔÄÜÇÒÒ»ÖµĿªÔ´Ð­µ÷·þÎñ,ÊÇGoogleµÄChubbyÒ»¸ö¿ªÔ´µÄʵÏÖ¡£

Ìṩ¹¦ÄÜ£º

ÃüÃû·þÎñ

ÅäÖùÜÀí

¼¯Èº¹ÜÀí

·Ö²¼Ê½Ëø

¶ÓÁйÜÀí

ÌØÐÔ£º

˳ÐòÒ»ÖÂÐÔ£º´Óͬһ¸ö¿Í»§¶Ë·¢ÆðµÄÊÂÎñÇëÇó£¬×îÖÕ½«»áÑϸñ°´ÕÕÆä·¢Æð˳Ðò±»Ó¦Óõ½ZooKeeperÖС£

Ô­×ÓÐÔ£ºËùÓÐÊÂÎñÇëÇóµÄ½á¹ûÔÚ¼¯ÈºÖÐËùÓлúÆ÷ÉϵÄÓ¦ÓÃÇé¿öÊÇÒ»Öµģ¬Ò²¾ÍÊÇ˵ҪôÕû¸ö¼¯ÈºËùÓм¯Èº¶¼³É¹¦Ó¦ÓÃÁËijһ¸öÊÂÎñ£¬ÒªÃ´¶¼Ã»ÓÐÓ¦Óã¬Ò»¶¨²»»á³öÏÖ¼¯ÈºÖв¿·Ö»úÆ÷Ó¦ÓÃÁ˸ÃÊÂÎñ£¬¶øÁíÍâÒ»²¿·ÖûÓÐÓ¦ÓõÄÇé¿ö¡£

µ¥Ò»ÊÓͼ£ºÎÞÂÛ¿Í»§¶ËÁ¬½ÓµÄÊÇÄĸöZooKeeper·þÎñÆ÷£¬Æä¿´µ½µÄ·þÎñ¶ËÊý¾ÝÄ£ÐͶ¼ÊÇÒ»Öµġ£

¿É¿¿ÐÔ£ºÒ»µ©·þÎñ¶Ë³É¹¦µØÓ¦ÓÃÁËÒ»¸öÊÂÎñ£¬²¢Íê³É¶Ô¿Í»§¶ËµÄÏìÓ¦£¬ÄÇô¸ÃÊÂÎñËùÒýÆðµÄ·þÎñ¶Ë״̬±ä¸ü½«»á±»Ò»Ö±±£ÁôÏÂÀ´£¬³ý·ÇÓÐÁíÒ»¸öÊÂÎñÓÖ¶ÔÆä½øÐÐÁ˱ä¸ü¡£

ʵʱÐÔ£ºÍ¨³£ÈËÃÇ¿´µ½ÊµÊ±ÐԵĵÚÒ»·´Ó¦ÊÇ£¬Ò»µ©Ò»¸öÊÂÎñ±»³É¹¦Ó¦Óã¬ÄÇô¿Í»§¶ËÄܹ»Á¢¼´´Ó·þÎñ¶ËÉ϶ÁÈ¡µ½Õâ¸öÊÂÎñ±ä¸üºóµÄ×îÐÂÊý¾Ý״̬¡£ÕâÀïÐèҪעÒâµÄÊÇ£¬ZooKeeper½ö½ö±£Ö¤ÔÚÒ»¶¨µÄʱ¼ä¶ÎÄÚ£¬¿Í»§¶Ë×îÖÕÒ»¶¨Äܹ»´Ó·þÎñ¶ËÉ϶ÁÈ¡µ½×îеÄÊý¾Ý״̬¡£

ZookeeperµÄ½ÇÉ«

Áìµ¼Õߣ¨leader£©£º¸ºÔð½øÐÐͶƱµÄ·¢ÆðºÍ¾öÒé,¸üÐÂϵͳ״̬,Ò»¸öZooKeeper¼¯ÈºÍ¬Ò»Ê±¿ÌÖ»»áÓÐÒ»¸öLeader£¬ÆäËû¶¼ÊÇFollower»òObserver¡£

ѧϰÕߣ¨learner£©£º°üÀ¨¸úËæÕߣ¨follower£©ºÍ¹Û²ìÕߣ¨observer£©¡£

followerÓÃÓÚ½ÓÊܿͻ§¶ËÇëÇó²¢Ïò¿Í»§¶Ë·µ»Ø½á¹û,ÔÚÑ¡Ö÷¹ý³ÌÖвÎÓëͶƱ¡£

Observer¿ÉÒÔ½ÓÊܿͻ§¶ËÁ¬½Ó,½«Ð´ÇëÇóת·¢¸øleader,µ«observer²»²Î¼ÓͶƱ¹ý³Ì,ֻͬ²½leaderµÄ״̬,observerµÄÄ¿µÄÊÇΪÁËÀ©Õ¹ÏµÍ³,Ìá¸ß¶ÁÈ¡ËÙ¶È¡£

¿Í»§¶Ë£¨client£©,ÇëÇó·¢Æð·½¡£

×¢Ò⣺ZooKeeperĬÈÏÖ»ÓÐLeaderºÍFollowerÁ½ÖÖ½ÇÉ«£¬Ã»ÓÐObserver½ÇÉ«¡£ÎªÁËʹÓÃObserverģʽ£¬ÔÚÈκÎÏë±ä³ÉObserverµÄ½ÚµãµÄÅäÖÃÎļþÖмÓÈ룺peerType=observer£¬²¢ÔÚËùÓÐserverµÄÅäÖÃÎļþÖУ¬ÅäÖóÉobserverģʽµÄserverµÄÄÇÐÐÅäÖÃ×·¼Ó:observer£¬ÀýÈ磺server.1:localhost:2888:3888:observer

FollowerºÍObserverÇø±ð£ºFollowerºÍObserver¶¼ÄÜÌṩ¶Á·þÎñ£¬²»ÄÜÌṩд·þÎñ¡£Á½ÕßΨһµÄÇø±ðÔÚÓÚ£¬Observer»úÆ÷²»²ÎÓëLeaderÑ¡¾Ù¹ý³Ì£¬Ò²²»²ÎÓëд²Ù×÷µÄ¡º¹ý°ëд³É¹¦¡»²ßÂÔ£¬Òò´ËObserver¿ÉÒÔÔÚ²»Ó°ÏìдÐÔÄܵÄÇé¿öÏÂÌáÉý¼¯ÈºµÄ¶ÁÐÔÄÜ¡£

Zookeeper¼Ü¹¹

zookeeperÊÇÒ»¸öÓɶà¸öservice£¨½Úµã£©×é³ÉµÄ¼¯Èº,Ò»¸öleader,¶à¸öfollower,ÿ¸öserver±£´æÒ»·ÝÊý¾Ý²¿·Ö,È«¾ÖÊý¾ÝÒ»ÖÂ,·Ö²¼Ê½¶Áд,¿Í»§¶Ë¸üÐÂÇëÇóÓÉleaderת·¢ÊµÊ©¡£

¸üÐÂÇëÇó˳Ðò½øÐÐ,À´×Ôͬһ¸öclientµÄ¸üÐÂÇëÇó°´Æä·¢ËÍ˳ÐòÒÀ´ÎÖ´ÐÐ,Êý¾Ý¸üÐÂÔ­×ÓÐÔ,Ò»´ÎÊý¾Ý¸üÐÂҪô³É¹¦,Ҫôʧ°Ü,È«¾ÖΨһÊý¾ÝÊÔͼ,clientÎÞÂÛÁ¬½Óµ½Äĸöserver,Êý¾ÝÊÓͼÊÇÒ»Öµġ£

zookeeperµÄºËÐÄÊÇÔ­×ӹ㲥,Õâ¸ö»úÖÆ±£Ö¤Á˸÷¸öserverÖ®¼äµÄͬ²½,ʵÏÖÕâ¸ö»úÖÆµÄЭÒé½Ð×öZabЭÒé.ZabЭÒéÓÐÁ½ÖÖģʽ,ËûÃÇ·Ö±ðÊǻָ´Ä£Ê½ºÍ¹ã²¥Ä£Ê½¡£

£¨1£©µ±·þÎñÆô¶¯»òÕßÔÚÁìµ¼Õß±ÀÀ£ºó,Zab¾Í½øÈëÁ˻ָ´Ä£Ê½,µ±Áìµ¼×ű»Ñ¡¾Ù³öÀ´,ÇÒ´ó¶àÊýserver¶¼Íê³ÉÁ˺ÍleaderµÄ״̬ͬ²½ºó,»Ö¸´Ä£Ê½¾Í½áÊøÁË.״̬ͬ²½±£Ö¤ÁËleaderºÍserver¾ßÓÐÏàͬµÄϵͳ״̬¡£

£¨2£©Ò»µ©leaderÒѾ­ºÍ¶àÊýµÄfollower½øÐÐÁË״̬ͬ²½ºó,Ëû¾Í¿ÉÒÔ¿ªÊ¼¹ã²¥ÏûÏ¢ÁË,¼´½øÈë¹ã²¥×´Ì¬.Õâʱºòµ±Ò»¸öserver¼ÓÈëzookeeper·þÎñÖÐ,Ëü»áÔÚ»Ö¸´Ä£Ê½ÏÂÆô¶¯,·¢ÏÂleader,²¢ºÍleader½øÐÐ״̬ͬ²½,´ýµ½Í¬²½½áÊø,ËüÒ²²ÎÓë¹ã²¥ÏûÏ¢¡£

ZooKeeperÊý¾ÝÄ£ÐÍZnode

(1) ½Úµã

·Ö²¼Ê½µÄʱºò£¬Ò»°ã¡º½Úµã¡»Ö¸µÄÊÇ×é³É¼¯ÈºµÄÿһ̨»úÆ÷¡£¶øZooKeeperÖеÄÊý¾Ý½ÚµãÊÇÖ¸Êý¾ÝÄ£ÐÍÖеÄÊý¾Ýµ¥Ôª£¬³ÆÎªZNode¡£

(2) ZooKeeper½ÚµãÊôÐÔ

ͨ¹ýÇ°ÃæµÄ½éÉÜ£¬ÎÒÃÇ¿ÉÒÔÁ˽⵽£¬Ò»¸ö½Úµã×ÔÉíÓµÓбíʾÆä״̬µÄÐí¶àÖØÒªÊôÐÔ£¬ÈçÏÂͼËùʾ¡£

Znode½ÚµãÊôÐԽṹ:

(3) Êý¾ÝÄ£Ðͽṹ

ZooKeeper½«ËùÓнڵãÊý¾Ý´æ´¢ÔÚÄÚ´æÖУ¬Êý¾ÝÄ£ÐÍÊÇÒ»¿ÃÊ÷£¨ZNode Tree£©£¬ÓÉб¸Ü£¨/£©½øÐзָîµÄ·¾¶£¬¾ÍÊÇÒ»¸öZNode£¬Èç/hbase/master,ÆäÖÐhbaseºÍmaster¶¼ÊÇZNode¡£Ã¿¸öZNodeÉ϶¼»á±£´æ×Ô¼ºµÄÊý¾ÝÄÚÈÝ£¬Í¬Ê±»á±£´æÒ»ÏµÁÐÊôÐÔÐÅÏ¢¡£ZooKeeperÓµÓÐÒ»¸ö²ã´ÎµÄÃüÃû¿Õ¼ä£¬Õâ¸öºÍ±ê×¼µÄÎļþϵͳ·Ç³£ÏàËÆ£¬ÈçÏÂͼ3.1 Ëùʾ¡£

ZooKeeperÊý¾ÝÄ£ÐÍÓëÎļþϵͳĿ¼Ê÷£º

(4) ÒýÓ÷½Ê½

Zondeͨ¹ý·¾¶ÒýÓã¬ÈçͬUnixÖеÄÎļþ·¾¶¡£Â·¾¶±ØÐëÊǾø¶ÔµÄ£¬Òò´ËËûÃDZØÐëÓÉб¸Ü×Ö·ûÀ´¿ªÍ·¡£³ý´ËÒÔÍ⣬ËûÃDZØÐëÊÇΨһµÄ£¬Ò²¾ÍÊÇ˵ÿһ¸ö·¾¶Ö»ÓÐÒ»¸ö±íʾ£¬Òò´ËÕâЩ·¾¶²»Äܸı䡣ÔÚZooKeeperÖУ¬Â·¾¶ÓÉUnicode×Ö·û´®×é³É£¬²¢ÇÒÓÐһЩÏÞÖÆ¡£×Ö·û´®"/zookeeper"ÓÃÒÔ±£´æ¹ÜÀíÐÅÏ¢£¬±ÈÈç¹Ø¼üÅä¶îÐÅÏ¢¡£

(5) Znode½á¹¹

ZooKeeperÃüÃû¿Õ¼äÖеÄZnode£¬¼æ¾ßÎļþºÍĿ¼Á½ÖÖÌØµã¡£¼ÈÏñÎļþÒ»Ñùά»¤×ÅÊý¾Ý¡¢ÔªÐÅÏ¢¡¢ACL¡¢Ê±¼ä´ÁµÈÊý¾Ý½á¹¹£¬ÓÖÏñĿ¼һÑù¿ÉÒÔ×÷Ϊ·¾¶±êʶµÄÒ»²¿·Ö¡£Í¼ÖеÄÿ¸ö½Úµã³ÆÎªÒ»¸öZnode¡£ ÿ¸öZnodeÓÉ3²¿·Ö×é³É:

¢Ù stat£º´ËΪ״̬ÐÅÏ¢, ÃèÊö¸ÃZnodeµÄ°æ±¾, ȨÏÞµÈÐÅÏ¢

¢Ú data£ºÓë¸ÃZnode¹ØÁªµÄÊý¾Ý

¢Û children£º¸ÃZnodeϵÄ×Ó½Úµã

ZooKeeperËäÈ»¿ÉÒÔ¹ØÁªÒ»Ð©Êý¾Ý£¬µ«²¢Ã»Óб»Éè¼ÆÎª³£¹æµÄÊý¾Ý¿â»òÕß´óÊý¾Ý´æ´¢£¬Ïà·´µÄÊÇ£¬ËüÓÃÀ´¹ÜÀíµ÷¶ÈÊý¾Ý£¬±ÈÈç·Ö²¼Ê½Ó¦ÓÃÖеÄÅäÖÃÎļþÐÅÏ¢¡¢×´Ì¬ÐÅÏ¢¡¢»ã¼¯Î»Öõȵȡ£ÕâЩÊý¾ÝµÄ¹²Í¬ÌØÐÔ¾ÍÊÇËüÃǶ¼ÊǺÜСµÄÊý¾Ý£¬Í¨³£ÒÔKBΪ´óСµ¥Î»¡£ZooKeeperµÄ·þÎñÆ÷ºÍ¿Í»§¶Ë¶¼±»Éè¼ÆÎªÑϸñ¼ì²é²¢ÏÞÖÆÃ¿¸öZnodeµÄÊý¾Ý´óСÖÁ¶à1M£¬µ«³£¹æÊ¹ÓÃÖÐÓ¦¸ÃԶСÓÚ´ËÖµ¡£

(6) Êý¾Ý·ÃÎÊ

ZooKeeperÖеÄÿ¸ö½Úµã´æ´¢µÄÊý¾ÝÒª±»Ô­×ÓÐԵIJÙ×÷¡£Ò²¾ÍÊÇ˵¶Á²Ù×÷½«»ñÈ¡Óë½ÚµãÏà¹ØµÄËùÓÐÊý¾Ý£¬Ð´²Ù×÷Ò²½«Ìæ»»µô½ÚµãµÄËùÓÐÊý¾Ý¡£ÁíÍ⣬ÿһ¸ö½Úµã¶¼ÓµÓÐ×Ô¼ºµÄACL(·ÃÎÊ¿ØÖÆÁбí)£¬Õâ¸öÁÐ±í¹æ¶¨ÁËÓû§µÄȨÏÞ£¬¼´ÏÞ¶¨ÁËÌØ¶¨Óû§¶ÔÄ¿±ê½Úµã¿ÉÒÔÖ´ÐеIJÙ×÷¡£

(7) ½ÚµãÀàÐÍ

ZooKeeperÖеĽڵãÓÐÁ½ÖÖ£¬·Ö±ðΪÁÙʱ½ÚµãºÍÓÀ¾Ã½Úµã¡£½ÚµãµÄÀàÐÍÔÚ´´½¨Ê±¼´±»È·¶¨£¬²¢ÇÒ²»Äܸı䡣

¢Ù ÁÙʱ½Úµã£º¸Ã½ÚµãµÄÉúÃüÖÜÆÚÒÀÀµÓÚ´´½¨ËüÃǵĻỰ¡£Ò»µ©»á»°(Session)½áÊø£¬ÁÙʱ½Úµã½«±»×Ô¶¯É¾³ý£¬µ±È»¿ÉÒÔÒ²¿ÉÒÔÊÖ¶¯É¾³ý¡£ËäȻÿ¸öÁÙʱµÄZnode¶¼»á°ó¶¨µ½Ò»¸ö¿Í»§¶Ë»á»°£¬µ«ËûÃǶÔËùÓеĿͻ§¶Ë»¹ÊǿɼûµÄ¡£ÁíÍ⣬ZooKeeperµÄÁÙʱ½Úµã²»ÔÊÐíÓµÓÐ×ӽڵ㡣

¢Ú ÓÀ¾Ã½Úµã£º¸Ã½ÚµãµÄÉúÃüÖÜÆÚ²»ÒÀÀµÓڻỰ£¬²¢ÇÒÖ»ÓÐÔÚ¿Í»§¶ËÏÔʾִÐÐɾ³ý²Ù×÷µÄʱºò£¬ËûÃDzÅÄܱ»É¾³ý¡£

(8) ˳Ðò½Úµã

µ±´´½¨ZnodeµÄʱºò£¬Óû§¿ÉÒÔÇëÇóÔÚZooKeeperµÄ·¾¶½áβÌí¼ÓÒ»¸öµÝÔöµÄ¼ÆÊý¡£Õâ¸ö¼ÆÊý¶ÔÓڴ˽ڵãµÄ¸¸½ÚµãÀ´ËµÊÇΨһµÄ£¬ËüµÄ¸ñʽΪ"%10d"(10λÊý×Ö£¬Ã»ÓÐÊýÖµµÄÊýλÓÃ0²¹³ä£¬ÀýÈç"0000000001")¡£µ±¼ÆÊýÖµ´óÓÚ232-1ʱ£¬¼ÆÊýÆ÷½«Òç³ö¡£

(9) ¹Û²ì

¿Í»§¶Ë¿ÉÒÔÔÚ½ÚµãÉÏÉèÖÃwatch£¬ÎÒÃdzÆÖ®Îª¼àÊÓÆ÷¡£µ±½Úµã״̬·¢Éú¸Ä±äʱ(ZnodeµÄÔö¡¢É¾¡¢¸Ä)½«»á´¥·¢watchËù¶ÔÓ¦µÄ²Ù×÷¡£µ±watch±»´¥·¢Ê±£¬ZooKeeper½«»áÏò¿Í»§¶Ë·¢ËÍÇÒ½ö·¢ËÍÒ»Ìõ֪ͨ£¬ÒòΪwatchÖ»Äܱ»´¥·¢Ò»´Î£¬ÕâÑù¿ÉÒÔ¼õÉÙÍøÂçÁ÷Á¿¡£

ZooKeeper·þÎñÖвÙ×÷

ÔÚZooKeeperÖÐÓÐ9¸ö»ù±¾²Ù×÷£¬ÈçÏÂͼËùʾ£º

ZooKeeperÀà·½·¨ÃèÊö

¸üÐÂZooKeeper²Ù×÷ÊÇÓÐÏÞÖÆµÄ¡£delete»òsetData±ØÐëÃ÷È·Òª¸üеÄZnodeµÄ°æ±¾ºÅ£¬ÎÒÃÇ¿ÉÒÔµ÷ÓÃexistsÕÒµ½¡£Èç¹û°æ±¾ºÅ²»Æ¥Å䣬¸üн«»áʧ°Ü¡£

¸üÐÂZooKeeper²Ù×÷ÊÇ·Ç×èÈûʽµÄ¡£Òò´Ë¿Í»§¶ËÈç¹ûʧȥÁËÒ»¸ö¸üÐÂ(ÓÉÓÚÁíÒ»¸ö½ø³ÌÔÚͬʱ¸üÐÂÕâ¸öZnode)£¬Ëû¿ÉÒÔÔÚ²»×èÈûÆäËû½ø³ÌÖ´ÐеÄÇé¿öÏ£¬Ñ¡ÔñÖØÐ³¢ÊÔ»ò½øÐÐÆäËû²Ù×÷¡£

¾¡¹ÜZooKeeper¿ÉÒÔ±»¿´×öÊÇÒ»¸öÎļþϵͳ£¬µ«ÊÇ´¦ÓÚ±ãÀû£¬ÞðÆúÁËһЩÎļþϵͳµØ²Ù×÷Ô­Óï¡£ÒòΪÎļþ·Ç³£µÄС²¢ÇÒʹÕûÌå¶ÁдµÄ£¬ËùÒÔ²»ÐèÒª´ò¿ª¡¢¹Ø±Õ»òÊÇѰµØµÄ²Ù×÷¡£

Watch´¥·¢Æ÷

(1) watch¸ÅÊö

ZooKeeper¿ÉÒÔΪËùÓеĶÁ²Ù×÷ÉèÖÃwatch£¬ÕâЩ¶Á²Ù×÷°üÀ¨£ºexists()¡¢getChildren()¼°getData()¡£watchʼþÊÇÒ»´ÎÐԵĴ¥·¢Æ÷£¬µ±watchµÄ¶ÔÏó״̬·¢Éú¸Ä±äʱ£¬½«»á´¥·¢´Ë¶ÔÏóÉÏwatchËù¶ÔÓ¦µÄʼþ¡£watchʼþ½«±»Òì²½µØ·¢Ë͸ø¿Í»§¶Ë£¬²¢ÇÒZooKeeperΪwatch»úÖÆÌṩÁËÓÐÐòµÄÒ»ÖÂÐÔ±£Ö¤¡£ÀíÂÛÉÏ£¬¿Í»§¶Ë½ÓÊÕwatchʼþµÄʱ¼äÒª¿ìÓÚÆä¿´µ½watch¶ÔÏó״̬±ä»¯µÄʱ¼ä¡£

(2) watchÀàÐÍ

ZooKeeperËù¹ÜÀíµÄwatch¿ÉÒÔ·ÖΪÁ½Àࣺ

¢Ù Êý¾Ýwatch(data watches)£ºgetDataºÍexists¸ºÔðÉèÖÃÊý¾Ýwatch

¢Ú º¢×Ówatch(child watches)£ºgetChildren¸ºÔðÉèÖú¢×Ówatch

ÎÒÃÇ¿ÉÒÔͨ¹ý²Ù×÷·µ»ØµÄÊý¾ÝÀ´ÉèÖò»Í¬µÄwatch£º

¢Ù getDataºÍexists£º·µ»Ø¹ØÓÚ½ÚµãµÄÊý¾ÝÐÅÏ¢

¢Ú getChildren£º·µ»Øº¢×ÓÁбí

Òò´Ë

¢Ù Ò»¸ö³É¹¦µÄsetData²Ù×÷½«´¥·¢ZnodeµÄÊý¾Ýwatch

¢Ú Ò»¸ö³É¹¦µÄcreate²Ù×÷½«´¥·¢ZnodeµÄÊý¾ÝwatchÒÔ¼°º¢×Ówatch

¢Û Ò»¸ö³É¹¦µÄdelete²Ù×÷½«´¥·¢ZnodeµÄÊý¾ÝwatchÒÔ¼°º¢×Ówatch

(3) watch×¢²áÓë´¦´¥·¢

ͼ 6.1 watchÉèÖòÙ×÷¼°ÏàÓ¦µÄ´¥·¢Æ÷ÈçͼÏÂͼËùʾ£º

¢Ù exists²Ù×÷ÉϵÄwatch£¬ÔÚ±»¼àÊÓµÄZnode´´½¨¡¢É¾³ý»òÊý¾Ý¸üÐÂʱ±»´¥·¢¡£

¢Ú getData²Ù×÷ÉϵÄwatch£¬ÔÚ±»¼àÊÓµÄZnodeɾ³ý»òÊý¾Ý¸üÐÂʱ±»´¥·¢¡£ÔÚ±»´´½¨Ê±²»Äܱ»´¥·¢£¬ÒòΪֻÓÐZnodeÒ»¶¨´æÔÚ£¬getData²Ù×÷²Å»á³É¹¦¡£

¢Û getChildren²Ù×÷ÉϵÄwatch£¬ÔÚ±»¼àÊÓµÄZnodeµÄ×ӽڵ㴴½¨»òɾ³ý£¬»òÊÇÕâ¸öZnode×ÔÉí±»É¾³ýʱ±»´¥·¢¡£¿ÉÒÔͨ¹ý²é¿´watchʼþÀàÐÍÀ´Çø·ÖÊÇZnode£¬»¹ÊÇËûµÄ×ӽڵ㱻ɾ³ý£ºNodeDelete±íʾZnode±»É¾³ý£¬NodeDeletedChanged±íʾ×ӽڵ㱻ɾ³ý¡£

WatchÓɿͻ§¶ËËùÁ¬½ÓµÄZooKeeper·þÎñÆ÷ÔÚ±¾µØÎ¬»¤£¬Òò´Ëwatch¿ÉÒԷdz£ÈÝÒ×µØÉèÖᢹÜÀíºÍ·ÖÅÉ¡£µ±¿Í»§¶ËÁ¬½Óµ½Ò»¸öеķþÎñÆ÷ ʱ£¬ÈκεĻỰʼþ¶¼½«¿ÉÄÜ´¥·¢watch¡£ÁíÍ⣬µ±´Ó·þÎñÆ÷¶Ï¿ªÁ¬½ÓµÄʱºò£¬watch½«²»»á±»½ÓÊÕ¡£µ«ÊÇ£¬µ±Ò»¸ö¿Í»§¶ËÖØÐ½¨Á¢Á¬½ÓµÄʱºò£¬ÈκÎÏÈǰ ×¢²á¹ýµÄwatch¶¼»á±»ÖØÐÂ×¢²á¡£

(4) ÐèҪעÒâµÄ¼¸µã

ZookeeperµÄwatchʵ¼ÊÉÏÒª´¦ÀíÁ½Ààʼþ£º

¢Ù Á¬½Ó״̬ʼþ(type=None, path=null)

ÕâÀàʼþ²»ÐèҪע²á£¬Ò²²»ÐèÒªÎÒÃÇÁ¬Ðø´¥·¢£¬ÎÒÃÇÖ»Òª´¦Àí¾ÍÐÐÁË¡£

¢Ú ½Úµãʼþ

½ÚµãµÄ½¨Á¢£¬É¾³ý£¬Êý¾ÝµÄÐ޸ġ£ËüÊÇone time trigger£¬ÎÒÃÇÐèÒª²»Í£µÄ×¢²á´¥·¢£¬»¹¿ÉÄÜ·¢Éúʼþ¶ªÊ§µÄÇé¿ö¡£

ÉÏÃæ2Ààʼþ¶¼ÔÚWatchÖд¦Àí£¬Ò²¾ÍÊÇÖØÔØµÄprocess(Event event)

½ÚµãʼþµÄ´¥·¢£¬Í¨¹ýº¯Êýexists£¬getData»ògetChildrenÀ´´¦ÀíÕâÀຯÊý£¬ÓÐË«ÖØ×÷Óãº

¢Ù ×¢²á´¥·¢Ê¼þ

¢Ú º¯Êý±¾ÉíµÄ¹¦ÄÜ

º¯ÊýµÄ±¾ÉíµÄ¹¦ÄÜÓÖ¿ÉÒÔÓÃÒì²½µÄ»Øµ÷º¯ÊýÀ´ÊµÏÖ,ÖØÔØprocessResult()¹ý³ÌÖд¦Àíº¯Êý±¾ÉíµÄµÄ¹¦ÄÜ¡£

ZookeeperÏÂÔØ°²×°ÓëÅäÖÃ

ZookeeperÏÂÔØ°²×°

´ÓZooKeeper¹ÙÍøÏÂÔØ

ÏÂÔØµØÖ·

½âѹÅäÖÃ

tar -xf /usr/local/src/zookeeper- 3.4.9.tar.gz -C /usr/local/src/
ln -sv /usr/local/src/zookeeper- 3.4.9/ /usr/local/zookeeper
cd /usr/local/zookeeper/

 

 

3.ÅäÖÃZooKeeper

vim zoo.cfg

# zoo.cfgÎļþÖÐÄÚÈÝÈçÏÂ
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181

 

tickTime µ¥Î»ÎªÎ¢Ã룬ÓÃÓÚsession×¢²áºÍ¿Í»§¶ËºÍZooKeeper·þÎñµÄÐÄÌøÖÜÆÚ¡£session³¬Ê±Ê±³¤×îСΪ tickTimeµÄÁ½±¶¡£

dataDir ZooKeeperµÄ״̬´æ´¢Î»Ö㬿´Ãû×Ö¾ÍÖªµÀÊéÊý¾ÝĿ¼¡£ÔÚÄãµÄϵͳÖмì²éÕâ¸öĿ¼ÊÇ·ñ´æÔÚ£¬Èç¹û²»´æÔÚÊÖ¶¯´´½¨£¬²¢ÇÒ¸øÓè¿ÉдȨÏÞ¡£

clientPort ¿Í»§¶ËÁ¬½ÓµÄ¶Ë¿Ú¡£²»Í¬µÄ·þÎñÆ÷¿ÉÒÔÉèÖò»Í¬µÄ¼àÌý¶Ë¿Ú£¬Ä¬ÈÏÊÇ2181¡£

4.Æô¶¯ZooKeeper

# ÕâÀïÃüÁîдµÄ³¤ÊÇΪÁ˱ãÓÚÖªµÀZooKeeperÊÇÈçºÎʹÓÃÅäÖÃÎļþµÄ¡£
/usr/local/zookeeper/bin/zkServer.sh start /usr/local/zookeeper/conf/zoo.cfg

# ²é¿´ZooKeeperÊÇ·ñÔËÐÐ
ps ¨Cef | grep zookeeper
# Ò²¿ÉÒÔʹÓÃjps £¬¿ÉÒÔ¿´µ½java½ø³ÌÖÐÓÐQuorumPeerMainÁгöÀ´¡£

# ²é¿´ZooKeeperµÄ״̬
zkServer.sh status

# ³£ÓõÄZooKeeperÓ÷¨£¬Õâ¸öÊôÓÚLinux»ù´¡µÄ²¿·Ö£¬¾Í²»¹ý¶à˵Ã÷ÁË
./zkServer.sh {start|start-foreground|stop|restart|status|upgrade|print-cmd}

5.ʹÓÃzkCliÁ¬½ÓZooKeeper

/usr/local/zookeeper/bin/zkCli.sh -server localhost:218

¼¯ÈºÅäÖÃ

1.´´½¨ÅäÖÃÎļþ

cd /usr/local/zookeeper
touch zoo1.cfg zoo2.cfg zoo3.cfg

 

×¢Ò⠶˿ڲ»Òª³åÍ»£¬dataDir²»ÒªÏàͬ¡£

2.ÅäÖÃÊý¾ÝĿ¼ÓëÊý¾Ý´æ·ÅĿ¼ÄÚÈÝ

mkdir {zoo1,zoo2,zoo3}
echo 1 > zoo1/myid
echo 2 > zoo2/myid
echo 3 > zoo3/myid

×¢Ò⣺ÕâÀïµÄmyidÎļþÖÐÒ»¶¨Òª¶ÔÓ¦ÉÏÃæÅäÖÃÎļþÖÐserver.[id]µÄÊý×Ö£¬²»È»ZooKeeperÆô¶¯»á³ö´í¡£

3.Æô¶¯Zookeeper

zkServer.sh start /usr/local/zookeeper/conf/zoo1.cfg
zkServer.sh start /usr/local/zookeeper/conf/zoo2.cfg
zkServer.sh start /usr/local/zookeeper/conf/zoo3.cfg

4.²é¿´Ð§¹û

ʹÓÃps -ef | grep zoo¿ÉÒÔ¿´µ½ÓÐÈý¸özookeeperÆô¶¯ÆðÀ´ÁË¡£

Á¬½ÓZooKeeper

# 192.168.8.250ÊÇZooKeeper·þÎñÆ÷µÄµØÖ·
zkCli.sh -server 192.168.8.250:2181, 192.168.8.250: 2182, 192.168.8.250:2183

ZookeeperÃüÁîÆª

Á¬½ÓÔ¶³ÌServer£ºzkCli.sh ¨Cserver <ip>:<port>

±ÈÈçÁ¬½Óµ½±¾µØZoopker·þÎñ£º ./zkCli.sh -server localhost:2181

²é¿´½ÚµãÊý¾Ý£ºls <path>£¬±ÈÈçls / Ôò²é¿´¸ùĿ¼½ÚµãÊý¾Ý

²é¿´Ä³¸ö·þÎñServiceµÄÌṩÕß

ls ·þÎñÃû/providers

²é¿´½ÚµãÊý¾Ý²¢ÄÜ¿´µ½¸üдÎÊýµÈÊý¾Ý£ºls2 <path>£¬Êä³ö×ֶκ¬ÒåÈçÏ£º

cZxid£º´´½¨½ÚµãµÄÊÂÎñid

ctime£º´´½¨½ÚµãµÄʱ¼ä

mZxid£ºÐ޸ĽڵãµÄÊÂÎñid

mtime£ºÐ޸ĽڵãµÄʱ¼ä

pZxid£º×Ó½ÚµãÁбí×îºóÒ»´ÎÐ޸ĵÄÊÂÎñid¡£É¾³ý»òÌí¼Ó×ӽڵ㣬²»°üº¬ÐÞ¸Ä×Ó½ÚµãµÄÊý¾Ý

cversion£º×Ó½ÚµãµÄ°æ±¾ºÅ£¬É¾³ý»òÌí¼Ó×ӽڵ㣬°æ±¾ºÅ»á×ÔÔö

dataVersion£º½ÚµãÊý¾Ý°æ±¾ºÅ£¬Êý¾ÝдÈë²Ù×÷£¬°æ±¾ºÅ»áµÝÔö

aclVersion£º½ÚµãACLȨÏÞ°æ±¾£¬È¨ÏÞдÈë²Ù×÷£¬°æ±¾ºÅ»áµÝÔö

ephemeralOwner£ºÁÙʱ½Úµã´´½¨Ê±µÄÊÂÎñid£¬Èç¹û½ÚµãÊÇÓÀ¾Ã½Úµã£¬ÔòËüµÄֵΪ0

dataLength£º½ÚµãÊý¾Ý³¤¶È£¨µ¥Î»£ºbyte£©£¬ÖÐÎÄÕ¼3¸öbyte

numChildren£º×Ó½ÚµãÊýÁ¿

´´½¨½Úµã£ºcreate <path> <data>

»ñÈ¡½Úµã£¬°üº¬Êý¾ÝºÍ¸üдÎÊýµÈÊý¾Ý£ºget <path>

Ð޸Ľڵ㣺set <path> <data>

ɾ³ý½Úµã£ºdelete <path>£¬Èç¹ûÓÐ×Ó½Úµã´æÔÚÔòɾ³ýʧ°Ü

   
2038 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

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

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

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