±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËRPC¼à¿Ø
- Êý¾Ý²É¼¯¡¢RPC¼à¿Ø - Êý¾ÝÕ¹ÏÖ¡¢ ¿ÉÊÓ»¯ÓÐÏòͼÉè¼Æ¡¢Overwatchϵͳ½ØÍ¼µÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
1. ±³¾°
дï´ïµÄ·þÎñ¶ËÊÇÒ»¸öÅÓ´óµÄ¡¢·Ö²¼Ê½µÄ¡¢Î¢·þÎñ»¯µÄϵͳ£¬Ã¿Ê±Ã¿¿Ìϵͳ֮¼ä¶¼ÓÐן£Á¿µÄRPCÇëÇó£¨Ö¸¹ãÒåÉϵÄRPC£¬°üÀ¨REST½Ó¿Úµ÷Óá¢JDBCµÈ£¬ÏÂͬ£©¡£ÔڴϵͳµÄ³õÆÚ£¬ÎÒÃǽö½ö¶Ô¸÷¸öϵͳµÄ·ÃÎÊÈÕÖ¾½øÐÐÁË¼à¿Ø¡£ÕâÑùµÄ¼à¿Ø¿ÉÒÔÈÃÎÒÃÇ·¢ÏÖij¸öϵͳÊÇ·ñ³öÏÖÁËϵͳ´íÎ󣨱íÏÖÈçÏìÓ¦ÁËHTTP
500״̬Â룩£¬µ«ÊÇÔÚ´ó¶àÊýÇé¿öÏ£¬ÎÒÃÇÎÞ·¨¿ìËÙ¶¨Î»µ½³öÏÖÎÊÌâµÄϵͳ£¬ÒòΪ´æÔÚÈçÏÂÇé¿ö£º
¸ÃϵͳÏìӦʧ°ÜÊÇÒòΪµ÷ÓÃÆäËûϵͳʧ°Ü£¬±¨³ö´íÎóµÄϵͳ±¾Éí²¢Ã»ÓÐÎÊÌâ¡£
µ÷ÓÃÆäËûϵͳʧ°ÜÊÇÓÉÓÚÍøÂçÎÊÌ⣬ÇëÇó²¢Ã»Óе½´ïÄ¿±êϵͳ£¬ËùÒÔÔÚÄ¿±êϵͳµÄÈÕÖ¾Öп´²»µ½ÈκÎÒì³£¡£
±»µ÷ÓõÄϵͳÏìÓ¦³¬Ê±£¬µ¼Öµ÷Ó÷½Ö÷¶¯¶Ï¿ªÁ¬½Ó£¬ÔÚ±»µ÷Ó÷½µÄÈÕÖ¾ÖÐÖ»ÄÜ¿´µ½Á¬½ÓÒâÍâÖÐÖ¹µÄÒì³£ÐÅÏ¢¡£
µ÷ÓÃÆäËûϵͳ´æÔÚÒ»ÌõºÜ³¤µÄµ÷ÓÃÁ´£¬ÎÞ·¨¿ìËÙ×·×Ùµ½Ô´Í·¡£
ÕýÊÇÓÉÓÚдï´ïºǫ́´óÁ¿µÄ΢·þÎñϵͳÒÔ¼°ÏµÍ³Ö®¼ä¸´Ôӵĵ÷ÓÃÒÀÀµ¹ØÏµ£¬¼ÓÉϽϸ´ÔÓµÄÍøÂç»·¾³£¬µ¼Ö³öÏÖÎÊÌâºóÅŲéÊ®·ÖÀ§ÄÑ¡£¾³£³öÏÖ¼¸¸öϵͳͬʱ¿ªÊ¼±¨¾¯£¬È»ºóÎÒÃÇ¿ªÊ¼ÔÚ¶à¸öϵͳÖпªÊ¼ÅŲéÎÊÌ⣬×îºó·¢ÏÖÊÇÓÉÓÚij̨Êý¾Ý¿â»úÆ÷µÄÍøÂç³öÏÖÁËÎÊÌ⡣ͬʱÎÒÃÇҲҪȥȷÈÏÊÇ·ñËùÓеÄϵͳ¶¼ÊÇÓÉÓÚÕâ¸öÎÊÌâ¶øÒý·¢µÄ±¨¾¯£¬ÀË·ÑÁË´óÁ¿µÄÈËÁ¦¡£
2. RPC¼à¿Ø - Êý¾Ý²É¼¯
»ùÓÚÉÏÊöÇé¿ö£¬ÎÒÃÇ¿ªÊ¼Ñз¢Overwatch¼à¿ØÏµÍ³£¬Ï£ÍûÄܹ»½â¾öÈçÏÂÎÊÌ⣺
ʵʱ¼à¿ØÏµÍ³ÖÐËùÓеÄRPC£¬¼°Ê±·¢ÏÖËùÓеÄRPCµ÷ÓÃʧ°ÜÇé¿ö¡£
Äܹ»ÔÚ¶à¸öϵͳͬʱÒ쳣ʱ¿ìËÙ¶¨Î»µ½Òì³£µÄ¸ùÔ´¡£
ΪÁËÄܹ»·¢ÏÖRPCµ÷ÓÃʧ°ÜµÄËùÓÐÇé¿ö£¨°üÀ¨ÒµÎñÎÊÌ⡢ϵͳÎÊÌâ¡¢ÍøÂçÎÊÌ⣩£¬ÎÒÃÇÌÖÂÛÈçÏÂÁ½ÖÖ¼à¿Ø·½°¸£º
1¡¢´Ó·þÎñÌṩ·½¼à¿Ø
¶Ô·þÎñÌṩ·½Ó¦ÓÃÈÝÆ÷µÄ·ÃÎÊÈÕÖ¾£¨ÈçTomcatµÄaccess.log£©½øÐÐ¼à¿Ø£¬½«ËùÓÐÓ¦ÓõÄÕâЩÈÕÖ¾Îļþͨ¹ý¹«Ë¾ÏÖÓеÄÈÕÖ¾ÊÕ¼¯-·ÖÎöϵͳ½øÐÐͳһÊÕ¼¯·ÖÎö¡£ÕâÑùµÄ·½°¸¿ÉÒÔ¿ìËÙʵʩÇÒÎÞÐèÐÞ¸ÄÏÖÓдúÂ룬¿ª·¢Á¿Ò²½ÏÉÙ¡£

