µ¼¶Á£º
·Ö²¼Ê½ÏµÍ³ÀíÄî½¥½¥³ÉΪÁ˺ǫ́¼Ü¹¹¼¼ÊõµÄÖØÒªÑ¡Ôñ£¬±¾ÎĽéÉÜÁË×÷ÕßÔÚÊÖÓÎÁìÓò¶Ô·Ö²¼Ê½ÏµÍ³½øÐеÄÖÖÖÖ³¢ÊÔ£¬²¢ÔÚ³¢ÊÔÖÐÖÆ¶¨Á˶ԷþÎñµÄ¶¨Òå¡¢ÕûÌå¿ò¼ÜµÄ¹¹½¨ÒÔ¼°·þÎñÄÚ²¿²ð·ÖµÄÁ÷³Ì¡£
ǰÑÔ
ÒµÎñ¹æÄ£²»¶ÏÀ©´ó£¬¶ÔÎȶ¨ÐÔ¡¢À©Õ¹ÐÔµÄÒªÇó²»¶ÏÌá¸ß£¬Íƶ¯Á˺ǫ́¼Ü¹¹¼¼ÊõµÄ²»¶Ï¸ïС£Ãæ¶ÔÈÕÒæ¸´ÔÓµÄÐèÇ󣬷ֲ¼Ê½ÏµÍ³µÄÀíÄîÒ²Öð½¥ÉîÈëµ½ºǫ́¿ª·¢ÕߵĹÇËè¡£2013Ä꣬½è×ÅÊÖÓÎÈȳ±ÎÒ¶Ô·Ö²¼Ê½ÏµÍ³¿ªÊ¼³¢ÊÔ¡£ÔÚ½üÈýÄêµÄÃþÅÀ¹ö´òÖУ¬²È¹ý²»ÉÙ¿Ó£¬Ò²´ÓÒµ½ç¼¼Êõ·¢Õ¹ÖÐÎüȡһЩ¾Ñ飬Öð½¥ÐγÉÁËĿǰµÄÉè¼ÆË¼Â·¡£ÕâÀïºÍ´ó¼Ò·ÖÏíµãÐĵ㬲»¸ÒÉÝ̸Óжà´ó²Î¿¼¼ÛÖµ£¬È¨µ±Å×שÒýÓñ°É¡£
Ò»¡¢Ê§°ÜµÄÊ״γ¢ÊÔ
×î³õ¿¼ÂÇʹÓ÷ֲ¼Ê½µÄ³ö·¢µãºÜ¼òµ¥£º½â¾ö¶ËÓοª·¢Ê±µ¥µã½á¹¹µ¼ÖÂÈÝÔÖ¡¢À©ÈÝÀ§ÄѵÄÎÊÌâ¡£Ò»ÖÖÆÓËØµÄÏë·¨¾ÍÊǽ«Ïàͬ¹¦ÄܵĽø³Ì×÷Ϊһ¸öÕûÌå¶ÔÍâÌṩ·þÎñ¡£ÕâÀï¼òÒªÃèÊöÏ»ù±¾¿ò¼Ü£º

