|
Ò».ÅäÖõÄÄÇЩʶù
1.ÒµÎñ±³¾°
×÷Ϊ´óÐ͸´ÔÓ·Ö²¼Ê½ÏµÍ³£¬Î¢²©Æ½Ì¨ÖдæÔÚ´óÁ¿µÄÅäÖÃÐÅÏ¢£¬ÕâЩÅäÖÃÐÅÏ¢¶¨ÒåÁËÆ½Ì¨ÖеÄRPC·þÎñºÍ×ÊÔ´£¨memcached¡¢redis¡¢mysqlµÈ£©µÄµØÖ·£¬ÒÔ¼°ÕâЩ·þÎñºÍ×ÊÔ´µÄÔªÊý¾ÝÐÅÏ¢¡£
ÔÚ΢²©ÔçÆÚ£¬ÅäÖÃÐÅϢɢÂäÔÚ¹¤³ÌµÄ´úÂëÖУ¬ÕâÖÖ·½Ê½¼òµ¥·½±ã£¬µ«ÊÇ΢²©Æ½Ì¨ÏµÍ³¹æÄ£À©´óºÍÒµÎñ²¿Êð¸´ÔӶȵÄÌáÉý´øÀ´ÁËһЩÎÊÌ⣺
1.·þÎñ°´ÕÕÒµÎñºÍÖØÒª³Ì¶È²¿ÊðÔÚ¶à¸ö³Ø×Ó£¬²»Í¬³Ø×ÓµÄÅäÖÃÐÅÏ¢²»Í¬¡£
2.·þÎñ¶à»ú·¿²¿Ê𣬲»Í¬»ú·¿µÄÅäÖÃÐÅÏ¢Ò²²»Í¬¡£
3.¿ª·¢¡¢²âÊÔÒÔ¼°ÉÏÏß²¿ÊðµÄÅäÖÃÐÅÏ¢Ò಻ͬ¡£
ΪÁ˽â¾öÒÔÉÏÎÊÌ⣬΢²©Æ½Ì¨¶ÔÅäÖÃ×öÁËÒ»´Î´ó¹æÄ£µ÷Õû£¬½«´úÂëºÍÅäÖ÷ÖÀ룬ÅäÖð´ÕÕ»ú·¿¡¢ÒµÎñ³ØÒÔ¼°»·¾³²ð·Ö£¬²¢ÇÒ´æ´¢ÔÚ±¾µØÎļþϵͳÖÐÔ¼¶¨µÄλÖ᣷ÖÀëÖ®ºó£¬¸÷ÒµÎñ³Ø¡¢¸÷»ú·¿µÄÅäÖøü¼ÓÁé»î£¬Ò²ÎªÅäÖÃÏò
config serviceÇ¨ÒÆÌṩÁËÌõ¼þ¡£
Ëæ×Å΢²©Æ½Ì¨·þÎñÆ÷¹æÄ£µÄ³ÖÐøÔö³¤£¬RPC·þÎñºÍ×ÊÔ´µÄ¹ÊÕϺͱä¸üÒѾ±äΪһÖÖ³£Ì¬£¬ÔÚÈÕ³£Î¬»¤¹ý³ÌÖУ¬¾³£»áÓöµ½ÒÔϳ¡¾°£º
1.ijһ×émemcacheq×ÊԴͻȻÁ÷Á¿ÃÍÔö£¬ÐèÒª¿ìËÙÀ©ÈÝ
2.ijһredis×ÊÔ´·ÃÎʹýÔØ£¬ÐèÒªÁ¢¼´½µ¼¶µ÷ÓÃËüµÄ·þÎñ
¶øÏÖÓеĽâ¾ö·½°¸ÎÞ·¨½â¾öÕâЩÎÊÌ⣬ÎÒÃÇÆÈÇÐÐèÒªÒ»¸ö·Ö²¼Ê½»·¾³Ïµij־ÃÅäÖÃϵͳ£¬Ìṩ¸ßЧµÄÅäÖÃ×¢²á»ñÈ¡ºÍ¼°Ê±±ä¸ü֪ͨ·þÎñ£¬ÓÚÊÇvintage£¨config
serviceÔÚ΢²©ÄÚ²¿µÄ´úºÅ£©Ó¦Ô˶øÉú¡£
2.vintage
VintageÊǵäÐ͵ĻùÓÚpub-subÄ£Ð͵ÄͨѶ¿ò¼Ü£¬ÔÚÒµ½çÀàËÆµÄϵͳºÜ¶à£¬±ÈÈçÌÔ±¦µÄdiamondºÍÈí¸ºÔØÖÐÐÄ£¬zookeeperÔÚijЩϵͳÖУ¨Èçkafka£©Ò²°çÑÝ×ÅÀàËÆµÄ½ÇÉ«¡£
Vintage ½«ÐÅÏ¢¼¯ÖйÜÀíÔÚÔÆ¶Ë£¬²¢ÇÒÌṩʵʱµÄ±ä¸ü֪ͨ¡£VintageÖ÷ÒªÓ¦ÓÃÓÚÁ½ÖÖÖ÷Òª³¡¾°£ºÅäÖùÜÀíºÍÃüÃû¹ÜÀí£¬ÅäÖùÜÀíÖ÷Ҫά»¤¾²Ì¬ÅäÖÃÊý¾Ý£¨Èç·þÎñ³¬Ê±Ê±¼ä¡¢½µ¼¶¿ª¹Ø×´Ì¬£©£»ÃüÃû¹ÜÀíÖ÷Ҫά»¤RPC·þÎñµØÖ·ÐÅÏ¢¡£Á½ÖÖ³¡¾°¿´ÆðÀ´¼«ÎªÏàËÆ£¬µ«ÊÇÒ²´æÔÚÈçϲî±ð£º
ÉúÃüÖÜÆÚ²»Í¬£ºÃüÃû·þÎñÐèÒª¹ÜÀí·þÎñµÄÉúÃüÖÜÆÚ£¬ÊµÊ±Ì½²â·þÎñµÄ´æ»î״̬£»ÅäÖ÷þÎñÖ÷Òª¹ÜÀí¾²Ì¬µÄÐÅÏ¢¡£
Êý¾Ý²úÉú·½Ê½²»Í¬£ºÃüÃû·þÎñÊý¾ÝÀ´Ô´ÓÚ·þÎñµÄ×¢²á£»ÅäÖ÷þÎñÊý¾ÝÀ´Ô´ÓÚOPÊÖ¶¯Ìí¼Ó¡£
Êý¾Ý¾«È·¶È²»Í¬£ºÃüÃû·þÎñÊý¾Ý¿ÉÄÜ»á´æÔÚÒ»¶¨Ê±¼ä´°¿ÚÄÚµÄÎóÅУ¨ºóÃæ»áÌáµ½£©£»ÅäÖ÷þÎñµÄÊý¾Ý»á·Ç³£¾«È·¡£
VintageÔÚ΢²©Æ½Ì¨ÄÚ²¿ÒѾ»ñµÃÁ˺ܴóµÄÍÆ¹ãºÍʹÓã¬RPC service¡¢cache
service¡¢·Ö²¼Ê½traceϵͳ¡¢queue service¶¼ÔÚÒ»¶¨³Ì¶ÈÉÏÒÀÀµvintage£¬ËüµÄÖØÒª³Ì¶ÈÊDz»ÑÔ¶øÓ÷µÄ¡£
ÄÇôÈç´ËÖØÒªµÄ·þÎñÊÇÈçºÎÉè¼ÆµÄÄØ£¿
¶þ.VintageÉè¼ÆºÍ¼Ü¹¹
1. ¼Ü¹¹Éè¼Æ
VintageÔÚÉè¼ÆÖ®³õ¾ÍÃ÷È·ÁËÒÔϵÄÄ¿±ê£º
1.¸ß¿ÉÓãºvintage¹ÜÀí×Å·þÎñµÄµØÖ·ºÍÔªÊý¾ÝÐÅÏ¢£¬Æä±¾ÉíµÄ¸ß¿ÉÓÃÐÔ¾ö¶¨×ÅϵͳÕûÌå³É°Ü¡£
2.µÍÑÓ³Ù£ºÎ¢²©Æ½Ì¨ÖÐÿ´Îµ÷ÓÃÀíÂÛÉ϶¼»áÓëvintageÓÐÒ»´Î»òÕß¶à´ÎµÄ½»»¥£¬Òò´Ëvintage·ÃÎÊÑÓ³ÙÓ°Ïì×ÅϵͳÕûÌåµÄÐÔÄÜ¡£
3.ʱЧÐÔ£º¶ÔÓÚ±ä¸ü¼°Ê±ÏìÓ¦ºÍ֪ͨ
vintageÑ¡Ôñredis×÷ΪÅäÖÃÐÅÏ¢µÄÂ䵨´æ´¢£¬½á¹¹¼òµ¥£¬ÎÞµ¥µã£¬¾ßÌåÈçÏÂͼËùʾ£º

