±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½²½âÁË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>£¬Èç¹ûÓÐ×Ó½Úµã´æÔÚÔòɾ³ýʧ°Ü
|