ÕâÖּܹ¹ÌṩÁËÈý¸ö»ù±¾×é¼þ£º
Client API£¬·þÎñÇëÇóÕßAPI£º
´Ó Cluster Center Server »ñÈ¡·þÎñÌṩÕßµØÖ·
ÏòServer¼¯ÈºÄÚËùÓÐʵÀý×¢²á£¬×¢²á³É¹¦ÔòÈÏΪ¿ÉÓÃ
ͨ¹ý¸ºÔؾùºâËã·¨£¬Ñ¡ÔñÒ»¸öServerʵÀýͨÐÅ
¼ì²âServer¼¯ÈºÄÚ¸÷ʵÀýµÄÔËÐÐ״̬
Server API£¬·þÎñÌṩÕßAPI£º
Ïò Cluster Center Server Éϱ¨×Ô¼ºµÄ״̬¡¢·ÃÎʵØÖ·µÈ
½ÓÊÕ Client API µÄ×¢²á£¬²¢Ìṩ·þÎñ
ÏòÒѾע²á³É¹¦µÄClient¶¨Ê±»ã±¨×´Ì¬
Cluster Center Server£¬¼¯ÈºÖÐÐĽø³Ì£º
½ÓÊÕ Server Cluster Éϱ¨£¬È·¶¨·þÎñ¼¯ÈºµÄ½á¹¹£¬ÒÔ¼°¸÷ʵÀýµÄ״̬
½ÓÊÕ Client Cluster µÄÇëÇ󣬷µ»Ø¿ÉÓ÷þÎñ¼¯ÈºÁбí
ÕâÖּܹ¹¾ß±¸Á˼¯ÈºµÄ»ù±¾³ûÐΣ¬¿ÉÒÔÂú×ãÈÝÔÖÀ©ÈݵĻù±¾ÐèÇ󣬴ó¼ÒÓ¦¸ÃÒ²·¢ÏÖ²»ÉÙÎÊÌ⣬ÎÒÕâÀï×ܽἸµã£º
·þÎñ·¢ÏÖµÄõ¿½ÅʵÏÖ¡£ Cluster Center Server µÄʵÏÖÊǵ¥µã£¬³öÏÖ¹ÊÕÏʱClientÇëÇó»áÒì³££»Ã»ÓÐÌṩ¼à¿Ø»úÖÆ£¬ClientÖ»ÄÜͨ¹ý¶¨Ê±ÇëÇóÀ´»ñÈ¡·þÎñµÄ×îÐÂ×´¿ö¡£
CS²ÉÓÃRequest/ResponseµÄͨÐÅ·½Ê½²»Áé»î¡£ÏÖʵӦÓÃÖУ¬·þÎñÍùÍù´æÔÚÏ໥ÇëÇó£¬Ò»Ó¦Ò»´ðÔ¶Ô¶²»¹»£¬È«Ë«¹¤
ÊDZØÐëÒªÖ§³ÖµÄ¡£
ÓÐ覴õı£»î»úÖÆ¡£ Server¶ÔClient¶¨ÆÚµ¥±ßÐÄÌø£¬ÓÐÁ½¸öÎÊÌ⣺²»Í¬Client¶Ô±£»îÒªÇó¿ÉÄܲ»Í¬£¬ÓÐЩ5s£¬ÓÐЩ¿ÉÄÜ1s£¬Èç¹ûÐÄÌø·¢ÆðÈ«²¿ÔÚServer£¬ÎÞ·¨Âú×ã²îÒ컯ҪÇó£»·þÎñ¶Ë×÷Ϊ±»¶¯·½£¬³Ðµ£¼à¿ØÇëÇóÕß´æ»îµÄÔðÈβ»Ã÷ÖÇ¡£
¼Ü¹¹Éè¼ÆµÄ²ã´Î²»ÇåÎú¡£¶Ô¼Ü¹¹µÄ²ã´Î¡¢Ä£¿é»®·ÖûÓÐ×÷³öºÜºÃµÄ¹æ»®£¬±ÈÈçͨÐŵײ㡢·þÎñ·¢ÏÖ¡¢¼¯ÈºÌ½²âÓë±£»îµÈµÈûÓÐÇåÎú¶¨Òå½Ó¿Ú£¬µ¼ÖÂÏ໥ñîºÏ£¬Ìæ»»¡¢Î¬»¤½ÏΪÀ§ÄÑ¡£
¶þ¡¢¿´¿´ÍâÃæµÄÊÀ½ç
ÉÏÊöÎÊÌ⣬¹é¸ù½áµ×»¹ÊÇÑÛ½çÏÁÕ£¬×Ô¼ºÃÆÍ·ÔìÂÖ×Óû¸úÉÏÒµ½ç¼¼Êõ·¢Õ¹µÄ²½·¥¡£½ü¼¸Äê΢·þÎñ¼Ü¹¹·¢Õ¹Ñ¸ËÙ£¬Ïà±È´«Í³ÃæÏò·þÎñ¼Ü¹¹²»ÔÙ¹ý·ÖÇ¿µ÷ÆóÒµ·þÎñ×ÜÏߣ¬¶øÊÇÉîÈëµ½µ¥¸öÒµÎñϵͳÄÚ²¿µÄ×é¼þ»¯¡£ÕâÀïÎÒ½éÉÜÏÂ×Ô¼ºµÄµ÷Ñнá¹û¡£
2.1 ·þÎñÐͬ
·þÎñÐͬÊÇ·Ö²¼Ê½ÏµÍ³Ò»¸öºËÐÄ×é³É²¿·Ö£¬¸ÅÊöΪ£º¶à¸ö½ø³Ì½Úµã×÷ΪÕûÌå¶ÔÍâÌṩ·þÎñ£¬·þÎñ¿ÉÒÔÏ໥·¢ÏÖ£¬·þÎñ¹Ø×¢Õß¿ÉÒÔ¼°Ê±»ñÈ¡±»¹Ø×¢Õߵı仯ÒÔÍê³ÉÐ×÷¡£¾ßÌåÔËÐйý³Ì°üÀ¨£º·þÎñ×¢²á
ºÍ ·þÎñ·¢ÏÖ¡£ÔÚʵÏÖÉÏÉæ¼°ÒÔÏ·½Ã棺
ͳһÃüÃû¡£¶Ô·þÎñÒÔ¼°ÆäÖеĽڵ㣬½øÐм¯ÖÐʽ¡¢Í³Ò»ÃüÃû£¬±ãÓÚÏà»¥Çø·ÖºÍ·ÃÎÊ¡£
¼à¿Ø¡£È·¶¨·þÎñµÄ¿ÉÓÃÐÔºÍ״̬£¬µ±·þÎñ״̬±ä»¯Ê±£¬¹Ø×¢ÕßÒªÓÐ;¾¶»ñÖª¡£
·ÃÎʲßÂÔ¡£·þÎñͨ³£°üº¬¶à¸ö½Úµã£¬ÒÔ¼¯ÈºÐÎʽ´æÔÚ£¬ClientÔÚÿ´ÎÇëÇóʱÐèÒª²ßÂÔÈ·¶¨Í¨ÐŽڵ㣬²ßÂÔÄ¿±ê¿ÉÄÜÊǶàÑùµÄ£¬±ÈÈç
¸ºÔؾùºâ £¬Îȶ¨Ó³Éä µÈµÈ¡£
¿ÉÓÃÐÔ¡£ÈÝÔÖ´¦Àí£¬¶¯Ì¬À©ÈÝ¡£
Òµ½çÖнÏΪ³ÉÊìµÄʵÏÖÈçϱíËùʾ£º

2.2 ÏûÏ¢Öмä¼þ
Òà³ÆÏûÏ¢¶ÓÁУ¬ÔÚ·Ö²¼Ê½ÏµÍ³¹ã·ºÊ¹Óã¬ÔÚÐèÒª½øÐÐÍøÂçͨÐŵĽڵã¼ä½¨Á¢Í¨µÀ£¬¸ßЧ¿É¿¿µØ½øÐÐÆ½Ì¨Î޹صÄÊý¾Ý½»Á÷¡£¼Ü¹¹ÉÏÖ÷Òª·ÖΪÁ½ÖÖ£ºBroker-Based£¨´úÀí£©£¬ºÍ
Brokerless£¨ÎÞ´úÀí£©¡£Ç°ÕßÐèÒª²¿ÊðÒ»¸öÏûϢת·¢µÄÖмä²ã£¬Ìṩ¶þ´Î´¦ÀíºÍ¿É¿¿ÐÔ±£Ö¤¡£ºóÕßÇáÁ¿¼¶£¬Ö±½ÓÔÚÄÚǶÔÚͨÐŽڵãÉÏ¡£Òµ½ç½ÏΪ³ÉÊìµÄʵÏÖÈçϱíËùʾ£º