2. ÈÝÔÖ»úÖÆ
vintageÒԸ߿ÉÓÃÐÔΪÉè¼Æ¸ù±¾£¬ÎÒÃÇÔÚÈÝÔÖ»úÖÆÉÏͶÈëÁ˺ܴóµÄ¾«Á¦¡£ÅäÖÃÊý¾Ý´æ´¢ÔÚredis¡¢·þÎñ¶Ë»º´æ¡¢¿Í»§¶ËsnapshotÎļþÖУ¬ÔÚ¶àÖÖ¹ÊÕϳ¡¾°Ï£¬vintage¾ùÄÜÇáËÉÓ¦¸¶£º
1.redisÖ÷¿âcrash£¬¿ÉÒÔѸËÙÇл»µ½´Ó¿â£¬¼ÌÐøÌṩ·þÎñ
2.redisÖ÷¿âºÍ´Ó¿âͬʱcrash£¬·þÎñ¶ËµÄÄڴ滺´æ¿ÉÒÔ±£Ö¤vintage·þÎñÕý³£ÔËÐС£
3.vintage·þÎñ¶ËÈ«²¿²»¿ÉÓ㬿ͻ§¶Ë±¾µØsnapshotÎļþÒ²¿ÉÒÔÌṩ·þÎñ£¬Ö»ÊDZä¸ü֪ͨ¹¦Äܽ«Ê§Ð§¡£
ÓÉ´Ë¿ÉÖª£¬Ö»ÓÐÔÚ·þÎñ¶Ëredis¡¢tomcatÈ«²¿²»¿ÉÓ㬿ͻ§¶ËµÄsnapshotÎļþ±»É¾³ý»òÕßË𻵵ÄÇé¿öÏ£¬¿Í»§¶ËÓ¦ÓòŻáÎÞ·¨´Óvintage»ñÈ¡ÅäÖÃÐÅÏ¢£¬µ¼Ö·þÎñ²»¿ÉÓã¬ÕâÖÖ³¡¾°³öÏֵļ¸Âʼ«µÍ¡£
3.±ä¸ü֪ͨ
vintageÏà±ÈÓÚ±¾µØÎļþϵͳ±£´æÅäÖÃÐÅÏ¢×î´óµÄÓÅÊÆ¾ÍÔÚÓÚ¿ÉÒÔ¶ÔÅäÖñä¸üµÄʵʱ֪ͨ¡£ÊµÏÖ±ä¸ü֪ͨ×îÖ±¹ÛµÄ×ö·¨¾ÍÊǿͻ§¶Ë¶¨ÆÚ²éѯÅäÖÃÐÅÏ¢£¬µ«ÊÇÕâÖÖ·½Ê½´æÔںܶàÎÊÌâ¡£
Ê×ÏÈ£¬ÅäÖÃÐÅÏ¢ÔÚredisÖÐÒÔhash¸ñʽ´æ´¢£¬¶ÔÐÅÏ¢µÄÿ´ÎÈ«Á¿»ñÈ¡¶¼ÊÇÒ»´Îhgetall²Ù×÷£¬Õâ¸ö²Ù×÷»á¼«´óµÄÔö¼Óredis¸ºÔØ£¬½µµÍÍÌÍÂÁ¿¡£
Æä´Î£¬vintage¶ÔÓ¦µÄ¿Í»§¶ËºÜ¶à£¬Æä±¾Éí´æ´¢µÄÊý¾ÝÁ¿Ò²ºÜ´ó£¬´óÁ¿µÄÈ«Á¿»ñÈ¡»áѹÂúÍø¿¨¡£
vintageµÄ½â¾ö·½°¸ÊÇÕâÑùµÄ£º