È»¶øÕâÑù×öµÄÎÊÌâÒ²ºÜÃ÷ÏÔ£º
ÎÞ·¨¼à¿Øµ½ÍøÂçÎÊÌ⣬ÒòΪÇëÇó»áÓÉÓÚÍøÂçÔÒòûÓе½´ï·þÎñÌṩ·½£¨Connect Timeout£©
ÇëÇóÏìÓ¦³¬Ê±£¨Read Timeout£©£¬ÕâÑùµÄÇëÇó²»»áÕ¹ÏÖÔÚ·ÃÎÊÈÕÖ¾ÖУ¨Ò»Ð©°æ±¾µÄTomcat´æÔÚ¸ÃÎÊÌ⣬°üÀ¨ÎÒÃÇÕýÔÚʹÓõİ汾£©
ÎÞ·¨¼à¿Øµ½Òì³£µÄÏìÓ¦ÇëÇ󣬼´ËäÈ»·µ»ØÁËHTTP 200״̬Â룬µ«ÊÇʵ¼ÊÉÏÊÇÇëÇóʧ°Ü£¨Èç·µ»ØJSON×Ö·û´®{¡°status¡±:
¡°failed¡±}£©
ÎÒÃDz»ÄÜ´Ó·þÎñÌṩ·½½øÐС°Ö÷¹Û¡±µÄ¼à¿Ø¡£·þÎñÊǸø·þÎñÏû·Ñ·½Ê¹Óõ쬷þÎñÌṩ·½ËùÈÏΪµÄ¡°ÕýÈ·¡±ÊDz»¹»¡°¿Í¹Û¡±µÄ£¬Ö»ÓзþÎñÏû·Ñ·½ÈÏΪÇëÇó³É¹¦£¬²ÅÊÇ¡°¿Í¹Û¡±µÄÇëÇó³É¹¦¡£
2¡¢´Ó·þÎñÏû·Ñ·½¼à¿Ø
´Ó·þÎñÏû·Ñ·½¿ÉÒÔʵÏÖÉÏÊöµÄ¡°¿Í¹Û¡±µÄ¼à¿Ø¡£
|
´Ó·þÎñÌṩ·½¼à¿Ø |
´Ó·þÎñÏû·Ñ·½¼à¿Ø |
²»ÐèÐ޸ĴúÂë |
Yes |
No |
¸ÐÖª´íÎóÏìÓ¦ |
Yes |
Yes |
¸ÐÖªÍøÂç´íÎó |
No |
Yes |
¸ÐÖªÏìÓ¦³¬Ê± |
Maybe |
Yes |
¸ÐÖª²»ÕýÈ··µ»ØÖµ |
No |
Yes |
ʵʱ |
Maybe |
Yes |
µ«ÊÇÎÒÃÇÐèÒª×Ô¼ºÊµÏÖÐÅÏ¢µÄÊÕ¼¯ÒÔ¼°¾ÛºÏ£¬Í¬Ê±ÎÒÃÇÐèÒªÒ»¸öÔÚ·þÎñ½ø³ÌÖеÄAgentÈ¥ÊÕ¼¯RPCÐÅÏ¢¡£ÎÒÃDzÉÓÃÁËKafka½øÐÐÊý¾ÝµÄÊÕ¼¯£¬Storm½øÐÐÊý¾ÝµÄ¾ÛºÏ£¬×îºó½«Êý¾Ý½»¸øOverwatch·þÎñ½ø³Ì½øÐд洢ºÍÕ¹ÏÖ¡£ÕâÑùÎÒÃÇ¿ÉÒÔ×öµ½Ò»¸öÑÓ³ÙÔÚÃë¼¶µÄʵʱ¼à¿ØÏµÍ³¡£

