±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚ51CTO£¬±¾ÎĽ«¸ú´ó¼Ò·ÖÏí΢·þÎñϾ©Âó¿ª·ÅÆ½Ì¨µÄÍø¹ØÊµÏÖ£¬ÒÔ¼°ÎÒÃÇÈçºÎ¿¹Á¿¡¢ÈçºÎÔÚ´ó·ÃÎÊÁ¿µÄÇé¿öÏÂ×öÈÝ´í´¦Àí£¬ÖØµã½éÉÜÈÝ´íµÄ·½·¨¼°Ã¿ÖÖÈÝ´í·½·¨µÄʹÓó¡¾°Óë¾Ñé¡£ |
|
×Ô΢·þÎñ¸ÅÄîµ®ÉúÒÔÀ´£¬ÖÚ¶àµÄÈí¼þ¼Ü¹¹¶¼ÔÚ¼ùÐÐ×ÅÕâÒ»ÓÅÐãµÄÉè¼ÆÀíÄî¡£

¸÷×ÔµÄϵͳÔÚÕâÒ»Ö¸µ¼Ë¼ÏëÏÂÊÕ»ñÁËÓÅÑŵĿÉά»¤ÐÔ£¬µ«Ò»·½ÃæÒ²¸ø½Ó¿Úµ÷ÓÃÌá³öÁËеÄÒªÇ󣬱ÈÈçÖÚ¶àµÄ API
µ÷Óü±ÐèÒ»¸öͳһµÄÈë¿ÚÀ´Ö§³Ö¿Í»§¶ËµÄµ÷Óá£
ÔÚÕâÖÖÇé¿öÏ API Gateway µ®Éú£¬ÎÒÃǽ«½ÓÈ롢·ÓÉ¡¢ÏÞÁ÷µÈ¹¦ÄÜͳһÓÉÍø¹Ø¸ºÔ𣬸÷×ԵķþÎñÌṩ·½×¨×¢ÓÚÒµÎñÂß¼µÄʵÏÖ£¬´Ó¶ø¸ø¿Í»§¶Ëµ÷ÓÃÌṩÁËÒ»¸öÎȽ¡µÄ·þÎñµ÷Óû·¾³¡£
Ö®ºó£¬ÎÒÃÇÔÚÍø¹Ø´óµ÷ÓÃÁ¿µÄÇé¿öÏ£¬»¹Òª±£Ö¤Íø¹ØµÄ¿É½µ¼¶¡¢¿ÉÏÞÁ÷¡¢¿É¸ôÀëµÈµÈһϵÁÐÈÝ´íÄÜÁ¦¡£
½ñÌì¸ú´ó¼Ò·ÖÏí΢·þÎñϾ©Âó¿ª·ÅÆ½Ì¨µÄÍø¹ØÊµÏÖ£¬ÒÔ¼°ÎÒÃÇÈçºÎ¿¹Á¿¡¢ÈçºÎÔÚ´ó·ÃÎÊÁ¿µÄÇé¿öÏÂ×öÈÝ´í´¦Àí£¬ÖØµã½éÉÜÈÝ´íµÄ·½·¨¼°Ã¿ÖÖÈÝ´í·½·¨µÄʹÓó¡¾°Óë¾Ñé¡£
Íø¹Ø
ÕâÀï˵µÄÍø¹ØÊÇÖ¸ API Íø¹Ø£¬Òâ˼Êǽ«ËùÓÐ API µ÷ÓÃͳһ½ÓÈëµ½ API Íø¹Ø²ã£¬ÓÉÍø¹Ø²ãͳһ½ÓÈëºÍÊä³ö¡£
Ò»¸öÍø¹ØµÄ»ù±¾¹¦ÄÜÓÐÈçϼ¸ÖÖÄÜÁ¦£º
1.ͳһ½ÓÈë
2.°²È«·À»¤
3.ÐÒéÊÊÅä
4.Á÷Á¿¹Ü¿Ø
5.³¤¶ÌÁ´½ÓÖ§³Ö
6.ÈÝ´í
ÓÐÁËÍø¹ØÖ®ºó£¬¸÷¸ö API ·þÎñÌṩÍŶӿÉÒÔרעÓÚ×Ô¼ºµÄµÄÒµÎñÂß¼´¦Àí£¬¶ø API Íø¹Ø¸üרעÓÚ°²È«¡¢Á÷Á¿¡¢Â·ÓɵÈÎÊÌâ¡£
µ¥ÌåÓ¦ÓÃ