vintageÖгýÁË´æ´¢ÅäÖÃÐÅÏ¢ÒÔÍ⻹»á´æ´¢ÐÅÏ¢µÄMD5Â룬ͬʱÅäÖÃÐÅÏ¢ºÍMD5ÂëÒ²»á»º´æÔÚ¿Í»§¶Ë¡£¿Í»§¶ËÓ¦Ó÷¢ÆðµÄÿ´Î²éѯ²Ù×÷ʵ¼ÊÉÏÖ»ÊDzéѯ¿Í»§¶Ë»º´æÖÐÐÅÏ¢¡£¶øvintage
client»á¶¨ÆÚµÄ·ÃÎÊserver»ñµÃ×îеÄMD5ÂëÓë±¾µØ»º´æµÄMD5±È¶Ô£¬Èç¹û·¢Éú±ä»¯²Å»á´Óserver»ñµÃ×îеÄÐÅÏ¢£¬²¢ÇÒ»º´æÔÚ¿Í»§¶Ë»º´æºÍsnapshotÎļþÖС£¾ßÌåÁ÷³ÌÈçÏÂͼËùʾ£º

4.·þÎñÉúÃüÖÜÆÚ
֮ǰÌáµ½£¬vintageµÄÃüÃû¹ÜÀí¹¦ÄÜÖ÷Ҫά»¤µÄÊÇRPC·þÎñµÄµØÖ·ÐÅÏ¢£¬ÕâЩÐÅÏ¢ÊÇÓÐÉúÃüÖÜÆÚµÄ£¬ÉúÃüÖÜÆÚ״̬ÓÐÈý¸ö£ºworking¡¢unreachableºÍremoved£¬×´Ì¬±ä¸üͼÈçÏ£º