3. RPC¼à¿Ø - Êý¾ÝÕ¹ÏÖ
ÖÁ´Ë£¬ÎÒÃÇ»¹ÐèÒª½â¾öÒ»¸öÎÊÌ⣺ÈçºÎÄܹ»ÔÚ¶à¸öϵͳͬʱÒ쳣ʱ£¬¿ìËÙ¶¨Î»µ½Òì³£µÄ¸ùÔ´¡£´«Í³µÄ¼à¿Ø¶àÒÔÖù״ͼ¡¢ÕÛÏßͼµÄÐÎʽչÏÖÐÅÏ¢¡£

ÕâÑùµÄÐÅÏ¢Õ¹ÏÖÏÔÈ»²»ÄÜÂú×ãÎÒÃǵÄÐèÇó£¬OverwatchÔÚÐÅÏ¢µÄÕ¹ÏÖ·½Ê½ÉÏÐèÒª×÷³ö¸Ä±ä£¬ÎÒÃDzÉÓÃÁËÓÐÏòͼµÄ·½Ê½Õ¹ÏÖ¼à¿ØÊý¾Ý¡£ÓÐÏòͼչÏÖRPC¼à¿ØÊý¾ÝÓÐÈçÏÂÓŵ㣺
¿ÉÒÔÔÚÒ»ÕÅͼ±íÖÐÍêÕûÕ¹ÏÖËùÓÐϵͳµÄ״̬¡£
ÓÉÓÚRPCÊÇÓÐÏòµÄ£¨´ÓÏû·Ñ·½ÏòÌṩ·½£©£¬Ê¹ÓÃÓÐÏòͼ¿ÉÒÔÍêÃÀ±í´ï³ö¸ÃÐÅÏ¢¡£
ͼ¿ÉÒÔ±í´ïϵͳ֮¼äµÄÒÀÀµ¹ØÏµ£¬µ±¶à¸öϵͳͬʱÒ쳣ʱ£¬¿ÉÒÔͨ¹ý¹Û²ìͼÖеÄÒÀÀµ¹ØÏµÀ´ÕÒµ½Òì³£µÄ¸ùÔ´¡£