2.3 ͨÐÅÐÒéÊý¾Ý¸ñʽ
·þÎñ¼äͨÐÅ£¬ÐèÒª½«Êý¾Ý½á¹¹/¶ÔÏóºÍ´«Êä¹ý³ÌÖеĶþ½øÖÆÁ÷×öÏ໥ת»¯£¬Ò»°ã³ÆÎª ÐòÁл¯/·´ÐòÁл¯¡£²»Í¬±à³ÌÓïÑÔ»òÓ¦Óó¡¾°£¬¶ÔÊý¾Ý½á¹¹/¶ÔÏóµÄ¶¨ÒåºÍʵÏÖÊDz»Í¬µÄ¡£ÔÚÑ¡ÔñʱÐèÒª¿¼ÂÇÒÔÏ·½Ã棺
ͨÓÃÐÔ¡£ÊÇ·ñÖ§³Ö¿çƽ̨¡¢¿çÓïÑÔ£»Òµ½çÊÇ·ñ¹ã·ºÁ÷ÐлòÕßÖ§³Ö
¿É¶ÁÐÔ¡£Îı¾Á÷ÓÐÌìÈ»ÓÅÊÆ£¬´¿´â¶þ½øÖÆÁ÷Èç¹ûûÓбã½Ý¿ÉÊÓ»¯¹¤¾ß£¬µ÷ÊÔ½«»áÒ쳣ʹ¿à
ÐÔÄÜ¡£¿Õ¼ä¿ªÏú¡ª¡ª´æ´¢¿Õ¼äµÄÕ¼Óã»Ê±¼ä¿ªÏú¡ª¡ªÐòÁл¯/·´ÐòÁл¯µÄ¿ìÂý
¿ÉÀ©Õ¹ÐÔ¡£ÒµÎñµÄ²»±äÖ®µÀ¾ÍÊÇ¡ª¡ªÒ»Ö±Ôڱ䣬±ØÐë¾ßÓд¦ÀíоÉÊý¾ÝÖ®¼äµÄ¼æÈÝÐÔµÄÄÜÁ¦
ʵÏÖ¡£ÐòÁл¯/·´ÐòÁл¯µÄ×é¼þÒ»°ã°üº¬£ºIDL(Interface Description Language)¡¢IDL
Compiler¡¢Stub/Skeleton¡£Òµ½çĿǰ±È½ÏÁ÷ÐеÄÐòÁл¯ÐÒéÓУºXML, JSON, ProtoBuf,
Thrift, AvroµÈ¡£¹ØÓÚÕ⼸ÖÖÐÒéµÄʵÏÖÒÔ¼°±È½Ï£¬¿ÉÒԲο¼ÎÄÕ ¡¶ÐòÁл¯ºÍ·´ÐòÁл¯¡·¡£ÕâÀォÔÎÄÖеÄÑ¡ÐͽáÂÛժ¼¸ø´ó¼Ò£º
ÔÊÐí¸ßÑÓ³Ù±ÈÈç100msÒÔÉÏ£¬ÄÚÈݱä¸üƵ·±£¬ÇÒ¸´ÔÓµÄÒµÎñ£¬¿ÉÒÔ¿¼ÂÇ»ùÓÚXMLµÄSOAPÐÒé¡£
»ùÓÚWeb browserµÄAjax£¬ÒÔ¼°Mobile appÓë·þÎñ¶ËÖ®¼äµÄͨѶ£»¶ÔÓÚÐÔÄÜÒªÇó²»Ì«¸ß£¬»òÕßÒÔ¶¯Ì¬ÀàÐÍÓïÑÔΪÖ÷µÄ³¡¾°£¬JSON¿ÉÒÔ¿¼ÂÇ¡£
¶ÔÐÔÄܺͼò½àÐÔÓм«¸ßÒªÇóµÄ³¡¾°£¬Protobuf£¬Thrift£¬Avro¶¼²î²»¶à¡£
¶ÔÓÚTerabyte¼¶±ðÊý¾Ý³Ö¾Ã»¯Ó¦Óó¡¾°£¬ProtobufºÍAvroÊÇÊ×ҪѡÔñ¡£³Ö¾Ã»¯ºóµÄÊý¾ÝÈô´æ´¢ÔÚHadoop×ÓÏîÄ¿À»òÒÔ¶¯Ì¬ÀàÐÍÓïÑÔΪÖ÷£¬Avro»áÊǸüºÃµÄÑ¡Ôñ£»·ÇHadoopÏîÄ¿£¬ÒÔ¾²Ì¬ÀàÐÍÓïÑÔΪÖ÷£¬Ê×Ñ¡Protobuf¡£
²»ÏëÔì RPC µÄÂÖ×Ó£¬Thrift¿ÉÒÔ¿¼ÂÇ¡£
Èç¹ûÐòÁл¯Ö®ºóÐèÒªÖ§³Ö²»Í¬µÄ´«Êä²ãÐÒ飬»òÕßÐèÒª¿ç·À»ðǽ·ÃÎʵĸßÐÔÄܳ¡¾°£¬Protobuf¿ÉÒÔÓÅÏÈ¿¼ÂÇ¡£
Èý¡¢ÖØÕûÆì¹Ä
µ÷ÑÐÖܱߺó£¬2015Ä꿪¸ãµÚ¶þ¿îÊÖÓΣ¬Îüȡ֮ǰµÄ½Ìѵ£¬Õâ´ÎÉè¼ÆµÄ»ù±¾ÔÔòÊÇ£º
ϵͳ²ð·Ö¡¢½âñÇåÎú¶¨Òåϵͳ¼ä½Ó¿Ú£¬Òþ²ØÏµÍ³ÄÚ²¿ÊµÏÖ£»
´ó¿ò¼Ü¾¡¿ÉÄÜͨÓã¬×Óϵͳ¿ÉÔÚ²»Í¬³¡¾°Ìæ»»¡£
ÏÂÃæÊ×ÏȶԷþÎñ¶¨Ò壬Ȼºó½éÉÜÕûÌå¿ò¼ÜºÍ·þÎñÄÚ²¿²ð·Ö¡£
3.1 ·þÎñ¶¨Òå
¾Ù¸öÊÖÓεÄÀý×Ó£¬¿´Í¼Ëµ»°£º