µ±ÒµÎñ¼òµ¥¡¢ÍŶÓ×éÖ¯ºÜСʱ£¬ÎÒÃdz£³£°Ñ¹¦Äܶ¼¼¯ÖÐÓÚÒ»¸öÓ¦ÓÃÖУ¬Í³Ò»²¿Êð¡¢Í³Ò»²âÊÔ£¬ÍæµÃ²»ÒàÀÖºõ¡£
µ«Ëæ×ÅÒµÎñѸËÙ·¢Õ¹£¬×éÖ¯³ÉÔ±ÈÕÒæÔö¶à£¬ÎÒÃÇÔÙ½«ËùÓеŦÄܼ¯Öе½Ò»¸ö Tomcat ÖÐÈ¥£¬Ã¿µ±¸üÐÂÒ»¸ö¹¦ÄÜÄ£¿é£¬ÊƱØÒª¸üÐÂËùÓеijÌÐò£¬¸ã²»ºÃ»¹»áÇ£Ò»·¢¶¯È«Éí£¬µ¼ÖÂʵÔÚÄÑÒÔά»¤µÄÇé¿ö¡£
΢·þÎñ

µ¥ÌåÓ¦ÓÃÂú×ã²»ÁËÎÒÃÇÖð½¥Ôö³¤µÄÀ©Õ¹ÐèÇóÖ®ºó£¬Î¢·þÎñ¾Í³öÏÖÁË£¬ËüÊǽ«ÔÀ´Ó¦Óü¯ÖÐÓÚÒ»ÌåµÄ¼Ü¹¹¡£
±ÈÈçÉÌÆ·¹¦ÄÜ¡¢¶©µ¥¹¦ÄÜ¡¢Óû§¹¦Äܲð·Ö³öÈ¥£¬¸÷×ÔÓи÷×ÔµÄ×Ô³ÉÌåϵµÄ·¢²¼¡¢ÔËάµÈ£¬ÕâÑù¾Í½â¾öÁËÔÚµ¥ÌåÓ¦ÓÃϵı׶ˡ£
API Íø¹Ø

½øÐÐ΢·þÎñºó£¬ÔÏȿͻ§¶Ëµ÷Ó÷þÎñ¶ËµÄµØ·½¾ÍÒªÓÐ N ¶à¸ö URL µØÖ·£¬°üÀ¨ÉÌÆ·µÄ¡¢¶©µ¥µÄ¡¢Óû§µÈ¡£
Õâʱ¾Í±ØÐëÒªÓиöͳһµÄÈë¿ÚºÍ³ö¿Ú£¬ÕâÖÖÇé¿öÏ£¬ÎÒÃÇµÄ API Gateway ¾Í³öÏÖÁË£¬ËüºÜºÃµØ°ïÖúÎÒÃǽâ¾öÁË΢·þÎñÏ¿ͻ§¶Ëµ÷ÓõÄÎÊÌâ¡£
·º»¯µ÷ÓÃ

¶ÔÓÚÆÕͨµÄ RPC µ÷Óã¬ÎÒÒªÄõ½·þÎñ¶ËÌṩµÄ class »òÕß jar °ü£¬ÕâÑù¹ýÓÚ·±ÖØ£¬¸ü²»ºÃά»¤¡£
²»¹ý³ÉÊìµÄ RPC ¿ò¼Ü¶¼Ö§³Ö·º»¯µ÷Óã¬ÎÒÃǵÄÍø¹Ø¾ÍÊÇ»ùÓÚÕâÖÖ·º»¯µ÷ÓÃÀ´ÊµÏֵġ£
·þÎñ¶Ë¿ª·Å³öÀ´ËûÃÇµÄ API Îĵµ£¬ÎÒÃÇÄõ½½Ó¿Ú¡¢²ÎÊý¡¢²ÎÊýÀàÐÍͨ¹ý·º»¯µ÷Óõ½·þÎñ¶Ë³ÌÐò¡£
public Object $invoke(String method, String[] parameterTypes,
Object[] args);
ÈÝ´í
ÈÝ´í£¬Õâ¸ö´ÊµÄÀí½â£¬ÊéÃæÒâ˼¾ÍÊÇ¿ÉÒÔÈÝÏ´íÎ󣬲»ÈôíÎóÔÙ´ÎÀ©ÕÅ£¬ÈÃÕâ¸ö´íÎó²úÉúµÄÓ°ÏìÔÚÒ»¸ö¹Ì¶¨µÄ±ß½çÖ®ÄÚ¡£
¡°Ç§ÀïÖ®µÌ£¬»ÙÓÚÒÏѨ¡±£¬ÎÒÃDzÉÓÃÈÝ´íµÄ·½Ê½¾ÍÊDz»ÈÃÕâÖÖÒÏѨ¼ÌÐø±ä´ó¡£ÔÚ¹¤×÷ÖУ¬½µ¼¶¡¢ÏÞÁ÷¡¢ÈÛ¶ÏÆ÷¡¢³¬Ê±ÖØÊԵȶ¼Êdz£¼ûµÄÈÝ´í·½·¨¡£
¿¹Á¿