ʹÓÃÓÐÏòͼҲ´æÔÚһЩÎÊÌ⣺´«Í³Í¼±í¿ÉÒÔÕ¹ÏÖ¡°¼à¿ØÍ³¼ÆÖµ-ʱ¼ä¡±ÕâÑùµÄ¶þά¹ØÏµ£¬¶øÔÚÓÐÏòͼÖÐÕ¹ÏÖÕâЩÊý¾Ý²¢Ã»ÓÐÄÇô¼òµ¥£¬ÎÒÃÇÔÚÖ®ºóµÄÕ½ÚÌÖÂÛÖлáÌÖÂÛÕ¹Ïֵķ½·¨¡£
ÔÚOverwatchÖУ¬ÎÒÃÇ»áÕ¹ÏÖϵͳ×î½üÒ»·ÖÖÓ¡¢×î½ü5·ÖÖÓÆ½¾ù¡¢×î½ü15·ÖÖÓÆ½¾ùµÄͳ¼ÆÖµ£¨ÀàËÆÓÚLinuxÖеÄuptimeËùչʾµÄÐÅÏ¢£©¡£ÒªÕ¹ÏÖÕâЩÊý¾Ý£¬Overwatch±ØÐëÈ¡×î½ü15·ÖÖÓµÄËùÓÐ¼à¿ØÊý¾Ý£¬²¢½øÐÐÏàÓ¦µÄ¾ÛºÏ¼ÆË㣬ÕâÊÇ¿ªÏúÌØ±ð´óµÄ²Ù×÷£¬ÏÔÈ»²»¿ÉÄܶÔÓÚÿ´ÎÓû§µÄ²é¿´¼à¿ØÇëÇó¶¼½øÐÐÒ»´ÎÕâÑùµÄ²Ù×÷¡£¶ÔÓÚÕⲿ·ÖµÄʵÏÖ£¬ÎÒÃDzÉÓÃÁËCQRSµÄģʽ¡£
CQRS£¨Command Query Responsibility Segregation£©ÊÇÖ¸¶ÔÓÚÊý¾ÝµÄÐ޸ġ¢¸üвÙ×÷£¨Command£©ºÍ¶ÁÈ¡£¨Query£©²Ù×÷·Ö±ðʹÓò»Í¬µÄModel¡£Õâ¶ÔÓÚÆÕͨµÄCRUDÒµÎñÐèÇóÀ´ËµÖ»»áÔö¼Óϵͳ¸´ÔÓ¶È£¬µ«ÊÇÔÚOverwatchÕâÑù¸´ÔÓ²éѯ¡¢¼òµ¥Ð´ÈëµÄ³¡¾°Ï£¬ÊÇÒ»Öַdz£ºÏÊʵÄģʽ¡£
ÓÉÓÚOverwatchµÄ·þÎñ¶ËÓÉNodeJSʵÏÖ£¬ËùÒÔ¿ÉÒÔÍêÃÀʵÏÖÒ»¸öʼþÇý¶¯µÄ¡¢´Ó·þÎñÆ÷µ½ä¯ÀÀÆ÷µÄCQRS¼Ü¹¹¡£¼Ü¹¹Éè¼ÆÈçÏ£º

4. ¿ÉÊÓ»¯ÓÐÏòͼÉè¼Æ
ÉÏÎÄÌáµ½ÁËÓÐÏòͼµÄÎÊÌ⣬¼´ÄÑÒÔÕ¹ÏÖÒ»¸öʱ¼äÖá¡£ÏÔʾÆ÷¶¼ÊǶþάµÄ£¬´«Í³µÄÖù״ͼÓÃһά±íʾͳ¼ÆÖµ£¬Áíһά±íʾʱ¼ä£¬¶þÕßÐγɵÄ×ø±êµãºÍ¶þάÏÔʾÆ÷Éϵĵã¶ÔÓ¦¡£¶øÓÐÏòͼÐèÒªÕ¹ÏÖÒ»¸ö¡°·½Ïò¡±£¬½ÚµãÐèÒªÔÚÒ»¸öÆ½ÃæÄÚÕ¹ÏÖ£¬ËùÒÔÏÔʾÆ÷ÉϵÄÁ½¸öά¶ÈÒѾ±»ÓÃÍêÁË¡£ÎªÁËչʾʱ¼äά¶ÈµÄÐÅÏ¢£¬ÎÒÃDzÉÓÃÁËÏÔʾÆ÷µÄµÚÈý¸öά¶È¡ª¡ªÑÕÉ«¡£
ÎÒÃÇʹÓÃÈý¸öͬÐÄÔ²±íʾһ¸ö½Úµã£¬Ã¿¸öÔ²µÄÑÕÉ«¸ù¾Ý¸ÃϵͳËùÓÐRPCµ÷Óõijɹ¦ÂÊ´ÓÀ¶£¨100%£©µ½»Æ£¨<99.9%£©µ½ºì£¨<99%£©¡£×îÄÚ²àµÄÔ²±íʾ×î½üÒ»·ÖÖӵijɹ¦ÂÊ£»ÖмäµÄÔ²±íʾ×î½ü5·ÖÖӵijɹ¦ÂÊ£»×îÍâ²àµÄÔ²±íʾ×î½ü15·ÖÖӵijɹ¦ÂÊ¡£Í¨¹ýÕâÈý¸öͬÐÄÔ²£¬ÎÒÃǾͿÉÒÔÖ±¹ÛÁ˽⵽¸Ãϵͳµ±Ç°µÄ״̬ÒÔ¼°×î½ü15·ÖÖӵı仯¡£