Service Cluster ·þÎñ¼¯Èº£¬Óɹ¦ÄÜÏàͬµÄʵÀý×é³É£¬×÷ΪÕûÌå¶ÔÍâ·þÎñ£¬ÊÇÒ»¸ö¼¯ºÏ¡£±ÈÈç Lobby
Ìṩ´óÌü·þÎñ£¬Battle Ìṩս¶··þÎñ£¬Club Ìṩ¹¤»á·þÎñ£¬Trade Ìṩ½»Ò×·þÎñ¡£
Service Instance ·þÎñʵÀý£¬ÌṩijÖÖ·þÎñ¹¦ÄܵÄ×îϸÁ£¶È£¬ÒÔ½ø³ÌÐÎʽ´æÔÚ¡£±ÈÈçClub ¼¯ÈºÖÐÓÐÁ½¸öʵÀý
3.2.6.1 ºÍ 3.2.6.2 £¬¹¦ÄÜÒ»Ö¡£
Service Node ·þÎñ½Úµã£¬ÊÇ·þÎñ·¢ÏÖ×é¼þ¹ÜÀíµÄ»ù±¾µ¥Ôª£¬¿ÉÒÔÊǼ¯Èº¡¢ÊµÀý¡¢²ã´Î¹ØÏµ»òÕßÒµÎñ¹ØÐĵĺ¬Òå¡£
Service Key ·þÎñ½ÚµãµÄKey£¬È«¾ÖΨһµÄÉí·Ý±ê¼Ç¡£keyµÄÉè¼ÆÐèÒªÄܹ»ÌåÏÖ³ö²ã¼¶¹ØÏµ£¬ÖÁÉÙÒªÄܹ»ÌåÏÖ³ö
Cluster ºÍ Instance µÄ°üº¬¹ØÏµ¡£etcdºÍzookeeper¾ùÖ§³Ökey²ã´Î»¯µÄ×éÖ¯¹ØÏµ£¬ÀàËÆÎļþϵͳµÄÊ÷Ðνṹ¡£etcdÓÐmkdirÖ±½Ó½¨Á¢Ä¿Â¼£¬zookeeperÔòͨ¹ý·¾¶ÃèÊö¸¸×Ó¹ØÏµ¡£µ«²»¹ÜÔõô¶¼¿ÉÒÔÔÚ¸ÅÄî²ã´ÎʹÓ÷¾¶½á¹¹
¡£
ÉÏͼÖУ¬Service Instance ÍêÕû·¾¶¿ÉÃèÊöΪ:/AppID/Area/Platform/WorldID/GroupID/ClusterName/InstanceName¡£ÓÐÒÔÏÂÌØµã£º
¼¯ÈºÂ·¾¶Ò»¶¨ÊÇÆäÖи÷¸öʵÀýµÄ¸¸Â·¾¶
´Ó¹¦ÄÜÍêÕûÐÔ¶øÑÔ£¬¼¯ÈºÊÇ·þÎñµÄ»ù±¾Á£¶È
Ïàͬ¹¦Äܵļ¯ÈºÔÚ²»Í¬Ç°×ºÂ·¾¶Ïº¬Ò岻ͬ£¬·þÎñÄ¿±êÒ²¿ÉÒÔ²»Í¬£¬±ÈÈç:
/Example/wechat/android/w_1/g_1/Lobby ºÍ/Example/wechat/android/w_3/g_2/Lobby
¹¦ÄÜÉϾù±íʾ´óÌü·þÎñ£¬µ«Ò»¸öΪ´óÇø1·Ö×é1·þÎñ£¬Ò»¸öΪ´óÇø3·Ö×é2·þÎñ
3.2 ·þÎñ·¢ÏÖ»ù±¾Á÷³Ì 
ÏȳéÏ󼸸ö»ù±¾²Ù×÷£¬²»Í¬·þÎñ·¢ÏÖ×é¼þµÄAPI¿ÉÄÜÂÔÓвîÒ죬µ«Ó¦¸ÃÓжÔÓ¦¹¦ÄÜ£º
Create ÔÚ·þÎñ·¢ÏÖ×é¼þÖд´½¨ Key ¶ÔÓ¦µÄ Service Node£¬Ö¸¶¨È«¾ÖΨһµÄ±ê¼Ç¡£
Delete ÔÚ·þÎñ·¢ÏÖ×é¼þÖÐɾ³ý Key ¶ÔÓ¦µÄ½Úµã¡£
Set ÉèÖà Key ¶ÔÓ¦µÄ Value, °²È«·ÃÎʲßÂÔ»òÕß½Úµã»ù´¡ÊôÐԵȡ£
Get ¸ù¾Ý Key »ñÈ¡¶ÔÓ¦½ÚµãµÄÊý¾Ý£¬Èç¹ûÊǸ¸½Úµã¿ÉÒÔ»ñÈ¡Æä×Ó½ÚµãÁÐ±í¡£
Watch ¶Ô½ÚµãÉèÖüàÊÓÆ÷£¬µ±¸Ã½Úµã×ÔÉí£¬ÒÔ¼°Ç¶Ì××Ó½ÚµãÊý¾Ý·¢Éú±ä¸üʱ£¬·þÎñ·¢ÏÖ×é¼þ½«±ä¸üʼþÖ÷¶¯Í¨Öª¸ø¼àÊÓÕß¡£
Service Instance ÿ´ÎÔÚÆô¶¯Ê±£¬°´ÕÕÏÂÃæµÄÁ÷³Ì´¦Àí£º
Éú³É×Ô¼ºµÄ Service Path£¬×¢ÒâÕâÊÇ·þÎñʵÀýµÄ·¾¶¡£
ÒÔ Service Path Ϊkey£¬Í¨¹ý Create ·½·¨Éú³É½Úµã£¬Set Êý¾Ý£º¶ÔÍ⿪·ÅµÄµØÖ·¡¢°²È«·ÃÎʲßÂԵȡ£
Éú³ÉÐèÒª·ÃÎʵķþÎñ¼¯ÈºµÄ Service Path£¬Í¨¹ý Get ·½·¨»ñÈ¡¼¯ÈºÊý¾Ý£¬Èç¹ûÕÒ²»µ½ËµÃ÷¸Ã·þÎñ²»´æÔÚ£»Èç¹û¿ÉÒÔÕÒµ½·ÖÁ½ÖÖÇé¿ö£º
¸Ã·¾¶ÏÂûÓÐ×ӽڵ㡣˵Ã÷µ±Ç°²»´æÔÚ¿ÉÓõķþÎñʵÀý£¬¶Ô¼¯ÈºÂ·¾¶ÉèÖÃwatcher£¬µÈ´ýеĿÉÓÃʵÀý¡£
¸Ã·¾¶ÏÂÓÐ×ӽڵ㡣ÄÇô Get ËùÓÐ×Ó½ÚµãÁÐ±í£¬²¢½øÒ»²½ Get ×Ó½Úµã·ÃÎÊ·½Ê½ºÍÆäËüÊý¾Ý¡£Í¬Ê±ÉèÖà watcher
µ½¼¯ÈºÂ·¾¶£¬¼ì²â¼¯ÈºÊÇ·ñ´æÔڱ仯£¬±ÈÈçÐÂÔö»ò¼õÉÙʵÀýµÈ¡£
Service Instance ÔڹرÕʱ£¬°´ÕÕÏÂÃæµÄÁ÷³Ì´¦Àí£º
ͨ¹ý Delete ·½·¨É¾³ý×Ô¼º¶ÔÓ¦µÄ½Úµã¡£ÓÐЩ·þÎñ·¢ÏÖ×é¼þ¿ÉÒÔÔÚʵÀýÉúÃüÖÜÆÚ½áÊøÊ±×ÔÐÐɾ³ý£¬±ÈÈçzookeeperµÄÁÙʱ½Úµã¡£¶ÔÓÚetcdµÄĿ¼£¬»òÕßzookeeperµÄ¸¸Â·¾¶£¬Èç¹û·Ç¿Õ£¬ÊÇÎÞ·¨É¾³ýµÄ¡£
¸ù¾ÝÉÏÃæµÄ³éÏó¿ÉÒÔ¶¨Òå ·þÎñ·¢ÏÖ µÄ»ù±¾½Ó¿Ú£¬½Ó¿ÚµÄ¾ßÌåʵÏÖ¿ÉÒÔÕë¶Ô²»Í¬µÄ×é¼þ¿ª·¢²»Í¬µÄwrapper£¬µ«¿ÉÒÔºÍÒµÎñ½âñî¡£
3.3 ·þÎñ¼Ü¹¹
ËùÓеļܹ¹¹é¸ù½áµ×»¹ÊÇÐèÒª¾ßÌåµ½½ø³Ì²ã´ÎʵÏֵġ£Ä¿Ç°ÎÒÃÇÏîÄ¿¿ª·¢µÄ·Ö²¼Ê½¼Ü¹¹×é¼þ³ÆÖ®Îª DMS(Distributed
Messaging System)£¬ÒÔ DMS Library µÄÐÎʽÌṩ£¬¼¯³É¸Ã¿â¼´¿ÉʵÏÖÃæÏò·þÎñµÄ·Ö²¼Ê½Í¨ÐÅ¡£ÏÂÃæÊÇ
DMS Éè¼ÆµÄ×ÜÌå½á¹¹£º