ËùνµÄ¿¹Á¿£¬¾ÍÊÇÔö´óÎÒÃÇϵͳµÄÍÌÍÂÁ¿£¬ËùÒÔÈÝ´íµÄµÚÒ»²½¾ÍÊÇϵͳҪÄÜ¿¹Á¿£¬Ã»ÓÐÁ¿µÄÇé¿öϼ¸ºõÓò»µ½ÈÝ´í¡£
ÎÒÃǵÄÈÝÆ÷ʹÓõÄÊÇ Tomcat£¬ÔÚ´«Í³µÄ BIO Ä£ÐÍÏ£¬Ò»ÇëÇóÒ»Ị̈߳¬ÔÚ»úÆ÷Ïß³Ì×ÊÔ´ÓÐÏÞµÄÇé¿öÏÂÊÇûÓа취À´ÊµÏÖÎÒÃǵÄÄ¿±êµÄ¡£
NIO ¸øÎÒÃÇÌṩÁËÕâ¸ö»ú»á£¬»ùÓÚ NIO µÄ»úÖÆ£¬ÀûÓýÏÉÙµÄÏß³ÌÀ´´¦Àí¸ü¶àµÄÁ¬½Ó¡£
Á¬½Ó¶à²»¿ÉÅ£¬Í¨¹ýµ÷Õû»úÆ÷µÄ²ÎÊýһ̨ 8c8g µÄ»úÆ÷£¬³¬¹ý 10w ÊDz»³ÉÎÊÌâµÄ¡£
Tomcat µÄ Conector ÐÞ¸Ä³É NIO ºó£¬ÎÒÃÇÔÙ´Ó´úÂë²ãÃæÒýÈëÁË Servlet3£¬ËüÊÇ´Ó
Tomcat7 ÒÔºóÖ§³ÖµÄ£¬NIO ÊÇ Tomcat6 ÒÔºó¾ÍÖ§³ÖµÄ¡£
ÀûÓà Servlet3 µÄÌØÐÔ£¬ËùÓÐµÄ request ºÍ response ¶¼ÓÉ Tomcat µÄ¹¤×÷Ïß³ÌÀ´´¦Àí£¬ÎÒÃǽ«ÒµÎñÂß¼Òì²½µ½±ðµÄÒµÎñÏß³ÌÖÐÈ¥¡£
ÔÚÒì²½»·¾³Ï£¬¿ÉÒÔÌá¸ßµ¥Î»Ê±¼äÄÚµÄÍÌÍÂÁ¿£¬ËùÓÐµÄ Servlet ÇëÇó¶¼ÊÇÓÉ Tomcat µÄ Executor
Ï̳߳صÄÏ̴߳¦ÀíµÄ£¬Ò²¾ÍÊÇ Tomcat µÄ¹¤×÷Ï̡߳£
ÕâЩÏ̴߳¦ÀíµÄʱ¼äÔ½¶ÌÔ½ºÃ£¬Ô½¶ÌÔ½ÄÜѸËٵؽ«Ï̹߳黹¸ø Executor Ï̳߳أ¬ÏÖÔÚ Servlet
Ö§³ÖÒì²½ºó¾ÍÄܽ«ºÄʱµÄ²Ù×÷£¬±ÈÈçÓÐ RPC ÇëÇóµÄ½»¸øÒµÎñÏ̳߳ØÀ´´¦Àí£¬Ê¹µÃ Tomcat ¹¤×÷Ï߳̿ÉÁ¢¼´¹é»¹¸ø
Tomcat ¹¤×÷Ï̳߳ء£
ÁíÍ⣬½«ÒµÎñÒì²½´¦ÀíÖ®ºó£¬ÎÒÃÇ¿ÉÒÔ¶ÔÒµÎñÏ̳߳ؽøÐÐÏ̳߳ظôÀ룬ÕâÑù¾Í±ÜÃâÁËÒòÒ»¸öÒµÎñÐÔÄÜÎÊÌâ¶øÓ°ÏìÁËÆäËûµÄÒµÎñ¡£