³ý´ËÖ®ÍâÎÒÃÇʹÓýڵãµÄ´óС±íʾ½Úµã×î½üÒ»·ÖÖӵķÃÎÊÁ¿£¬ÓñߵÄÑÕÉ«±íʾÁ½¸öϵͳ֮¼äµÄRPCµ÷Óõijɹ¦ÂÊ¡£
µ±¶à¸öϵͳͬʱÒ쳣ʱ£¬Í¨¹ýϵͳ¼äµÄÒÀÀµ¹ØÏµ£¬ÎÒÃÇ¿ÉÒÔѸËÙÕÒµ½Òì³£µÄ¸ùÔ´£¬Ò²¿ÉÒÔÆÀ¹ÀÒì³£µÄÓ°Ï췶Χ¡£
5. Overwatchϵͳ½ØÍ¼

ÓÐÏòͼ¡¢ÊµÊ±´íÎóÈÕÖ¾¡¢ÏµÍ³×ÜÀÀ

½ÚµãÐÅÏ¢£¬°üÀ¨5·ÖÖÓ¡¢10·ÖÖÓ¡¢15·ÖÖÓͳ¼Æ

µ¥ÏµÍ³ÐÅÏ¢¿ìËÙչʾ£¬°üÀ¨×î½üһСʱͳ¼ÆÍ¼±íÒÔ¼°´íÎóÈÕÖ¾

µ¥ÏµÍ³ÀúÊ·ÐÅÏ¢²éѯ

ÓÐÏòͼ²¼¾ÖÉèÖÃ
6. ×ܽá
Overwatch·Ö²¼Ê½ÏµÍ³¼à¿ØÆ½Ì¨¿ÉÒÔ¶ÔËùÓкǫ́ϵͳ¼äµÄRPCͨÐŽøÐÐʵʱµÄ¼à¿Ø¡£Í¼Ðλ¯µÄÕ¹ÏÖʹµÃ¹¤³Ìʦ²»ÓÃÈ¥½â¶Á´óÁ¿µÄ¡¢¸´ÔÓµÄÊý¾Ý±¨±í¡£½öͨ¹ýÒ»ÕÅÓÐÏòͼ£¬¹¤³Ìʦ±ã¿ÉÒÔ¿ìËÙÀí½â²¢ÕÆÎÕµ±Ç°ÏµÍ³µÄÕûÌå×´¿ö£¬°ïÖú¹¤³Ìʦ¿ìËÙ¶¨Î»²¢ÐÞ¸´ÏµÍ³Òì³£¡£Í¬Ê±£¬ÎÒÃÇÒ²ÔÚ²»¶ÏÓÅ»¯¼ÓÇ¿OverwatchµÄ¹¦ÄÜ£¬OverwatchÓÐ׿«´óµÄÀ©Õ¹µÄDZÁ¦£¬Í¨¹ý¶Ô¿Í»§¶ËÊÕ¼¯³ÌÐòµÄ¼ÓÇ¿£¬ÎÒÃÇ»¹¿ÉÒÔʵÏÖÒÔϹ¦ÄÜ£º
¶ÔÓÚÊý¾ÝÔ´¡¢Öмä¼þµÄ¼à¿Ø£¨ÈçMySQL¡¢Redis¡¢ÏûÏ¢¶ÓÁУ©£¬ÔÚÓÐÏòͼÖмÓÈë»ù´¡×é¼þ£¬È«Ãæ¼à¿ØËùÓÐϵͳ¼äµÄÒÀÀµÒÔ¼°µ÷ÓÃÇé¿ö¡£
Ö§³Ö¸ü¶àRPCÐÒé £¨ÈçThrift¡¢gRPC£©
¸ü¶àµÄmetric£¬ÊµÏÖ¾«È·µ½APIµÄ¼à¿ØºÍÕ¹ÏÖ
|