¹ØÓÚSerialize/DeSerialize£¬APPÒµÎñµÄÑ¡Ôñ×ÔÓɶȽϸߣ¬ÏÂÃæ½éÉÜÆäËüLayerµÄ¾ßÌåʵÏÖ£º
3.3.1 Message Middleware
ÏûÏ¢Öмä¼þÇ°Ãæ½éÉÜÓкܶàÑ¡Ôñ¡£DMS ʹÓõÄÊÇ ZeroMQ£¬³ö·¢µãÊÇ£ºÇáÁ¿¼¶¡¢ÐÔÄÜÇ¿´ó¡¢Æ«µ×²ãËùÒÔÁé»î¶øÇÒ¿É¿ØÐԽϸߡ£ÓÉ´Ë´øÀ´µÄ³É±¾ÊÇ£¬¸ß¼¶Ó¦Óó¡¾°ÐèÒª×ö²»ÉÙ¶þ´Î¿ª·¢£¬¶øÇÒ³¤´ï80¶àÒ³µÄ×ÊÁÏÒ²ÐèÒª²»ÉÙʱ¼ä¡£½éÉÜZeroMQµÄÎÄÕÂÌ«¶à£¬ÕâÀï²»´òËã¿ÆÆÕ£¬ËùÒÔÖ±½Ó¸ø³öÉè¼Æ·½°¸¡£
ͨÐÅģʽµÄÑ¡Ôñ
ZeroMQµÄSocketÓжàÖÖÀàÐÍ£¬²»Í¬×éºÏ¿ÉÒÔÐγɲ»Í¬µÄͨÐÅģʽ£¬Áоټ¸ÖÖ³£¼ûµÄ£º
REQ/REP Ò»Ó¦Ò»´ð£¬ÓÐÇëÇó±ØÐëµÈ´ý»ØÓ¦
PUB/SUB ·¢²¼¶©ÔÄ
PUSH/PULL Á÷Ë®Ïßʽ´¦Àí£¬ÉÏÓÎÍÆÊý¾Ý£¬ÏÂÓÎÀÊý¾Ý
DEALER/ROUTER ȫ˫¹¤Ò첽ͨÐÅ

¿´µ½ÕâÀ´ó¼Ò¿ÉÄÜ»á¾õµÃÑ¡ÔñPUB/SUBºÍDEALER/ROUTERÓ¦¸Ã¿ÉÒÔÂú×ã¾ø´ó²¿·ÖÓ¦Óó¡¾°°É¡£Êµ¼ÊÉÏDMSֻʹÓÃÁËÒ»ÖÖsocketÀàÐÍ£¬ÄǾÍÊÇROUTER£¬Í¨ÐÅģʽֻÓÐÒ»ÖÖROUTER/ROUTER¡£Ò»ÖÖsocket£¬Ò»ÖÖͨÐÅģʽ£¬ÌýÆðÀ´ºÜ¼òµ¥£¬µ«Õæ¿ÉÒÔÂú×ãÒªÇóÂð£¿
DEALER/ROUTER ÊÇ´«Í³Ò첽ģʽ£¬Ò»·½connect£¬Ò»·½bind¡£Ç°¶ËÈç¹ûÒªÁ¬½Ó¶à¸öºó¶Ë¾ÍµÃ½¨Á¢¶à¸ösocket¡£ÔÚÇ°ÃæÃèÊöµÄ¼¯Èº·þÎñģʽÏ£¬Ò»¸ö½Úµã¼È»á×÷ΪClientÒ²»á×÷ΪServer£¬»áÓжàÌõÈë±ß£¨±»¶¯½ÓÊÕÁ¬½Ó£©ºÍ³ö±ß£¨Ö÷¶¯·¢ÆðÁ¬½Ó£©¡£ÕâÕýºÃ¾ÍÊÇ·ÓɵĸÅÄһ¸öROUTER
socket¿ÉÒÔ½¨Á¢¶àÌõͨ·£¬²¢¶ÔÿÌõͨ··¢ËÍ»òÕß½ÓÊÕÏûÏ¢¡£
PUB/SUB ×¢ÖØµÄÊÇÀ©Õ¹ÐԺ͹æÄ££¬°´ÕÕZeroMQ×÷ÕßµÄÒâ˼µ±Ã¿ÃëÖÓÐèÒªÏòÉÏǧµÄ½Úµã¹ã²¥°ÙÍòÌõÏûϢʱ£¬ÄãÓ¦¸Ã¿¼ÂÇʹÓÃ
PUB/SUB ¡£ºÃ°É£¬¿ÉÔ¤¼ûµÄ½«À´ÒµÎñ¹æÄ£¿ÖÅ»¹µ½´ï²»µ½ÕâÖ̶ֳȣ¬ÏÖÔÚÏȰѼòµ¥·ÅÔÚµÚһλ°É¡£
3.3.2 DMS Protocol
ÏûÏ¢½á¹¹
DMSµÄÐÒéʵÏÖ¼¯Èº¹ÜÀí£¬ÏûϢת·¢µÈ»ù±¾¹¦ÄÜ¡£ZeroMQµÄÏûÏ¢¿ÉÒÔÓÉ Frame ×é³É£¬Ò»¸öFrame¿ÉÒÔΪ¿ÕÒ²¿ÉÒÔÊÇÒ»¶Î×Ö½ÚÁ÷£¬Ò»¸öÍêÕûµÄÏûÏ¢¿ÉÒÔ°üº¬¶à¸öFrame£¬³ÆÎªMultipart
Message¡£»ùÓÚÕâÖÖÌØµã£¬ÔÚDMS¶¨ÒåÐÒ飬¿ÉÒÔ½«ÄÚÈݲð·ÖΪ²»Í¬µÄ»ù±¾µ¥Ôª£¬Ã¿¸öµ¥ÔªÓÃÒ»¸öFrameÃèÊö£¬Í¨¹ýµ¥Ôª×éºÏ±íʾ²»Í¬µÄº¬Òå¡£ÕâÓ봫ͳ·½Ê½£ºÒ»ÌõÐÒé¾ÍÊÇÒ»¸ö½á¹¹Ì壬²»Í¬µ¥Ôª×éºÏÐèÒª¶¨ÒåΪһ¸ö½á¹¹ÌåµÄ·½Ê½Ïà±È¸ü¼ÓÁé»î¡£
ÏÂÃæÀ´¿´¿´DMS ProtocolµÄ»ù±¾×é³É¡£Ê×Ö¡Ò»¶¨ÊǶԶËID¡£¶Ô¶Ë½ÓÊÕºóÒ²Ò»¶¨»á»ñÈ¡ÐÅÏ¢·¢ËͶ˵ÄID¡£µÚ¶þÖ¡°üº¬DMS¿ØÖÆÐÅÏ¢¡£µÚÈý¡¢µÚËÄÖ¡µÈÈ«²¿ÊÇÒµÎñ×Ô¶¨ÒåµÄ´«ÊäÐÅÏ¢£¬½ö¶ÔREQ-REPÓÐЧ£º