×ܽáÒ»ÏÂÒì²½µÄÓÅÊÆ£º
1.¿ÉÒÔÓÃÀ´×öÏûÏ¢ÍÆËÍ£¬Í¨¹ý Nginx ×ö´úÀí£¬ÉèÖÃÁ¬½Ó³¬Ê±Ê±¼ä£¬¿Í»§¶Ëͨ¹ýÐÄÌøÌ½²â¡£
2.Ìá¸ßÍÌÍÂÁ¿¡£
3.ÇëÇóÏ̺߳ÍÒµÎñÏ̷ֿ߳ª£¬´Ó¶ø¿ÉÒÔͨ¹ýÒµÎñÏ̳߳ضÔÒµÎñÏß³Ì×ö¸ôÀë¡£
ÍÑÀë DB

ÍÑÀë DB£¬ÕâÀï²»ÊÇ˵ DB µÄÐÔÄܲ»ÐУ¬·Ö¿â·Ö±í¡¢DB ¼¯Èº»¯Ö®ºó£¬ÔÚÒ»¶¨Á¿µÄÇé¿öÏÂÊÇûÓÐÎÊÌâµÄ¡£
µ«ÊÇ£¬Èç¹û´Ó¿¹Á¿µÄ½Ç¶È˵µÄ»°£¬ÎªºÎ²»Ê¹Óà Redis ÄØ£¿Èç¹ûÈí¼þ¼Ü¹¹ÀïÃæÓÐÒ»ÖÖÒøµ¯µÄ»°£¬ÄÇô Redis
¾ÍÊÇÕâÖÖÒøµ¯¡£
ÁíÍâÒ»¸öÍÑÀë DB µÄÔÒòÊÇ£ºÃ¿µ±´ó´Ù±¸Õ½Ç°Ï¦ÎÒÃÇÒ»ÏîÖØµãµÄ¹¤×÷¾ÍÊÇÓÅ»¯Âý SQL£¬µ«Ëü¾ÍÏñСǿһÑùÉúÃüÁ¦ÊÇÄÇÑùµÄÍçÇ¿£¬É±²»¾ø¡£
Èç¹ûÓÐÄÇôһ¸öÂý SQL£¬Æ½Ê±ÊÇûÓÐÎÊÌâµÄ£¬±ÈÈçÒ»¸ö²éѯ´ó×Ö¶ÎµÄ SQL£¬Æ½Ê±Á¿Ð¡²»»á±©Â¶ÎÊÌ⣬µ«Á¿Ò»ÉÏÀ´ÁË£¬¾ÍÊǸöÔÖÄÑ¡£
ÔÙ¾ÍÊÇÎÒÃǵÄÍø¹Ø£¬°üÀ¨½ÓÈë¡¢·Ö·¢¡¢ÏÞÁ÷µÈÕâЩ¹¦Äܶ¼Ó¦¸ÃÊǺÜÇáµÄ£¬ËùÒÔÎÒÃǾÍͨ¹ýÊý¾ÝÒì¹¹µÄ·½Ê½°ÑÊý¾ÝÖØÐÂ×ªÔØµ½
Redis ÖУ¬¶øÇÒÊǽ«Êý¾Ý³Ö¾Ã»¯µ½ Redis ÀïÃæÈ¥¡£
µ±È»£¬Ê¹Óà Redis µÄ¹ý³ÌÖÐÒ²ÐèҪעÒâ´ó key£¬´ó·ÃÎÊÁ¿ÏÂÒ²ÄÜÈü¯ÈºÅ¿Ï¡£
»¹ÓÐÒ»¸öºÜÖØÒªµÄÔÒò£¬ÎÒÃÇʹÓÃµÄ DB ÊÇ MySQL£¬¼øÓÚ MySQL µÄ failover »úÖÆÉúЧʱ¼ä×ÜÊÇÒª³¤ÓÚ
Redis ¼¯Èº£¬×îºó¾ÍÊÇÒòΪ DB Çл»µÄʱºò£¬³£³£°éËæ Web Ó¦Ó÷þÎñÆ÷ÒªÖØÆô£¬½«ÔÀ´µÄÁ¬½ÓÊͷŵô£¬²ÅÄÜ·½±ãʹÓÃеÄÊý¾Ý¿âÁ¬½Ó¡£
¶à¼¶»º´æ