ÆäÖУ¬·þÎñÉúÃüÖÜÆÚÖÐµÄ working̬ºÍunreachable̬µÄ±ä»¯ÊÇͨ¹ýRPC
serverºÍconfig serviceÖ®¼äµÄÐÄÌøÍê³ÉµÄ£¬ÐÄÌøÊ±¼ä´ÁÒ²ÊÇ´æ´¢ÔÚredisÖС£Ã¿Ì¨Ó¦Ó÷þÎñÆ÷ÖдæÔÚÐÄÌø½ÓÊÕÆ÷£¨heartbeat
acceptor£©Ò첽дÈëÐÄÌøÊ±¼ä´Á£¬Í¬Ê±´æÔÚÒ»¸öÐÄÌø´¦ÀíÆ÷£¨heartbeat processor£©¶¨ÆÚµÄ¼ì²éÐÄÌøÊÇ·ñ³öÏÖÁ¬ÐøÈ±Ê§¡£¾ßÌåÁ÷³ÌÈçÏÂͼËùʾ£º
ÐÄÌø·þÎñ¶ÔÓÚÃüÃû·þÎñÀ´ËµÖÁ¹ØÖØÒª£¬Ö±½ÓÓ°Ïì×Å·þÎñµÄÉúÃüÖÜÆÚ±ä»¯£¬ÔÚʵ¼ÊÓ¦Óùý³ÌÖУ¬ÐèҪעÒâһϼ¸µã£º
1.heartbeat acceptorºÍheartbeat processorËù×ö²Ù×÷¾ùÊÇÒì²½µÄ£¬ÐèҪʵʱµÄ¼à¿ØÏ̳߳ØÖеÄÈÎÎñ¶Ñ»ýÇé¿ö£¬ÒÔÃâÈÎÎñ¶Ñ»ýºóµ¼ÖÂheartbeatдÈ벻ʵʱÔì³É·þÎñ״̬ÎóÅС£
2.΢²©Æ½Ì¨Ê¹ÓõÄRPC server¿ÉÒÔÔÚµ¥¸öʵÀýÄÚÅܲ»Í¬µÄ·þÎñ£¬heartbeat
aggregator»á°ÑËùÓзþÎñµÄÐÄÌøÊý¾ÝÊÕ¼¯ÆðÀ´½øÐÐѹËõ´«Ê䣬¼õÉÙÁË´ø¿íÏûºÄ¡£
3.ÓÅ»¯redisÁ¬½Ó³Ø£¬±ÜÃâheartbeat acceptor¶ÔredisµÄ¼¯ÖÐдÈëµ¼ÖÂдÈëʧ°Ü¡£
Èý.Óöµ½µÄÎÊÌâ
vintageÔÚÉè¼ÆÉϷdz£¼òµ¥£¬´úÂëÁ¿Ò²²»ÊǺܴ󣬵«ÊÇÔÚʵ¼ÊʹÓÃÖл¹ÊÇÓöµ½¸÷ÖÖ¸÷ÑùµÄÎÊÌ⣬ÒÔÏÂÕë¶Ô¼¸¸öµäÐÍÎÊÌâºÍ´ó¼Ò·ÖÏíÒÔÏ¡£
1.½Úµã״̬ÎóÅÐ
vintage½ÓÊÜÀ´×ÔËù¹ÜÀíµÄRPC·þÎñµÄÐÄÌøÐÅÏ¢£¬²¢ÇÒ¸ù¾ÝÅäÖõIJßÂÔÅжÏRPC·þÎñÊÇ·ñ´æ»î¡£ÄÇôÔÚ²»¿¼ÂÇÐÄÌø°üÔÚ´«Êä¹ý³ÌÖб»´Û¸ÄµÄǰÌáÏ£¨Byzantine
Generals Problem£©£¬Ö»»á³öÏÖÁ½ÖÖÇé¿ö£º
1.vintageÕýÈ·ÅжÏRPC·þÎñ½Úµã״̬¡£
2.RPC·þÎñ½Úµã´æ»î£¬µ«ÊÇÓÉÓÚ´«ÊäÐŵÀµÄ²»¿É¿¿µ¼ÖÂvintageûÓнÓÊÕµ½ÐÄÌøÏûÏ¢£¬´Ó¶øµ¼ÖÂvintage¶ÔÓÚ½Úµã״̬µÄÎóÅУ¨Two
Generals Problem£©¡£
Èç¹ûµÚ¶þÖÖÇé¿ö·¢Éú»á²úÉú·Ç³£ÑÏÖØµÄºó¹û£¬¼«¶ËÇé¿öÏ»ávintage»áÕª³ýËùÓеÄRPC·þÎñ½Úµã£¬µ¼Ö·þÎñÕûÌå²»¿ÉÓ᣸ºÔØÖÐÐÄÀàÐ͵IJúƷͨ³£¶¼»áÓöµ½ÕâÑùµÄÎÊÌ⣬vintageÊÇÈçºÎ½â¾öµÄÄØ£¿
Ê×ÏÈ£¬vintage²»»áÕª³ýÐÄÌø¼ì²âÖбêÖ¾ËÀÍöµÄ½Úµã£¬Ö»ÊǰÑËü±ê¼ÇΪ²»¿É´ïµÄ״̬£¨unreachable£©£»¶ø¶ÔÓÚ²»¿É´ï½ÚµãµÄʹÓã¬vintage
clientÖÐÌṩ¶àÖÖ²ßÂÔ£¬ÓÉÓ¦Ó÷½À´Ñ¡ÔñÊÇ·ñʹÓÃÒÔ¼°ÈçºÎʹÓò»¿É´ï½Úµã¡£
Æä´Î£¬vintage»á±£»¤·þÎñ½Úµã£¬¿ØÖÆÐÄÌø¼ì²âÖбêʾ²»¿É´ï½ÚµãµÄÊýÁ¿£¬±ÜÃâijһ¸ö·þÎñ¼¯ÈºµÄËùÓнڵ㱻±ê־Ϊ²»¿É´ï¡£
2.±ä¸ü¡°·ç±©¡±
֮ǰÌáµ½ÒýÓ÷½Ê¹ÓõÄÐÅϢʵ¼ÊÉÏʱ´æ´¢ÔÚvintage clientµÄ±¾µØ»º´æÖУ¬ÄÇôµ±Ó¦Ó÷½ÖØÆô£¨Èç½øÐÐÉÏÏߣ©»òÕßÐÅÏ¢·¢Éú±ä¸üʱ£¬vintage
clientµÄ±¾µØ»º´æÊ§Ð§£¬´óÁ¿µÄÇëÇó»á´©Í¸µ½vintage serverÒÔ¼°redisÖУ¬Ôì³Éϵͳ˲ʱ¸ºÔغÍÍø¿¨Á÷Á¿µÄ±©ÕÇ£¬ÎÒÃdzÆÖ®Îª±ä¸ü¡°·ç±©¡±¡£±ä¸ü·ç±©¶ÔÓÚvintageÀ´ËµÊÇÖÂÃüµÄ£¬ÒòΪӦÓ÷½Ö»ÓÐÔÚ´Ëʱ»áºÍvintage
server½»»¥£¬Èç¹ûvintage server crash£¬»áÔì³É¶ÔvintageÇ¿ÒÀÀµµÄÓ¦Ó÷½ÓÀÔ¶ÎÞ·¨Æô¶¯¡£
ÎÒÃǵÄÓ¦¶Ô·½°¸ÈçÏ£º
vintage serverÔö¼Óhot local cache£¬½µµÍ·ç±©¹ý³ÌÖдóÁ¿µÄ¶ÔÓÚͬһ×éÅäÖÃÐÅÏ¢µÄÇëÇó´©Í¸µ½redisÖС£
vintage clientÔö¼Ó±¾µØÎļþµÄ»º´æ£¬ÔÚÓ¦ÓÃϵͳÆô¶¯Ê±Ê¹ÓÃÎļþÖд洢µÄÐÅÏ¢Ô¤ÈÈÄڴ滺´æ¡£
ѹËõvintageÖд洢µÄÐÅÏ¢£¬½µµÍ·ç±©¶ÔÓÚÍø¿¨µÄѹÁ¦¡£
ËÄ.½áÊøÓï
vintageÔÚ΢²©ÏµÍ³¼Ü¹¹²ãÃæ·¢»ÓµÄ×÷ÓÃÊDz»ÑÔ¶øÓ÷µÄ£¬ËüÔöÇ¿ÁË΢²©¼Ü¹¹µÄ³°ôÐÔ£¬Ê¹¸÷¸öÒµÎñϵͳ¿ÉÒÔ½øÐпìËٵرä¸ü¡¢½µ¼¶¡¢Çл»Á÷Á¿£¬ËüÊÇ΢²©¼Ü¹¹´ÓÖÉÄÛ×ßÏò³ÉÊìµÄ±êʾ¡£
|