PIDFÓÐÁ½²ãº¬Ò壺ËùÔÚ·þÎñ¼¯ÈºµÄ±ê¼Ç£¬×ÔÉíµÄʵÀý±ê¼Ç¡£ÕâЩ±ê¼ÇÓëService Discovery¹ØÓÚ½ÚµãkeyµÄ¶¨Òå±£³ÖÒ»Ö£¬ÓÐÁ½ÖÖÐÎʽ
×Ö·û´® Óë ÕûÐÍ£¬Ç°Õ߿ɶÁ·½±ãÀí½â£¬ºóÕßÊÇǰÕßµÄHash£¬Ìá¸ß´«ÊäЧÂÊ¡£Ê¹ÓÃα´úÂëÀ´ÃèÊöPIDF£¬´ó¸ÅÊÇÏÂÃæµÄÑù×Ó£º

PIDFÖÐµÄ ClusterID ºÍ InstanceID ¸÷ÖÖȡֵ£¬»áÓв»Í¬µÄͨÐÅÐÐΪ£º

ÔÚÁ¬½ÓÊ״ν¨Á¢Ê±£¬»¹ÐèÒª½«¿É¶ÁµÄ·þÎñ·¾¶´«Ê䏸¶Ô¶Ë£º

ÐÒéÃüÁî×Ö
DMSÐÒéÈ«²¿ÔÚÿ¸öÏûÏ¢µÄµÚ¶þÖ¡¼´Control FrameÖÐʵÏÖ¡£ÃüÁî×Ö¶¨ÒåΪ£º

ͨÐÅÁ÷³Ì¡ª¡ª½¨Á¢Á¬½Ó 
ͨ¹ýService DiscoveryÕÒµ½serverºó²»ÒªÁ¢¼´Á¬½Ó£¬¶øÊÇ·¢ËÍ̽²â°ü¡£ÔÒòÓÐÒÔϼ¸µã£º
a. ·þÎñ·¢ÏÖËäÈ»¿ÉÒÔ·´Ó³½ÚµãÊÇ·ñ´æ»î£¬µ«Ò»°ãÓÐÑÓ³Ù£¬ËùÒÔ´Ó·þÎñ·¢ÏÖ»ñÈ¡µÄ½Úµã½ö½öÊǺòÑ¡½Úµã¡£
b. ÍøÂçµ×²ã»úÖÆ²îÒì½Ï´ó£¬ÓÐЩ»ùÓÚÁ¬½Ó£¬±ÈÈçraw socket£¬ÓÐЩûÓÐÁ¬½Ó£¬±ÈÈçshared memory¡£×îºÃÔڸ߲ãÐÒéÖнâ¾öÁ¬½ÓÊÇ·ñ³É¹¦¡£Õâ¾ÍºÃ±ÈÉùÄÉ£¬Í¶Ê¯ÎÊ·£¬ÓлØÓ¦ËµÃ÷¿ÉÒÔÁ¬½Ó£¬Ã»ÓлØÓ¦ËµÃ÷ĿǰÁ¬½Ó²»¿ÉÓá£
ͨÐÅÁ÷³Ì¡ª¡ªÒµÎñÏûÏ¢·¢ËÍ 
a. ÆÕͨÏûÏ¢£ºÈôPIDF±íʾ¶Ô¶ËʵÀýºÍµ±Ç°½ø³ÌÖ±½ÓÁ¬½Ó£¬ÄÇô·¢ËÍÏûÏ¢£»
b. ·ÓÉÏûÏ¢£ºÈôPIDF±íʾ¶Ô¶ËʵÀýºÍµ±Ç°½ø³ÌûÓÐÖ±½ÓÁ¬½Ó£¬ÄÇô¿ÉÒÔͨ¹ýÖ±Á¬µÄʵÀýת·¢¡£Â·ÓÉ»úÖÆ ºóÎÄ»á½éÉÜ£»
c. ¹ã²¥ÏûÏ¢£ºÈôPIDFInstanceIDΪ¸ºÊý£¬ÔòÏòÖ¸¶¨¼¯ÈºÄÚËùÓÐʵÀý¹ã²¥¡£
·Óɺ͹㲥ÊÇ¿ÉÒÔ»ìºÏʹÓõġ£ÉÏÊö¹ý³ÌDMS×Ô¶¯Íê³É£¬ÒµÎñ²»±Ø²ÎÓ룬µ«¿ÉÒԽػñ¸ÉÔ¤¡£
ͨÐÅÁ÷³Ì¡ª¡ª±£»î»úÖÆ
½¨Á¢Á¬½Óºó£¬ÇëÇóÕß»á³ÖÐø°´ÕÕ×Ô¼ºµÄ¼ä¸ôÏò·þÎñÕß·¢ËÍ̽²â°ü¡£Èç¹ûÇëÇóÕßÁ¬ÐøÈô¸É´ÎûÓÐÊÕµ½·þÎñÕßµÄPONG»Ø°ü£¬ÔòÇëÇóÕßÈÏΪÓë·þÎñÕßµÄÁ¬½ÓÒѾ¶Ï¿ª¡£
Èç¹û·þÎñÕßÊÕµ½ÇëÇóÕßµÄÈκÎÊý¾Ý°ü£¬ÈÏΪÇëÇóÕß´æ»î£¬Èç¹û³¬³öÒ»¶¨Ê±¼äûÓÐÊÕµ½£¨º¬PING£©£¬ÔòÈÏΪÇëÇóÕßµôÏß¡£Õâ¸ö³¬Ê±Ê±¼ä°üº¬ÔÚREADYÐÒéÖУ¬ÓÉÇëÇóÕ߸æÖª·þÎñÕß¡£
ͨÐÅÁ÷³Ì¡ª¡ªÁ¬½Ó¶Ï¿ª
ÈκÎÒ»·½ÊÕµ½DISCONNECTºó£¬¼´ÈÏΪ¶Ô·½Ö÷¶¯¶Ï¿ªÁ¬½Ó£¬²»ÒªÔÙÖ÷¶¯Ïò¶Ô·½½øÐÐÈκÎÐÎʽµÄͨÐÅ¡£
3.3.3 DMS Kernel
ÏÂÃæ½éÉÜ DMS Kernel ÈçºÎ¸ù¾Ý DMS Protocol ʵÏÖÏà¹ØÂß¼£¬²¢ÈçºÎÓëÒµÎñ½»»¥¡£