×î¼òµ¥µÄ»º´æ¾ÍÊDzéÒ»´ÎÊý¾Ý¿âÈ»ºó½«Êý¾ÝдÈ뻺´æ¡£±ÈÈçÔÚ Redis ÖÐÉèÖùýÆÚʱ¼ä£¬ÒòΪÓйýÆÚʧЧ£¬Òò´ËÎÒÃÇÒª¹Ø×¢Ï»º´æµÄ´©Í¸ÂÊ¡£
Õâ¸ö´©Í¸ÂʵļÆË㹫ʽ£¬±ÈÈç²éѯ·½·¨ queryOrder(µ÷ÓôÎÊý 1000/1s)ÀïÃæÇ¶Ìײéѯ DB
·½·¨ query Product From DB(µ÷ÓôÎÊý 300/s)£¬ÄÇô Redis µÄ´©Í¸ÂʾÍÊÇ
300/1000¡£
ÔÚÕâÖÖʹÓûº´æµÄ·½Ê½Ï£¬ÊÇÒªÖØÊÓ´©Í¸Âʵ쬴©Í¸ÂÊ´óÁË˵Ã÷»º´æµÄЧ¹û²»ºÃ¡£
»¹ÓÐÒ»ÖÖʹÓûº´æµÄ·½Ê½¾ÍÊǽ«»º´æ³Ö¾Ã»¯£¬Ò²¾ÍÊDz»ÉèÖùýÆÚʱ¼ä£¬Õâ¸ö»áÃæÁÙÒ»¸öÊý¾Ý¸üеÄÎÊÌâ¡£
Ò»°ãÓÐÁ½ÖÖ°ì·¨£º
1.ÀûÓÃʱ¼ä´Á£¬²éѯĬÈÏÒÔ Redis ΪÖ÷£¬Ã¿´ÎÉèÖÃÊý¾ÝµÄʱºò·ÅÈëÒ»¸öʱ¼ä´Á£¬Ã¿´Î¶ÁÈ¡Êý¾ÝµÄʱºòÓÃϵͳµ±Ç°Ê±¼äºÍÉÏ´ÎÉèÖõÄÕâ¸öʱ¼ä´Á×ö¶Ô±È¡£
2.±ÈÈ糬¹ý 5 ·ÖÖÓ£¬ÄÇô¾ÍÔÙ²éÒ»´ÎÊý¾Ý¿â£¬ÕâÑù¿ÉÒÔ±£Ö¤ Redis
ÀïÃæÓÀÔ¶ÓÐÊý¾Ý£¬Ò»°ãÊÇ¶Ô DB µÄÒ»ÖÖÈÝ´í·½·¨¡£
3.Èà Redis ÕæÕý×÷Ϊ DB À´Ê¹Ó㬾ÍÊÇÈçͼÀﻵÄͨ¹ý¶©ÔÄÊý¾Ý¿âµÄ
binlog£¬Í¨¹ýÊý¾ÝÒ칹ϵͳ½«Êý¾ÝÍÆË͸ø»º´æ£¬Í¬Ê±½«»º´æÉèÖÃΪ¶à¼¶¡£
4.¿ÉÒÔͨ¹ýʹÓà jvm cache ×÷ΪӦÓÃÄÚµÄÒ»¼¶»º´æ£¬Ò»°ãÊÇÌå»ýС£¬·ÃÎÊÆµÂÊ´óµÄ¸üÊʺÏÕâÖÖ
jvm cache ·½Ê½£¬½«Ò»Ì× Redis ×÷Ϊ¶þ¼¶ remote »º´æ£¬ÁíÍâµÄ×îÍâ²ãÈý¼¶ Redis
×÷Ϊ³Ö¾Ã»¯»º´æ¡£
³¬Ê±ÓëÖØÊÔ
³¬Ê±ÓëÖØÊÔ»úÖÆÒ²ÊÇÈÝ´íµÄÒ»ÖÖ·½·¨£¬·²ÊÇ·¢Éú RPC µ÷Óõĵط½£¬±ÈÈç¶ÁÈ¡ Redis¡¢DB¡¢MQ µÈ¡£
ÒòÎªÍøÂç¹ÊÕÏ»òÕßÊÇËùÒÀÀµµÄ·þÎñ¹ÊÕÏÁË£¬³¤Ê±¼ä²»ÄÜ·µ»Ø½á¹û£¬¾Í»áµ¼ÖÂÏß³ÌÔö¼Ó£¬¼Ó´ó CPU ¸ºÔØ£¬ÉõÖÁµ¼ÖÂÑ©±À¡£ËùÒÔ¶Ôÿһ¸ö
RPC µ÷Óö¼ÒªÉèÖó¬Ê±Ê±¼ä¡£
¶ÔÓÚÇ¿ÒÀÀµ RPC µ÷ÓÃ×ÊÔ´µÄÇé¿ö£¬»¹ÒªÓÐÖØÊÔ»úÖÆ£¬µ«ÖØÊԵĴÎÊý½¨Òé 1-2 ´Î¡£
ÁíÍâÈç¹ûÓÐÖØÊÔ£¬³¬Ê±Ê±¼ä»¹ÒªÏàÓ¦¶¼µ÷С£¬±ÈÈçÖØÊÔ 1 ´Î£¬ÄÇôһ¹²ÊÇ·¢Éú 2 ´Îµ÷Óá£
Èç¹û³¬Ê±Ê±¼äÅäÖõÄÊÇ 2s£¬ÄÇô¿Í»§¶Ë¾ÍÒªµÈ´ý 4s ²ÅÄÜ·µ»Ø£¬Òò´ËÖØÊÔ+³¬Ê±µÄ·½Ê½£¬³¬Ê±Ê±¼äÒªµ÷С¡£
ÕâÀïÒ²ÔÙ̸һÏ 1 ´Î PRC µ÷ÓõÄʱ¼ä¶¼ÏûºÄÔÚÄÄЩ»·½Ú¡£
1 ´ÎÕý³£µÄµ÷ÓÃͳ¼ÆµÄºÄʱÖ÷Òª°üÀ¨£º¢Ùµ÷ÓöËRPC¿ò¼ÜÖ´ÐÐʱ¼ä + ¢ÚÍøÂç·¢ËÍʱ¼ä + ¢Û·þÎñ¶ËRPC¿ò¼ÜÖ´ÐÐʱ¼ä
+ ¢Ü·þÎñ¶ËÒµÎñ´úÂëʱ¼ä¡£
µ÷Ó÷½ºÍ·þÎñ·½¶¼Óи÷×ÔµÄÐÔÄÜ¼à¿Ø£¬±ÈÈçµ÷Ó÷½ tp99 ÊÇ 500ms£¬·þÎñ·½ tp99 ÊÇ 100ms£¬ÕÒÁËÍøÂç×éµÄͬÊÂÈ·ÈÏÍøÂçûÓÐÎÊÌâµÄ¡£
ÄÇôʱ¼ä¶¼»¨ÔÚʲôµØ·½ÁËÄØ£¿Á½ÖÖÔÒò£º¿Í»§¶Ëµ÷Ó÷½£¬»¹ÓÐÒ»¸öÔÒòÊÇÍøÂç·¢Éú TCP ÖØ´«£¬ËùÒÔҪעÒâÕâÁ½µã¡£
ÈÛ¶Ï
È۶ϼ¼Êõ¿ÉÒÔ˵ÊÇÒ»ÖÖ¡°ÖÇÄÜ»¯µÄÈÝ´í¡±£¬µ±µ÷ÓÃÂú×ãʧ°Ü´ÎÊý£¬Ê§°Ü±ÈÀý¾Í»á´¥·¢ÈÛ¶ÏÆ÷´ò¿ª£¬ÓгÌÐò×Ô¶¯Çжϵ±Ç°µÄ
RPC µ÷Óã¬À´·ÀÖ¹´íÎó½øÒ»²½À©´ó¡£
ʵÏÖÒ»¸öÈÛ¶ÏÆ÷Ö÷ÒªÊÇ¿¼ÂÇÈýÖÖģʽ£º
1.¹Ø±Õ
2.´ò¿ª
3.°ë¿ª
¸÷¸ö״̬µÄת»»ÈçÏÂͼ£º

ÔÚÁ˽âÁËÈÛ¶ÏÆ÷µÄ״̬»úÖÆºó£¬ÎÒÃÇ¿ÉÒÔ×Ô¼ºÀ´ÊµÏÖÒ»¸öÈÛ¶ÏÆ÷¡£µ±È»Ò²¿ÉÒÔʹÓÿªÔ´µÄ½â¾ö·½°¸£¬±ÈÈç Hystrix
ÖÐµÄ breaker¡£
ÏÂͼÊÇÒ»¸öÈÛ¶ÏÆ÷´ò¿ª¹Ø±ÕµÄʾÒâͼ£º

ÕâÀïҪ̸µÄÊÇÈÛ¶ÏÆ÷µÄʹÓÃ×¢ÒâÏ
ÎÒÃÇÔÚ´¦ÀíÒ쳣ʱ£¬Òª¸ù¾Ý¾ßÌåµÄÒµÎñÇé¿öÀ´¾ö¶¨´¦Àí·½Ê½¡£±ÈÈçÎÒÃǵ÷ÓÃÉÌÆ·½Ó¿Ú£¬¶Ô·½Ö»ÊÇÁÙʱ×öÁ˽µ¼¶´¦Àí£¬ÄÇô×÷ÎªÍø¹Øµ÷ÓþÍÒªÇе½¿ÉÌæ»»µÄ·þÎñÉÏÀ´Ö´ÐлòÕß»ñÈ¡Íе×Êý¾Ý£¬¸øÓû§ÓѺÃÌáʾ¡£
»¹ÓÐ񻂿·ÖÒì³£µÄÀàÐÍ£¬±ÈÈçÒÀÀµµÄ·þÎñ±ÀÀ£ÁË£¬Õâ¸ö¿ÉÄÜÐèÒª»¨·Ñ±È½Ï¾ÃµÄʱ¼äÀ´½â¾ö£¬Ò²¿ÉÄÜÊÇÓÉÓÚ·þÎñÆ÷¸ºÔØÁÙʱ¹ý¸ßµ¼Ö³¬Ê±¡£
×÷ΪÈÛ¶ÏÆ÷Ó¦¸ÃÄܹ»Õç±ðÕâÖÖÒì³£ÀàÐÍ£¬´Ó¶ø¸ù¾Ý¾ßÌåµÄ´íÎóÀàÐ͵÷ÕûÈ۶ϲßÂÔ¡£
Ôö¼ÓÊÖ¶¯ÉèÖã¬ÔÚʧ°ÜµÄ·þÎñ»Ö¸´Ê±¼ä²»È·¶¨µÄÇé¿öÏ£¬¹ÜÀíÔ±¿ÉÒÔÊÖ¶¯Ç¿ÖÆÇл»ÈÛ¶Ï״̬¡£×îºó£¬ÈÛ¶ÏÆ÷µÄʹÓó¡¾°Êǵ÷ÓÿÉÄÜʧ°ÜµÄÔ¶³Ì·þÎñ³ÌÐò»òÕß¹²Ïí×ÊÔ´¡£
Èç¹ûÊDZ¾µØ»º´æ±¾µØË½ÓÐ×ÊÔ´£¬Ê¹ÓÃÈÛ¶ÏÆ÷Ôò»áÔö¼ÓϵͳµÄ¶îÍ⿪Ïú¡£»¹Òª×¢Ò⣬ÈÛ¶ÏÆ÷²»ÄÜ×÷ΪӦÓóÌÐòÖÐÒµÎñÂß¼µÄÒì³£´¦ÀíÌæ´úÆ·¡£
Ï̳߳ظôÀë