SERVICE MANAGER
a. self È·¶¨×ÔÉí ·þÎñ·¾¶£¬ÊµÏÖ·þÎñ×¢²á£¬ÒÔ¼°ÓëÄ¿±êͨÐÅÁ´Â·µÄ×¢²á£¬¹©Â·ÓɱíʹÓÃ
b. targets »ñÈ¡²¢¼à¿ØÄ¿±ê·þÎñµÄÊý¾ÝÒÔ¼°ÔËÐÐ״̬
c. ACL ·ÃÎÊ¿ØÖƹÜÀí
d. ¶Ô·þÎñ·¢ÏÖ²ã½Ó¿Ú½øÐзâ×°£¬²»Í¬µÄ SERVICE DISCOVERY ¹¦ÄÜ¿ÉÄÜÓÐËù²»Í¬
ROUTER MANAGER 
ÿ¸ö·þÎñʵÀýÔÚÖ÷¶¯³É¹¦Á¬½Ó¶Ô¶Ë·þÎñºó£¬Í¨¹ý SERVICE MANAGER ½«Á¬½ÓÒԱߵÄÐÎʽдÈëµ½ SERVICE
DISCOVERY ÖУ¬ÕâÑù¾Í»áÒÔ ÁÚ½Ó±ß µÄÐÎʽÉú³ÉÒ»ÕÅÍêÕûµÄͼ½á¹¹£¬Ò²¾ÍÊÇrouting table¡£±ÈÈç:
Service 1 ºÍ Service 2£¬Service 3£¬Service 4 ¾ùÓÐÁ¬½Ó£¬ÄÇô½«±ß(1,2)£¬(1,3)£¬(1,4)
¼Ç¼ÏÂÀ´¡£SERVICE DISCOVERY ¹ØÓÚ·ÓÉÁÚ½ÓÁ´±íµÄ¼Ç¼¿ÉÒÔʹÓù«¹²µÄkey£¬±ÈÈç: /AppID/Area/Platform/routing_table
¡£È»ºóËùÓеķþÎñʵÀý¶¼¿ÉÒÔ¸üС¢·ÃÎʸ÷¾¶ÒÔ±ã»ñµÃһֵķÓÉ±í¡£»ù´¡¹¦ÄÜÓÐÁ½¸ö£º
a. Updater ÓÃÓÚÏò·ÓɱíÖÐÌí¼Ó±ß£¬É¾³ý±ß£¬ÉèÖñߵÄÊôÐÔ£¨±ÈÈçÈ¨ÖØ£©£¬²¢¶Ô±ßµÄ±ä»¯½øÐÐ¼à¿Ø
b. Calculator ¸ù¾ÝÁÚ½Ó±ßÐÎ³ÉµÄ Í¼½á¹¹ ¼ÆËã·ÓÉ£¬³ö·¢µãÊǵ±Ç°ÊµÀý£¬¸ø¶¨Ä¿±êµãÅжÏÄ¿±êÊÇ·ñ¿É´ï£¬Èç¹û¿É´ïÈ·¶¨Â·¾¶²¢´«Ê䏸ÏÂÒ»¸ö½Úµãת·¢¡£Ä¬ÈÏÑ¡Ôñ
Dijkstra Ëã·¨£¬ÒµÎñ¿ÉÒÔ¶¨ÖÆ¡£
CONNECTION MANAGER
¹ÜÀí Frontends ¼´Ç°¶ËÇëÇó½øÈëµÄÁ¬½Ó£¬ºÍ Backends ¼´Ïòºó¶ËÖ÷¶¯·¢ÆðµÄÁ¬½Ó¡£BackendsµÄÄ¿±êÀ´Ô´ÓÚ
Service Manager¡£
a. Sentinel ¶Ôǰ¶Ë·¢ÆðµÄÁ¬½Ó£¬Í¨¹ý READY ÐÒ飬¿ÉÒÔ»ñÈ¡¸ÃÁ¬½ÓµÄʧ»î±ê×¼£¬²¢Í¨¹ýǰ¶ËÖ÷¶¯°üÀ´ÅжϽøÈëÁ¬½ÓÊÇ·ñ´æ»î¡£Èç¹ûʧ»î£¬½«¸ÃÁ¬½ÓÖÃΪ¶Ï¿ª×´Ì¬£¬²»ÔÙÏò¶ÔӦǰ¶ËÖ÷¶¯·¢°ü¡£
b. Prober ¶Ôºó¶Ë·þÎñ½øÐÐÁ¬½Ó½¨Á¢ºÍÁ¬½Ó±£»î¡£
c. Dispatcher ÏûÏ¢·¢ËÍʱÓÃÓÚÈ·¶¨Í¨ÐŶԶËʵÀý¡£Á¬½ÓÊÇ»ùÓÚʵÀýµÄ£¬µ«ÊÇÒµÎñÒ»°ã¶¼ÊÇÃæÏò·þÎñ¼¯ÈºµÄ£¬ËùÒÔDispathcer
ÐèҪʵÏÖÒ»¶¨µÄ·ÖÅä»úÖÆ£¬½«ÏûϢת·¢¸ø ·þÎñ¼¯ÈºÖеÄij¸ö ¾ßÌåʵÀý ¡£×¢ÒâÕâÀï½öÖ»´æÔÚÖ±½ÓÁ¬½ÓµÄµ¥²¥¡£·ÖÅäʱӦ¿¼ÂÇ
¸ºÔؾùºâ ĬÈÏʹÓÃÒ»ÖÂÐÔ¹þÏ£Ëã·¨£¬ÒµÎñÍêÈ«¿ÉÒÔ¸ù¾Ý¾ßÌåÓ¦Óó¡¾°×Ô¶¨Òå¡£
3.3.4 DMS Interface