ÔÚ¿¹Á¿Õâ¸ö»·½Ú£¬Servlet3 Ò첽ʱ£¬ÓÐÌáµ½¹ýÏ̸߳ôÀë¡£Ï̸߳ôÀëµÄÖ±½ÓÓÅÊÆ¾ÍÊÇ·ÀÖ¹¼¶Áª¹ÊÕÏ£¬ÉõÖÁÊÇÑ©±À¡£
µ±Íø¹Øµ÷Óà N ¶à¸ö½Ó¿Ú·þÎñµÄʱºò£¬ÎÒÃÇÒª¶Ôÿ¸ö½Ó¿Ú½øÐÐÏ̸߳ôÀ룬±ÈÈçÎÒÃÇÓе÷Óö©µ¥¡¢ÉÌÆ·¡¢Óû§¡£
ÄÇô¶©µ¥µÄÒµÎñ²»Äܹ»Ó°Ïìµ½ÉÌÆ·ºÍÓû§µÄÇëÇó´¦Àí¡£Èç¹û²»×öÏ̸߳ôÀ룬µ±·ÃÎʶ©µ¥·þÎñ³öÏÖÍøÂç¹ÊÕϵ¼ÖÂÑÓʱ£¬Ï̻߳ýѹ×îÖÕµ¼ÖÂÕû¸ö·þÎñ
CPU ¸ºÔØÂú¡£
¾ÍÊÇÎÒÃÇ˵µÄ·þÎñÈ«²¿²»¿ÉÓÃÁË£¬ÓжàÉÙ»úÆ÷¶¼»á±»´Ë¿ÌµÄÇëÇóÈûÂú¡£ÄÇô£¬ÓÐÁËÏ̸߳ôÀë¾Í»áʹµÃÎÒÃǵÄÍø¹ØÄܱ£Ö¤¾Ö²¿ÎÊÌâ²»»áÓ°ÏìÈ«¾Ö¡£
½µ¼¶¡¢ÏÞÁ÷
¹ØÓÚ½µ¼¶ÏÞÁ÷µÄ·½·¨Òµ½ç¶¼ÒѾÓкܳÉÊìµÄ·½·¨ÁË£¬±ÈÈç Failback »úÖÆ£¬ÏÞÁ÷·½·¨ÁîÅÆÍ°¡¢Â©Í°¡¢ÐźÅÁ¿µÈ£¬ÕâÀï̸һÏÂÎÒÃǵÄһЩ¾Ñé¡£
½µ¼¶Ò»°ã¶¼ÊÇÓÉͳһÅäÖÃÖÐÐĵĽµ¼¶¿ª¹ØÀ´ÊµÏֵģ¬ÄÇôµ±Óкܶà¸ö½Ó¿ÚÀ´×Ôͬһ¸öÌṩ·½£¬Õâ¸öÌṩ·½µÄϵͳ»òÕâ»úÆ÷ËùÔÚ»ú·¿ÍøÂç³öÏÖÁËÎÊÌ⣬ÎÒÃǾÍÒªÓÐÒ»¸öͳһµÄ½µ¼¶¿ª¹Ø¡£
²»È»¾ÍÒªÒ»¸ö½Ó¿ÚÒ»¸ö½Ó¿ÚµØÀ´½µ¼¶£¬Ò²¾ÍÊÇÒª¶ÔÒµÎñÀàÐÍÓÐÒ»¸ö´óÕ¢µ¶¡£
»¹ÓоÍÊǽµ¼¶ÇмDZ©Á¦½µ¼¶£¬Ê²Ã´ÊDZ©Á¦½µ¼¶£¿±ÈÈç°ÑÂÛ̳¹¦Äܽµµ÷£¬½á¹ûÓû§ÏÔʾһ¸ö´ó°×°å£¬ÎÒÃÇҪʵÏÖ»º´æ×¡Ò»Ð©Êý¾Ý£¬Ò²¾ÍÊÇÓÐÍе×Êý¾Ý¡£
ÏÞÁ÷Ò»°ã·ÖΪ·Ö²¼Ê½ÏÞÁ÷ºÍµ¥»úÏÞÁ÷£¬Èç¹ûʵÏÖ·Ö²¼Ê½ÏÞÁ÷µÄ»°¾ÍÒªÒ»¸ö¹«¹²µÄºó¶Ë´æ´¢·þÎñ£¬±ÈÈç Redis£¬ÔÚ´ó
Nginx ½ÚµãÉÏÀûÓà Lua ¶ÁÈ¡ Redis ÅäÖÃÐÅÏ¢¡£
ÎÒÃÇÏÖÔÚµÄÏÞÁ÷¶¼Êǵ¥»úÏÞÁ÷£¬²¢Ã»ÓÐʵʩ·Ö²¼Ê½ÏÞÁ÷¡£
Íø¹Ø¼à¿ØÓëͳ¼Æ

API Íø¹ØÊÇÒ»¸ö´®Ðеĵ÷Óã¬Ã¿Ò»²½·¢ÉúµÄÒì³£¶¼Òª¼Ç¼ÏÂÀ´£¬Í³Ò»´æ´¢µ½Ò»¸öµØ·½£¬±ÈÈç Elasticsearch
ÖУ¬±ãÓÚºóÐø¶Ôµ÷ÓÃÒì³£µÄ·ÖÎö¡£
¼øÓÚ¹«Ë¾ Docker ÉêÇë¶¼ÊÇͳһ·ÖÅ䣬¶øÇÒ·ÖÅä֮ǰ Docker ÉÏÒѾ´æÔÚ 3 ¸ö Agent
ÁË£¬²»ÔÙÔÊÐíÔö¼Ó¡£
ÎÒÃÇ×Ô¼ºÊµÏÖÁËÒ»¸ö Agent ³ÌÐò£¬À´¸ºÔð²É¼¯·þÎñÆ÷ÉÏÃæµÄÈÕÖ¾Êä³ö£¬È»ºó·¢Ë͵½ Kafka ¼¯Èº£¬ÔÙͨ¹ý
Web ²éѯÏû·Ñµ½ Elasticsearch ÖС£ÏÖÔÚ×öµÄ×·×Ù¹¦ÄÜ»¹±È½Ï¼òµ¥£¬Õâ¿é»¹ÐèÒª¼ÌÐø·á¸»¡£
×ܽá
Íø¹Ø»ù±¾¹¦ÄÜÓÐͳһ½ÓÈë¡¢°²È«·À»¤¡¢ÐÒéÊÊÅäµÈ¡£ÕâÆªÎÄÕÂÀïÎÒÃDz¢Ã»Óн²ÈçºÎÀ´ÊµÏÖÕâЩ»ù±¾µÄ¹¦ÄÜ£¬ÒòΪÏÖÔÚÓкܶà³ÉÊìµÄ½â¾ö·½°¸¿ÉÒÔÖ±½ÓÄùýÀ´Ê¹Óᣠ|