DMS API ÊÇDMS¶ÔÒµÎñÌṩµÄ·þÎñ½Ó¿Ú£¬¿ÉÒÔ¹ÜÀí·þÎñ¡¢Í¨ÐŵȻù±¾¹¦ÄÜ£»
DMS APP Interface ÊÇDMSÒªÇóÒµÎñ±ØÐëʵÏֵĽӿڱÈÈ磺Dispatcher µÄ¸ºÔؾùºâ²ßÂÔ£¬¶Ô¶Ë·þÎñ״̬±ä»¯Í¨Öª£¬ÒÔ¼°ÒµÎñ×Ô¶¨Òå
·ÓÉËã·¨ µÈµÈ¡£
3.4 Ó¦Óó¡¾°
ÏÂÃæÂÞÁÐDMSÈý´óÀàµäÐÍÓ¦Óó¡¾°£¬ÆäËü³¡¾°Ó¦¸Ã¿ÉÒÔͨ¹ýÕâÈý¸öÀý×Ó×éºÏʵÏÖ£º
ÎÞBrokerͨÐÅ 
×î»ù´¡µÄͨÐÅ·½Ê½¡ª¡ªÁ½¸ö¼¯ÈºÖ®¼äµÄ Instance È«Á¬½Ó£¬ÊʺϷþÎñÊýÁ¿²»¶à¡¢Âß¼²»¸´Ôӵļòµ¥ÒµÎñ¡£
BrokerͨÐÅ 
¶ÔÓÚÒ»¸öÄÚ²¿¾ÛºÏµÄ×Óϵͳ£¬¿ÉÄܰüº¬N¸ö·þÎñ£¬ÕâЩ·þÎñÖ®¼äÏ໥´æÔÚ½ÏÇ¿µÄ½»»¥ÐÐΪ¡£Èç¹ûʹÓÃÎÞBrokerģʽ¿ÉÄÜÓÐÁ½¸öÎÊÌ⣺Á´Â·¹ý¶à£ºÍ¨ÐŲãµÄÄÚ´æÕ¼Óýϴó£»ÔËάά»¤À§ÄÑ£»·þÎñûÓнâñֱ½ÓÒÀÀµÓڶԶ˵ĴæÔÚ£»
ÕâʱBroker¼¯Èº¿ÉÒԳе£ÏûÏ¢ÖÐתµÄ×÷Ó㬶øÇÒ¿ÉÒÔÍê³ÉһЩ¼¯ÖÐʽÂß¼´¦Àí¡£×¢ÒâÕâÀïBrokerÖ»ÊÇÒ»¸öÃû×Ö£¬Í¨¹ý
DMS Library ¿ÉÒÔÖ±½ÓʵÏÖ¡£
Broker¼¶ÁªÍ¨ÐÅ 
¶à¸ö×ÓϵͳÏ໥ͨÐÅ£¬¹À¼ÆÃ»ÓÐÉè¼ÆÕßÔ¸Òâ°ÑÄÚ²¿Ï¸½ÚÍêÈ«±©Â¶¸ø¶Ô·½£¬ÕâʱÁ½¸öBroker¼¯Èº¾ÍÏ൱ÓÚÃÅ»§£ºÊ×ÏÈ¿ÉÒÔʵÏÖÄÚ²¿×ÓϵͳÏ໥ͨÐÅ£¬ÒÔ¼°¼¯ÖÐÂß¼£»Æä´Î£¬¿ÉÒÔ×÷ΪËù´¦×ÓϵͳµÄ¶ÔÍâ½Ó¿Ú£¬ÆÁ±Îϸ½Ú¡£ÕâÑù²»Í¬×ÓϵͳֻÐèͨ¹ý¸÷×ÔµÄBroker¼¯Èº¶ÔÍâÌṩ·þÎñ¼´¿É¡£
×ܽá
±¾ÎÄÖ÷Òª½éÉÜÁË DMS µÄ¼¸¸ö»ù´¡½á¹¹£º·þÎñ·¢ÏÖ¡¢ÏûÏ¢Öмä¼þÒÔ¼°Í¨Ðżܹ¹¡£»ù±¾Ë¼ÏëÊÇ£º¿ò¼Ü·Ö²ã¡¢²ã¼¶Ö®¼ä½Ó¿ÚÇåÎú¶¨Ò壬ÒÔ±ãÔÚ²»Í¬³¡¾°ÏÂʹÓò»Í¬µÄ¾ßÌåʵÏÖ½øÐÐÌæ»»¡£ÆäÖÐ
zookeeper£¬ZeroMQ Ö»ÊǾÙÀý˵Ã÷µ±Ç°µÄÒ»ÖÖʵÏÖ·½Ê½£¬ÔÚ²»Í¬³¡¾°Ï¿ÉÒÔÑ¡Ôñ²»Í¬×é¼þ£¬Ö»ÒªÂú×ã½Ó¿Ú¼´¿É¡£ |