Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
΢·þÎñ¼Ü¹¹µÄ·þÎñÓë·¢ÏÖ-Spring Cloud
 
À´Ô´£º¼òÊé ·¢²¼ÓÚ£º 2017-8-3
  11102  次浏览      29
 

1 ΪʲôÐèÒª·þÎñ·¢ÏÖ

¼òµ¥À´Ëµ£¬·þÎñ»¯µÄºËÐľÍÊǽ«´«Í³µÄһվʽӦÓøù¾ÝÒµÎñ²ð·Ö³ÉÒ»¸öÒ»¸öµÄ·þÎñ£¬¶øÎ¢·þÎñÔÚÕâ¸ö»ù´¡ÉÏÒª¸ü³¹µ×µØÈ¥ñîºÏ£¨²»ÔÙ¹²ÏíDB¡¢KV£¬È¥µôÖØÁ¿¼¶ESB£©£¬²¢ÇÒÇ¿µ÷DevOpsºÍ¿ìËÙÑÝ»¯¡£Õâ¾ÍÒªÇóÎÒÃDZØÐë²ÉÓÃÓëһվʽʱ´ú¡¢·ºSOAʱ´ú²»Í¬µÄ¼¼ÊõÕ»£¬¶øSpring Cloud¾ÍÊÇÆäÖеÄٮٮÕß¡£

DevOpsÊÇÓ¢ÎÄDevelopmentºÍOperationsµÄºÏÌ壬ËûÒªÇ󿪷¢¡¢²âÊÔ¡¢ÔËά½øÐÐÒ»Ì廯µÄºÏ×÷£¬½øÐиüС¡¢¸üƵ·±¡¢¸ü×Ô¶¯»¯µÄÓ¦Ó÷¢²¼£¬ÒÔ¼°Î§ÈÆÓ¦Óüܹ¹À´¹¹½¨»ù´¡ÉèÊ©µÄ¼Ü¹¹¡£Õâ¾ÍÒªÇóÓ¦Óóä·ÖµÄÄÚ¾Û£¬Ò²·½±ãÔËάºÍ¹ÜÀí¡£Õâ¸öÀíÄîÓë΢·þÎñÀíÄı¶øºÏ¡£

½ÓÏÂÀ´ÎÒÃÇ´Ó·þÎñ»¯¼Ü¹¹ÑݽøµÄ½Ç¶ÈÀ´¿´¿´ÎªÊ²Ã´Spring Cloud¸üÊÊӦ΢·þÎñ¼Ü¹¹¡£

1.1 ´ÓʹÓÃnginx˵Æð

×î³õµÄ·þÎñ»¯½â¾ö·½°¸ÊǸøÌṩÏàͬ·þÎñÌṩһ¸öͳһµÄÓòÃû£¬È»ºó·þÎñµ÷ÓÃÕßÏòÕâ¸öÓòÃû·¢ËÍHTTPÇëÇó£¬ÓÉNginx¸ºÔðÇëÇóµÄ·Ö·¢ºÍÌø×ª¡£NginxArch.png

ÕâÖּܹ¹´æÔںܶàÎÊÌâ:

Nginx×÷ΪÖмä²ã£¬ÔÚÅäÖÃÎļþÖÐñîºÏÁË·þÎñµ÷ÓõÄÂß¼­£¬ÕâÏ÷ÈõÁË΢·þÎñµÄÍêÕûÐÔ£¬Ò²Ê¹µÃNginxÔÚÒ»¶¨³Ì¶ÈÉϱä³ÉÁËÒ»¸öÖØÁ¿¼¶µÄESB¡£

·þÎñµÄÐÅÏ¢·ÖÉ¢ÔÚ¸÷¸öϵͳ£¬ÎÞ·¨Í³Ò»¹ÜÀíºÍά»¤¡£Ã¿Ò»´ÎµÄ·þÎñµ÷Óö¼ÊÇÒ»´Î³¢ÊÔ£¬·þÎñÏû·ÑÕß²¢²»ÖªµÀÓÐÄÄЩʵÀýÔÚ¸øËûÃÇÌṩ·þÎñ¡£Õâ²»·ûºÏDevOpsµÄÀíÄî¡£

ÎÞ·¨Ö±¹ÛµÄ¿´µ½·þÎñÌṩÕߺͷþÎñÏû·ÑÕßµ±Ç°µÄÔËÐÐ×´¿öºÍͨÐÅÆµÂÊ¡£ÕâÒ²²»·ûºÏDevOpsµÄÀíÄî¡£

Ïû·ÑÕßµÄʧ°ÜÖØ·¢£¬¸ºÔؾùºâµÈ¶¼Ã»ÓÐͳһ²ßÂÔ£¬Õâ¼Ó´óÁË¿ª·¢Ã¿¸ö·þÎñµÄÄѶȣ¬²»ÀûÓÚ¿ìËÙÑÝ»¯¡£

ΪÁ˽â¾öÉÏÃæµÄÎÊÌ⣬ÎÒÃÇÐèÒªÒ»¸öÏֳɵÄÖÐÐÄ×é¼þ¶Ô·þÎñ½øÐÐÕûºÏ£¬½«Ã¿¸ö·þÎñµÄÐÅÏ¢»ã×Ü£¬°üÀ¨·þÎñµÄ×é¼þÃû³Æ¡¢µØÖ·¡¢ÊýÁ¿µÈ¡£·þÎñµÄµ÷Ó÷½ÔÚÇëÇóijÏî·þÎñʱÊ×ÏÈͨ¹ýÖÐÐÄ×é¼þ»ñÈ¡ÌṩÕâÏî·þÎñµÄʵÀýµÄÐÅÏ¢£¨IP¡¢¶Ë¿ÚµÈ£©£¬ÔÙͨ¹ýĬÈÏ»ò×Ô¶¨ÒåµÄ²ßÂÔÑ¡Ôñ¸Ã·þÎñµÄijһÌṩÕßÖ±½Ó½øÐзÃÎÊ¡£ËùÒÔ£¬ÎÒÃÇÒýÈëÁËDubbo¡£

1.2 »ùÓÚDubboʵÏÖ΢·þÎñ

DubboÊǰ¢À↑ԴµÄÒ»¸öSOA·þÎñÖÎÀí½â¾ö·½°¸£¬Îĵµ·á¸»£¬ÔÚ¹úÄÚµÄʹÓöȷdz£¸ß¡£

ʹÓÃDubbo¹¹½¨µÄ΢·þÎñ£¬ÒѾ­¿ÉÒԱȽϺõؽâ¾öÉÏÃæÌáµ½µÄÎÊÌ⣺DubboArch.png

µ÷ÓÃÖмä²ã±ä³ÉÁË¿ÉÑ¡×é¼þ£¬Ïû·ÑÕß¿ÉÒÔÖ±½Ó·ÃÎÊ·þÎñÌṩÕß¡£

·þÎñÐÅÏ¢±»¼¯Öе½RegistryÖУ¬ÐγÉÁË·þÎñÖÎÀíµÄÖÐÐÄ×é¼þ¡£

ͨ¹ýMonitor¼à¿ØÏµÍ³£¬¿ÉÒÔÖ±¹ÛµØÕ¹Ê¾·þÎñµ÷ÓõÄͳ¼ÆÐÅÏ¢¡£

Consumer¿ÉÒÔ½øÐиºÔؾùºâ¡¢·þÎñ½µ¼¶µÄÑ¡Ôñ¡£

µ«ÊǶÔÓÚ΢·þÎñ¼Ü¹¹¶øÑÔ£¬DubboÒ²²¢²»ÊÇʮȫʮÃÀµÄ£º

RegistryÑÏÖØÒÀÀµµÚÈý·½×é¼þ£¨zookeeper»òÕßredis£©£¬µ±ÕâЩ×é¼þ³öÏÖÎÊÌâʱ£¬·þÎñµ÷Óúܿì¾Í»áÖжϡ£

DUBBOÖ»Ö§³ÖRPCµ÷Óá£Ê¹µÃ·þÎñÌṩ·½Óëµ÷Ó÷½ÔÚ´úÂëÉϲúÉúÁËÇ¿ÒÀÀµ£¬·þÎñÌṩÕßÐèÒª²»¶Ï½«°üº¬¹«¹²´úÂëµÄjar°ü´ò°ü³öÀ´¹©Ïû·ÑÕßʹÓá£Ò»µ©´ò°ü³öÏÖÎÊÌ⣬¾Í»áµ¼Ö·þÎñµ÷Óóö´í¡£

×îÎªÖØÒªµÄÊÇ£¬DUBBOÏÖÔÚÒѾ­Í£Ö¹Î¬»¤ÁË£¬¶ÔÓÚ¼¼Êõ·¢Õ¹µÄÐÂÐèÇó£¬ÐèÒªÓÉ¿ª·¢Õß×ÔÐÐÍØÕ¹Éý¼¶¡£Õâ¶ÔÓںܶàÏëÒª²ÉÓÃ΢·þÎñ¼Ü¹¹µÄÖÐСÈí¼þ×éÖ¯£¬ÏÔÈ»ÊDz»Ì«ºÏÊʵġ£

ĿǰGithubÉçÇøÉÏÓÐÒ»¸öDUBBOµÄÉý¼¶°æ£¬½ÐDUBBOX£¬ÌṩÁ˸ü¸ßЧµÄRPCÐòÁл¯·½Ê½ºÍRESTµ÷Ó÷½Ê½¡£µ«ÊǸÃÏîĿҲ»ù±¾Í£Ö¹Î¬»¤ÁË¡£

1.3 еÄÑ¡Ôñ¡ª¡ªSpring Cloud

×÷ΪÐÂÒ»´úµÄ·þÎñ¿ò¼Ü£¬Spring CloudÌá³öµÄ¿ÚºÅÊÇ¿ª·¢¡°ÃæÏòÔÆ»·¾³µÄÓ¦ÓóÌÐò¡±£¬ËüΪ΢·þÎñ¼Ü¹¹ÌṩÁ˸ü¼ÓÈ«ÃæµÄ¼¼ÊõÖ§³Ö¡£

½áºÏÎÒÃÇÒ»¿ªÊ¼Ìáµ½µÄ΢·þÎñµÄËßÇó£¬ÎÒÃǰÑSpring CloudÓëDUBBO½øÐÐÒ»·¬¶Ô±È£º

Spring CloudÅׯúÁËDubboµÄRPCͨÐÅ£¬²ÉÓõÄÊÇ»ùÓÚHTTPµÄREST·½Ê½¡£ÑϸñÀ´Ëµ£¬ÕâÁ½ÖÖ·½Ê½¸÷ÓÐÓÅÁÓ¡£ËäÈ»´ÓÒ»¶¨³Ì¶ÈÉÏÀ´Ëµ£¬ºóÕßÎþÉüÁË·þÎñµ÷ÓõÄÐÔÄÜ£¬µ«Ò²±ÜÃâÁËÉÏÃæÌáµ½µÄÔ­ÉúRPC´øÀ´µÄÎÊÌâ¡£¶øÇÒRESTÏà±ÈRPC¸üΪÁé»î£¬·þÎñÌṩ·½ºÍµ÷Ó÷½µÄÒÀÀµÖ»ÒÀ¿¿Ò»Ö½ÆõÔ¼£¬²»´æÔÚ´úÂë¼¶±ðµÄÇ¿ÒÀÀµ£¬ÕâÔÚÇ¿µ÷¿ìËÙÑÝ»¯µÄ΢·þÎñ»·¾³Ï£¬ÏԵøü¼ÓºÏÊÊ¡£

ºÜÃ÷ÏÔ£¬Spring CloudµÄ¹¦ÄܱÈDUBBO¸ü¼ÓÇ¿´ó£¬º­¸ÇÃæ¸ü¹ã£¬¶øÇÒ×÷ΪSpringµÄÈ­Í·ÏîÄ¿£¬ËüÒ²Äܹ»ÓëSpring Framework¡¢Spring Boot¡¢Spring Data¡¢Spring BatchµÈÆäËûSpringÏîÄ¿ÍêÃÀÈںϣ¬ÕâЩ¶ÔÓÚ΢·þÎñ¶øÑÔÊÇÖÁ¹ØÖØÒªµÄ¡£Ç°ÃæÌáµ½£¬Î¢·þÎñ±³ºóÒ»¸öÖØÒªµÄÀíÄî¾ÍÊdzÖÐø¼¯³É¡¢¿ìËÙ½»¸¶£¬¶øÔÚ·þÎñÄÚ²¿Ê¹ÓÃÒ»¸öͳһµÄ¼¼Êõ¿ò¼Ü£¬ÏÔÈ»±È°Ñ·ÖÉ¢µÄ¼¼Êõ×éºÏµ½Ò»Æð¸üÓÐЧÂÊ¡£¸üÖØÒªµÄÊÇ£¬Ïà±ÈÓÚDubbo£¬ËüÊÇÒ»¸öÕýÔÚ³ÖÐøÎ¬»¤µÄ¡¢ÉçÇø¸ü¼Ó»ðÈȵĿªÔ´ÏîÄ¿£¬Õâ¾Í±£Ö¤Ê¹ÓÃËü¹¹½¨µÄϵͳ£¬¿ÉÒÔ³ÖÐøµØµÃµ½¿ªÔ´Á¦Á¿µÄÖ§³Ö¡£

2. Spring Cloud Netflix ×é¼þ

NetflixºÍSpring CloudÊÇʲô¹ØÏµÄØ£¿NetflixÊÇÒ»¼Ò³É¹¦Êµ¼ù΢·þÎñ¼Ü¹¹µÄ»¥ÁªÍø¹«Ë¾£¬¼¸Äêǰ£¬Netflix¾Í°ÑËüµÄ¼¸ºõÕû¸ö΢·þÎñ¿ò¼ÜÕ»¿ªÔ´¹±Ï׸øÁËÉçÇø¡£Spring±³ºóµÄPivotalÔÚ2015ÄêÍÆ³öµÄSpring Cloud¿ªÔ´²úÆ·£¬Ö÷Òª¶ÔNetflix¿ªÔ´×é¼þµÄ½øÒ»²½·â×°£¬·½±ãSpring¿ª·¢ÈËÔ±¹¹½¨Î¢·þÎñ»ù´¡¿ò¼Ü¡£

¶ÔÓÚ΢·þÎñµÄÖÎÀí¶øÑÔ£¬ºËÐľÍÊÇ·þÎñµÄ×¢²áºÍ·¢ÏÖ¡£ËùÒÔÑ¡ÔñÄĸö×é¼þ£¬ºÜ´ó³Ì¶ÈÉÏÒª¿´Ëü¶ÔÓÚ·þÎñ×¢²áÓë·¢ÏֵĽâ¾ö·½°¸¡£ÔÚÕâ¸öÁìÓò£¬¿ªÔ´¼Ü¹¹ºÜ¶à£¬×î³£¼ûµÄÊÇZookeeper£¬µ«Õâ²¢²»ÊÇÒ»¸ö×î¼ÑÑ¡Ôñ¡£

ÔÚ·Ö²¼Ê½ÏµÍ³ÁìÓòÓиöÖøÃûµÄCAP¶¨Àí£ºC¡ª¡ªÊý¾ÝÒ»ÖÂÐÔ£¬A¡ª¡ª·þÎñ¿ÉÓÃÐÔ£¬P¡ª¡ª·þÎñ¶ÔÍøÂç·ÖÇø¹ÊÕϵÄÈÝ´íÐÔ¡£ÕâÈý¸öÌØÐÔÔÚÈκηֲ¼Ê½ÏµÍ³Öв»ÄÜͬʱÂú×㣬×î¶àͬʱÂú×ãÁ½¸ö¡£

ZookeeperÊÇÖøÃûHadoopµÄÒ»¸ö×ÓÏîÄ¿£¬ºÜ¶à³¡¾°ÏÂZookeeperÒ²×÷ΪService·¢ÏÖ·þÎñ½â¾ö·½°¸¡£Zookeeper±£Ö¤µÄÊÇCP£¬¼´ÈκÎʱ¿Ì¶Ô

ZookeeperµÄ·ÃÎÊÇëÇóÄܵõ½Ò»ÖµÄÊý¾Ý½á¹û£¬Í¬Ê±ÏµÍ³¶ÔÍøÂç·Ö¸î¾ß±¸ÈÝ´íÐÔ£¬µ«ÊÇËü²»Äܱ£Ö¤Ã¿´Î·þÎñÇëÇóµÄ¿ÉÓÃÐÔ¡£´Óʵ¼ÊÇé¿öÀ´·ÖÎö£¬ÔÚʹÓÃZookeeper»ñÈ¡·þÎñÁбíʱ£¬Èç¹ûzookeeperÕýÔÚÑ¡Ö÷£¬»òÕßZookeeper¼¯ÈºÖаëÊýÒÔÉÏ»úÆ÷²»¿ÉÓã¬ÄÇô½«¾ÍÎÞ·¨»ñµÃÊý¾ÝÁË¡£ËùÒÔ˵£¬Zookeeper²»Äܱ£Ö¤·þÎñ¿ÉÓÃÐÔ¡£

³ÏÈ»£¬¶ÔÓÚ´ó¶àÊý·Ö²¼Ê½»·¾³£¬ÓÈÆäÊÇÉæ¼°µ½Êý¾Ý´æ´¢µÄ³¡¾°£¬Êý¾ÝÒ»ÖÂÐÔÓ¦¸ÃÊÇÊ×Ïȱ»±£Ö¤µÄ£¬ÕâÒ²ÊÇzookeeperÉè¼Æ³ÉCPµÄÔ­Òò¡£µ«ÊǶÔÓÚ·þÎñ·¢ÏÖ³¡¾°À´Ëµ£¬Çé¿ö¾Í²»Ì«Ò»ÑùÁË£ºÕë¶Ôͬһ¸ö·þÎñ£¬¼´Ê¹×¢²áÖÐÐĵIJ»Í¬½Úµã±£´æµÄ·þÎñÌṩÕßÐÅÏ¢²»¾¡Ïàͬ£¬Ò²²¢²»»áÔì³ÉÔÖÄÑÐԵĺó¹û¡£ÒòΪ¶ÔÓÚ·þÎñÏû·ÑÕßÀ´Ëµ£¬ÄÜÏû·Ñ²ÅÊÇ×îÖØÒªµÄ¡ª¡ªÄõ½¿ÉÄܲ»ÕýÈ·µÄ·þÎñʵÀýÐÅÏ¢ºó³¢ÊÔÏû·Ñһϣ¬Ò²ºÃ¹ýÒòΪÎÞ·¨»ñȡʵÀýÐÅÏ¢¶ø²»È¥Ïû·Ñ¡£ËùÒÔ£¬¶ÔÓÚ·þÎñ·¢ÏÖ¶øÑÔ£¬¿ÉÓÃÐÔ±ÈÊý¾ÝÒ»ÖÂÐÔ¸ü¼ÓÖØÒª¡ª¡ªAPʤ¹ýCP¡£¶øSpring Cloud NetflixÔÚÉè¼ÆEurekaʱ×ñÊØµÄ¾ÍÊÇAPÔ­Ôò¡£

Eureka±¾ÉíÊÇNetflix¿ªÔ´µÄÒ»¿îÌṩ·þÎñ×¢²áºÍ·¢ÏֵIJúÆ·£¬²¢ÇÒÌṩÁËÏàÓ¦µÄJava·â×°¡£ÔÚËüµÄʵÏÖÖУ¬½ÚµãÖ®¼äÊÇÏ໥ƽµÈµÄ£¬²¿·Ö×¢²áÖÐÐĵĽڵã¹ÒµôÒ²²»»á¶Ô¼¯ÈºÔì³ÉÓ°Ï죬¼´Ê¹¼¯ÈºÖ»Ê£Ò»¸ö½Úµã´æ»î£¬Ò²¿ÉÒÔÕý³£Ìṩ·¢ÏÖ·þÎñ¡£ÄÄÅÂÊÇËùÓеķþÎñ×¢²á½Úµã¶¼¹ÒÁË£¬Eureka ClientsÉÏÒ²»á»º´æ·þÎñµ÷ÓõÄÐÅÏ¢¡£Õâ¾Í±£Ö¤ÁËÎÒÃÇ΢·þÎñÖ®¼äµÄ»¥Ïàµ÷ÓÃÊÇ×ã¹»½¡×³µÄ¡£

³ý´ËÖ®Í⣬Spring Cloud Netflix±³ºóÇ¿´óµÄ¿ªÔ´Á¦Á¿£¬Ò²´ÙʹÎÒÃÇÑ¡ÔñÁËSpring Cloud Netflix£º

ǰÎÄÌáµ½¹ý£¬Spring CloudµÄÉçÇøÊ®·Ö»îÔ¾£¬ÆäÔÚÒµ½çµÄÓ¦ÓÃҲʮ·Ö¹ã·º£¨ÓÈÆäÊǹúÍ⣩£¬¶øÇÒÕû¸ö¿ò¼ÜÒ²¾­ÊÜסÁËNetflixÑÏ¿áÉú²ú»·¾³µÄ¿¼Ñé¡£

³ýÁË·þÎñ×¢²áºÍ·¢ÏÖ£¬Spring Cloud NetflixµÄÆäËû¹¦ÄÜҲʮ·ÖÇ¿´ó£¬°üÀ¨Ribbon£¬hystrix£¬Feign£¬ZuulµÈ×é¼þ£¬½áºÏµ½Ò»Æð£¬È÷þÎñµÄµ÷Óá¢Â·ÓÉÒ²±äµÃÒì³£ÈÝÒס£

Spring Cloud Netflix×÷ΪSpringµÄÖØÁ¿¼¶ÕûºÏ¿ò¼Ü£¬Ê¹ÓÃËüÒ²Òâζ×ÅÎÒÃÇÄÜ´ÓSpring»ñÈ¡µ½¾Þ´óµÄ±ãÀû¡£Spring CloudµÄÆäËû×ÓÏîÄ¿£¬±ÈÈçSpring Cloud Stream¡¢Spring Cloud ConfigµÈµÈ£¬¶¼ÎªÎ¢·þÎñµÄ¸÷ÖÖÐèÇóÌṩÁËһվʽµÄ½â¾ö·½°¸¡£

3. Spring Cloud ·þÎñ·¢ÏÖ

Spring Cloud NetflixµÄºËÐÄÊÇÓÃÓÚ·þÎñ×¢²áÓë·¢ÏÖµÄEureka£¬½ÓÏÂÀ´ÎÒÃǽ«ÒÔEurekaΪÏßË÷£¬½éÉÜEureka¡¢Ribbon¡¢Hystrix¡¢FeignÕâЩSpring Cloud NetflixÖ÷Òª×é¼þ¡£

3.1 ·þÎñ×¢²áÓë·¢ÏÖ¡ª¡ªEureka

EurekaÕâ¸ö´ÊÀ´Ô´ÓÚ¹ÅÏ£À°ÓÒâΪ¡°ÎÒÕÒµ½ÁË£¡ÎÒ·¢ÏÖÁË£¡¡±£¬¾Ý´«£¬°¢»ùÃ×µÂÔÚÏ´Ôèʱ·¢ÏÖ¸¡Á¦Ô­Àí£¬¸ßÐ˵ÃÀ´²»¼°´©ÉÏ¿ã×Ó£¬Åܵ½½ÖÉÏ´óº°£º¡°Eureka(ÎÒÕÒµ½ÁË)£¡"¡£

EurekaÓɶà¸öinstance(·þÎñʵÀý)×é³É£¬ÕâЩ·þÎñʵÀý¿ÉÒÔ·ÖΪÁ½ÖÖ£ºEureka ServerºÍEureka Client¡£ÎªÁ˱ãÓÚÀí½â£¬ÎÒÃǽ«Eureka clientÔÙ·ÖΪService ProviderºÍService Consumer¡£ÈçÏÂͼËùʾ£ºEurekaRole.png

Eureka Server£º·þÎñµÄ×¢²áÖÐÐÄ£¬¸ºÔðά»¤×¢²áµÄ·þÎñÁÐ±í¡£

Service Provider£º·þÎñÌṩ·½£¬×÷Ϊһ¸öEureka Client£¬ÏòEureka Server×ö·þÎñ×¢²á¡¢ÐøÔ¼ºÍÏÂÏߵȲÙ×÷£¬×¢²áµÄÖ÷ÒªÊý¾Ý°üÀ¨·þÎñÃû¡¢»úÆ÷ip¡¢¶Ë¿ÚºÅ¡¢ÓòÃûµÈµÈ¡£

Service Consumer£º·þÎñÏû·Ñ·½£¬×÷Ϊһ¸öEureka Client£¬ÏòEureka Server»ñÈ¡Service ProviderµÄ×¢²áÐÅÏ¢£¬²¢Í¨¹ýÔ¶³Ìµ÷ÓÃÓëService Provider½øÐÐͨÐÅ¡£

Service ProviderºÍService Consumer²»ÊÇÑϸñµÄ¸ÅÄService ConsumerÒ²¿ÉÒÔËæÊ±ÏòEureka Server×¢²á£¬À´ÈÃ×Ô¼º±ä³ÉÒ»¸öService Provider¡£

Spring CloudÕë¶Ô·þÎñ×¢²áÓë·¢ÏÖ£¬½øÐÐÁËÒ»²ã³éÏ󣬲¢ÌṩÁËÈýÖÖʵÏÖ£ºEureka¡¢Consul¡¢Zookeeper¡£Ä¿Ç°Ö§³ÖµÃ×îºÃµÄ¾ÍÊÇEureka£¬Æä´ÎÊÇConsul£¬×îºóÊÇZookeeper¡£

3.1.1 Eureka Server

Eureka Server×÷Ϊһ¸ö¶ÀÁ¢µÄ²¿Êðµ¥Ôª£¬ÒÔREST APIµÄÐÎʽΪ·þÎñʵÀýÌṩÁË×¢²á¡¢¹ÜÀíºÍ²éѯµÈ²Ù×÷¡£Í¬Ê±£¬Eureka ServerҲΪÎÒÃÇÌṩÁË¿ÉÊÓ»¯µÄ¼à¿ØÒ³Ã棬¿ÉÒÔÖ±¹ÛµØ¿´µ½¸÷¸öEureka Serverµ±Ç°µÄÔËÐÐ״̬ºÍËùÓÐÒÑ×¢²á·þÎñµÄÇé¿ö¡£

3.1.1.1 Eureka ServerµÄ¸ß¿ÉÓü¯Èº

Eureka Server¿ÉÒÔÔËÐжà¸öʵÀýÀ´¹¹½¨¼¯Èº£¬½â¾öµ¥µãÎÊÌ⣬µ«²»Í¬ÓÚZooKeeperµÄÑ¡¾ÙleaderµÄ¹ý³Ì£¬Eureka Server²ÉÓõÄÊÇPeer to Peer¶ÔµÈͨÐÅ¡£ÕâÊÇÒ»ÖÖÈ¥ÖÐÐÄ»¯µÄ¼Ü¹¹£¬ÎÞmaster/slaveÇø·Ö£¬Ã¿Ò»¸öPeer¶¼ÊǶԵȵġ£ÔÚÕâÖּܹ¹ÖУ¬½Úµãͨ¹ý±Ë´Ë»¥Ïà×¢²áÀ´Ìá¸ß¿ÉÓÃÐÔ£¬Ã¿¸ö½ÚµãÐèÒªÌí¼ÓÒ»¸ö»ò¶à¸öÓÐЧµÄserviceUrlÖ¸ÏòÆäËû½Úµã¡£Ã¿¸ö½Úµã¶¼¿É±»ÊÓΪÆäËû½ÚµãµÄ¸±±¾¡£

Èç¹ûij̨Eureka Serverå´»ú£¬Eureka ClientµÄÇëÇó»á×Ô¶¯Çл»µ½ÐµÄEureka Server½Úµã£¬µ±å´»úµÄ·þÎñÆ÷ÖØÐ»ָ´ºó£¬Eureka»áÔٴν«ÆäÄÉÈëµ½·þÎñÆ÷¼¯Èº¹ÜÀíÖ®ÖС£µ±½Úµã¿ªÊ¼½ÓÊܿͻ§¶ËÇëÇóʱ£¬ËùÓеIJÙ×÷¶¼»á½øÐÐreplicateToPeer£¨½Úµã¼ä¸´ÖÆ£©²Ù×÷£¬½«ÇëÇó¸´ÖƵ½ÆäËûEureka Serverµ±Ç°ËùÖªµÄËùÓнڵãÖС£

Ò»¸öеÄEureka Server½ÚµãÆô¶¯ºó£¬»áÊ×Ïȳ¢ÊÔ´ÓÁÚ½ü½Úµã»ñÈ¡ËùÓÐʵÀý×¢²á±íÐÅÏ¢£¬Íê³É³õʼ»¯¡£Eureka Serverͨ¹ýgetEurekaServiceUrls()·½·¨»ñÈ¡ËùÓеĽڵ㣬²¢ÇÒ»áͨ¹ýÐÄÌøÐøÔ¼µÄ·½Ê½¶¨ÆÚ¸üС£Ä¬ÈÏÅäÖÃÏ£¬Èç¹ûEureka ServerÔÚÒ»¶¨Ê±¼äÄÚûÓнÓÊÕµ½Ä³¸ö·þÎñʵÀýµÄÐÄÌø£¬Eureka Server½«»á×¢Ïú¸ÃʵÀý£¨Ä¬ÈÏΪ90Ã룬ͨ¹ýeureka.instance.lease-expiration-duration-in-secondsÅäÖã©¡£µ±Eureka Server½ÚµãÔÚ¶Ìʱ¼äÄÚ¶ªÊ§¹ý¶àµÄÐÄÌøÊ±£¨±ÈÈç·¢ÉúÁËÍøÂç·ÖÇø¹ÊÕÏ£©£¬ÄÇôÕâ¸ö½Úµã¾Í»á½øÈë×ÔÎÒ±£»¤Ä£Ê½¡£ÏÂͼΪEureka¹ÙÍøµÄ¼Ü¹¹Í¼

ʲôÊÇ×ÔÎÒ±£»¤Ä£Ê½£¿Ä¬ÈÏÅäÖÃÏ£¬Èç¹ûEureka Serverÿ·ÖÖÓÊÕµ½ÐÄÌøÐøÔ¼µÄÊýÁ¿µÍÓÚÒ»¸öãÐÖµ£¨instanceµÄÊýÁ¿*(60/ÿ¸öinstanceµÄÐÄÌø¼ä¸ôÃëÊý)*×ÔÎÒ±£»¤ÏµÊý£©£¬¾Í»á´¥·¢×ÔÎÒ±£»¤¡£ÔÚ×ÔÎÒ±£»¤Ä£Ê½ÖУ¬Eureka Server»á±£»¤·þÎñ×¢²á±íÖеÄÐÅÏ¢£¬²»ÔÙ×¢ÏúÈκηþÎñʵÀý¡£µ±ËüÊÕµ½µÄÐÄÌøÊýÖØÐ»ָ´µ½ãÐÖµÒÔÉÏʱ£¬¸ÃEureka Server½Úµã¾Í»á×Ô¶¯Í˳ö×ÔÎÒ±£»¤Ä£Ê½¡£ËüµÄÉè¼ÆÕÜÑ§Ç°ÃæÌáµ½¹ý£¬ÄǾÍÊÇÄþ¿É±£Áô´íÎóµÄ·þÎñ×¢²áÐÅÏ¢£¬Ò²²»Ã¤Ä¿×¢ÏúÈκοÉÄܽ¡¿µµÄ·þÎñʵÀý¡£¸Ãģʽ¿ÉÒÔͨ¹ýeureka.server.enable-self-preservation = falseÀ´½ûÓã¬Í¬Ê±eureka.instance.lease-renewal-interval-in-seconds¿ÉÒÔÓÃÀ´¸ü¸ÄÐÄÌø¼ä¸ô£¬eureka.server.renewal-percent-threshold¿ÉÒÔÓÃÀ´ÐÞ¸Ä×ÔÎÒ±£»¤ÏµÊý£¨Ä¬ÈÏ0.85£©¡£

3.1.1.2 Eureka ServerµÄRegion¡¢Zone

EurekaµÄ¹Ù·½Îĵµ¶ÔRegin¡¢Zone¼¸ºõûÓÐÌá¼°£¬ÓÉÓÚ¸ÅÄî³éÏó£¬ÐÂÊÖºÜÄÑÀí½â¡£Òò´Ë£¬ÎÒÃÇÏÈÀ´Á˽âÒ»ÏÂRegion¡¢Zone¡¢Eureka¼¯ÈºÈýÕߵĹØÏµ£¬ÈçÏÂͼËùʾ£º

regionºÍzone£¨»òÕßAvailability Zone£©¾ùÊÇAWSµÄ¸ÅÄî¡£ÔÚ·ÇAWS»·¾³Ï£¬ÎÒÃÇ¿ÉÒÔÏȼòµ¥µØ½«regionÀí½âΪEureka¼¯Èº£¬zoneÀí½â³É»ú·¿¡£ÉÏͼ¾Í¿ÉÒÔÀí½âΪһ¸öEureka¼¯Èº±»²¿ÊðÔÚÁËzone1»ú·¿ºÍzone2»ú·¿ÖС£

3.1.2 Service Provider

3.1.2.1 ·þÎñ×¢²á

Service Provider±¾ÖÊÉÏÊÇÒ»¸öEureka Client¡£ËüÆô¶¯Ê±£¬»áµ÷Ó÷þÎñ×¢²á·½·¨£¬ÏòEureka Server×¢²á×Ô¼ºµÄÐÅÏ¢¡£Eureka Server»áά»¤Ò»¸öÒÑ×¢²á·þÎñµÄÁÐ±í£¬Õâ¸öÁбíΪһ¸öǶÌ×µÄhash map£º

µÚÒ»²ã£¬application nameºÍ¶ÔÓ¦µÄ·þÎñʵÀý¡£

µÚ¶þ²ã£¬·þÎñʵÀý¼°Æä¶ÔÓ¦µÄ×¢²áÐÅÏ¢£¬°üÀ¨IP£¬¶Ë¿ÚºÅµÈ¡£

µ±ÊµÀý״̬·¢Éú±ä»¯Ê±£¨Èç×ÔÉí¼ì²âÈÏΪDownµÄʱºò£©£¬Ò²»áÏòEureka Server¸üÐÂ×Ô¼ºµÄ·þÎñ״̬£¬Í¬Ê±ÓÃreplicateToPeers()ÏòÆäËüEureka Server½Úµã×ö״̬ͬ²½¡£

![Uploading EurekaServerEvict_655129.png . . .]

3.1.2.2 ÐøÔ¼ÓëÌÞ³ý

Ç°ÃæÌáµ½¹ý£¬·þÎñʵÀýÆô¶¯ºó£¬»áÖÜÆÚÐÔµØÏòEureka Server·¢ËÍÐÄÌøÒÔÐøÔ¼×Ô¼ºµÄÐÅÏ¢£¬±ÜÃâ×Ô¼ºµÄ×¢²áÐÅÏ¢±»ÌÞ³ý¡£ÐøÔ¼µÄ·½Ê½Óë·þÎñ×¢²á»ù±¾Ò»Ö£ºÊ×ÏȸüÐÂ×ÔÉí״̬£¬ÔÙͬ²½µ½ÆäËüPeer¡£

Èç¹ûEureka ServerÔÚÒ»¶Îʱ¼äÄÚûÓнÓÊÕµ½Ä³¸ö΢·þÎñ½ÚµãµÄÐÄÌø£¬Eureka Server½«»á×¢Ïú¸Ã΢·þÎñ½Úµã£¨×ÔÎÒ±£»¤Ä£Ê½³ýÍ⣩¡£

3.1.3 Service Consumer

Service Consumer±¾ÖÊÉÏÒ²ÊÇÒ»¸öEureka Client£¨ËüÒ²»áÏòEureka Server×¢²á£¬Ö»ÊÇÕâ¸ö×¢²áÐÅÏ¢Î޹ؽôÒª°ÕÁË£©¡£ËüÆô¶¯ºó£¬»á´ÓEureka ServerÉÏ»ñÈ¡ËùÓÐʵÀýµÄ×¢²áÐÅÏ¢£¬°üÀ¨IPµØÖ·¡¢¶Ë¿ÚµÈ£¬²¢»º´æµ½±¾µØ¡£ÕâЩÐÅϢĬÈÏÿ30Ãë¸üÐÂÒ»´Î¡£Ç°ÎÄÌáµ½¹ý£¬Èç¹ûÓëEureka ServerͨÐÅÖжϣ¬Service ConsumerÈÔÈ»¿ÉÒÔͨ¹ý±¾µØ»º´æÓëService ProviderͨÐÅ¡£

ʵ¼Ê¿ª·¢EurekaµÄ¹ý³ÌÖУ¬ÓÐʱ»áÓö¼ûService Consumer»ñÈ¡µ½Server ProviderµÄÐÅÏ¢ÓÐÑÓ³Ù£¬ÔÚEureka WikiÖÐÓÐÕâôһ¶Î»°:

All operations from Eureka client may take some time to reflect in the Eureka servers and subsequently in other Eureka clients. This is because of the caching of the payload on the eureka server which is refreshed periodically to reflect new information. Eureka clients also fetch deltas periodically. Hence, it may take up to 2 mins for changes to propagate to all Eureka clients.

×îºóÒ»¾ä»°Ìáµ½£¬·þÎñ¶ËµÄ¸ü¸Ä¿ÉÄÜÐèÒª2·ÖÖÓ²ÅÄÜ´«²¥µ½ËùÓпͻ§¶Ë£¬ÖÁÓÚÔ­Òò²¢Ã»ÓнéÉÜ¡£ÕâÊÇÒòΪEurekaÓÐÈý´¦»º´æºÍÒ»´¦ÑÓ³ÙÔì³ÉµÄ¡£

Eureka Server¶Ô×¢²áÁÐ±í½øÐлº´æ£¬Ä¬ÈÏʱ¼äΪ30s¡£

Eureka Client¶Ô»ñÈ¡µ½µÄ×¢²áÐÅÏ¢½øÐлº´æ£¬Ä¬ÈÏʱ¼äΪ30s¡£

Ribbon»á´ÓÉÏÃæÌáµ½µÄEureka Client»ñÈ¡·þÎñÁÐ±í£¬½«¸ºÔؾùºâºóµÄ½á¹û»º´æ30s¡£

Èç¹û²»ÊÇÔÚSpring Cloud»·¾³ÏÂʹÓÃÕâЩ×é¼þ(Eureka, Ribbon)£¬·þÎñÆô¶¯ºó²¢²»»áÂíÉÏÏòEureka×¢²á£¬¶øÊÇÐèÒªµÈµ½µÚÒ»´Î·¢ËÍÐÄÌøÇëÇóʱ²Å»á×¢²á¡£ÐÄÌøÇëÇóµÄ·¢Ëͼä¸ôĬÈÏÊÇ30s¡£Spring Cloud¶Ô´Ë×öÁËÐ޸쬷þÎñÆô¶¯ºó»áÂíÉÏ×¢²á¡£

»ùÓÚService Consumer»ñÈ¡µ½µÄ·þÎñʵÀýÐÅÏ¢£¬ÎÒÃǾͿÉÒÔ½øÐзþÎñµ÷ÓÃÁË¡£¶øSpring CloudҲΪService ConsumerÌṩÁ˷ḻµÄ·þÎñµ÷Óù¤¾ß£º

Ribbon£¬ÊµÏÖ¿Í»§¶ËµÄ¸ºÔؾùºâ¡£

Hystrix£¬¶Ï·Æ÷¡£

Feign£¬RESTful Web Service¿Í»§¶Ë£¬ÕûºÏÁËRibbonºÍHystrix¡£

½ÓÏÂÀ´ÎÒÃǾÍÒ»Ò»½éÉÜ¡£

3.2 ·þÎñµ÷Óö˸ºÔؾùºâ¡ª¡ªRibbon

RibbonÊÇNetflix·¢²¼µÄ¿ªÔ´ÏîÄ¿£¬Ö÷Òª¹¦ÄÜÊÇΪREST¿Í»§¶ËʵÏÖ¸ºÔؾùºâ¡£ËüÖ÷Òª°üÀ¨Áù¸ö×é¼þ£º

ServerList£¬¸ºÔؾùºâʹÓõķþÎñÆ÷ÁÐ±í¡£Õâ¸öÁбí»á»º´æÔÚ¸ºÔؾùºâÆ÷ÖУ¬²¢¶¨ÆÚ¸üС£µ±RibbonÓëEureka½áºÏʹÓÃʱ£¬ServerListµÄʵÏÖÀà¾ÍÊÇDiscoveryEnabledNIWSServerList£¬Ëü»á±£´æEureka ServerÖÐ×¢²áµÄ·þÎñʵÀý±í¡£

ServerListFilter£¬·þÎñÆ÷Áбí¹ýÂËÆ÷¡£ÕâÊÇÒ»¸ö½Ó¿Ú£¬Ö÷ÒªÓÃÓÚ¶ÔService Consumer»ñÈ¡µ½µÄ·þÎñÆ÷ÁÐ±í½øÐÐÔ¤¹ýÂË£¬¹ýÂ˵Ľá¹ûÒ²ÊÇServerList¡£RibbonÌṩÁ˶àÖÖ¹ýÂËÆ÷µÄʵÏÖ¡£

IPing£¬Ì½²â·þÎñʵÀýÊÇ·ñ´æ»îµÄ²ßÂÔ¡£

IRule£¬¸ºÔؾùºâ²ßÂÔ£¬ÆäʵÏÖÀà±íÊöµÄ²ßÂÔ°üÀ¨£ºÂÖѯ¡¢Ëæ»ú¡¢¸ù¾ÝÏìӦʱ¼ä¼ÓȨµÈ¡£

ÎÒÃÇÒ²¿ÉÒÔ×Ô¼º¶¨Òå¸ºÔØ¾ùºâ²ßÂÔ£¬±ÈÈçÎÒÃǾÍÀûÓÃ×Ô¼ºÊµÏֵIJßÂÔ£¬ÊµÏÖÁË·þÎñµÄ°æ±¾¿ØÖƺÍÖ±Á¬ÅäÖá£ÊµÏÖºÃÖ®ºó£¬½«ÊµÏÖÀàÖØÐÂ×¢Èëµ½RibbonÖм´¿É¡£

ILoadBalancer£¬¸ºÔؾùºâÆ÷¡£ÕâÒ²ÊÇÒ»¸ö½Ó¿Ú£¬RibbonΪÆäÌṩÁ˶à¸öʵÏÖ£¬±ÈÈçZoneAwareLoadBalancer¡£¶øÉϲã´úÂëͨ¹ýµ÷ÓÃÆäAPI½øÐзþÎñµ÷ÓõĸºÔؾùºâÑ¡Ôñ¡£Ò»°ãILoadBalancerµÄʵÏÖÀàÖлáÒýÓÃÒ»¸öIRule¡£

RestClient£¬·þÎñµ÷ÓÃÆ÷¡£¹ËÃû˼Ò壬Õâ¾ÍÊǸºÔؾùºâºó£¬RibbonÏòService Provider·¢ÆðRESTÇëÇóµÄ¹¤¾ß¡£

Ribbon¹¤×÷ʱ»á×öËļþÊÂÇ飺

ÓÅÏÈÑ¡ÔñÔÚͬһ¸öZoneÇÒ¸ºÔؽÏÉÙµÄEureka Server£»

¶¨ÆÚ´ÓEureka¸üв¢¹ýÂË·þÎñʵÀýÁÐ±í£»

¸ù¾ÝÓû§Ö¸¶¨µÄ²ßÂÔ£¬ÔÚ´ÓServerÈ¡µ½µÄ·þÎñ×¢²áÁбíÖÐÑ¡ÔñÒ»¸öʵÀýµÄµØÖ·£»

ͨ¹ýRestClient½øÐзþÎñµ÷Óá£

3.3 ·þÎñµ÷ÓöËÈÛ¶Ï¡ª¡ªHystrix

Netflix´´½¨ÁËÒ»¸öÃûΪHystrixµÄ¿â,ʵÏÖÁ˶Ï·Æ÷µÄģʽ¡£¡°¶Ï·Æ÷¡±±¾ÉíÊÇÒ»ÖÖ¿ª¹Ø×°Ö㬵±Ä³¸ö·þÎñµ¥Ôª·¢Éú¹ÊÕÏÖ®ºó£¬Í¨¹ý¶Ï·Æ÷µÄ¹ÊÕÏ¼à¿Ø£¨ÀàËÆÈ۶ϱ£ÏÕË¿£©£¬Ïòµ÷Ó÷½·µ»ØÒ»¸ö·ûºÏÔ¤ÆÚµÄ¡¢¿É´¦ÀíµÄ±¸Ñ¡ÏìÓ¦£¨FallBack£©£¬¶ø²»Êdz¤Ê±¼äµÄµÈ´ý»òÕßÅ׳öµ÷Ó÷½ÎÞ·¨´¦ÀíµÄÒì³££¬ÕâÑù¾Í±£Ö¤ÁË·þÎñµ÷Ó÷½µÄÏ̲߳»»á±»³¤Ê±¼ä¡¢²»±ØÒªµØÕ¼Ó㬴Ӷø±ÜÃâÁ˹ÊÕÏÔÚ·Ö²¼Ê½ÏµÍ³ÖеÄÂûÑÓ£¬ÄËÖÁÑ©±À¡£

µ±È»£¬ÔÚÇëÇóʧ°ÜƵÂʽϵ͵ÄÇé¿öÏ£¬Hystrix»¹ÊÇ»áÖ±½Ó°Ñ¹ÊÕÏ·µ»Ø¸ø¿Í»§¶Ë¡£Ö»Óе±Ê§°Ü´ÎÊý´ïµ½ãÐÖµ£¨Ä¬ÈÏÔÚ20ÃëÄÚʧ°Ü5´Î£©Ê±£¬¶Ï·Æ÷´ò¿ª²¢ÇÒ²»½øÐкóÐøÍ¨ÐÅ£¬¶øÊÇÖ±½Ó·µ»Ø±¸Ñ¡ÏìÓ¦¡£µ±È»£¬HystrixµÄ±¸Ñ¡ÏìÓ¦Ò²ÊÇ¿ÉÒÔÓÉ¿ª·¢Õß¶¨ÖƵġ£HystrixFallback.png

³ýÁ˸ôÀëÒÀÀµ·þÎñµÄµ÷ÓÃÒÔÍ⣬Hystrix»¹ÌṩÁË׼ʵʱµÄµ÷ÓÃ¼à¿Ø£¨Hystrix Dashboard£©£¬Hystrix»á³ÖÐøµØ¼Ç¼ËùÓÐͨ¹ýHystrix·¢ÆðµÄÇëÇóµÄÖ´ÐÐÐÅÏ¢£¬²¢ÒÔͳ¼Æ±¨±íºÍͼÐεÄÐÎʽչʾ¸øÓû§£¬°üÀ¨Ã¿ÃëÖ´ÐжàÉÙÇëÇó¶àÉٳɹ¦£¬¶àÉÙʧ°ÜµÈ¡£Netflixͨ¹ýhystrix-metrics-event-streamÏîĿʵÏÖÁ˶ÔÒÔÉÏÖ¸±êµÄ¼à¿Ø¡£Spring CloudÒ²ÌṩÁËHystrix DashboardµÄÕûºÏ£¬¶Ô¼à¿ØÄÚÈÝת»¯³É¿ÉÊÓ»¯½çÃæ£¬Hystrix Dashboard WikiÉÏÏêϸ˵Ã÷ÁËͼÉÏÿ¸öÖ¸±êµÄº¬Òå¡£

3.4 ·þÎñµ÷Óö˴úÂë³éÏóºÍ·â×°¡ª¡ªFeign

FeignÊÇÒ»¸öÉùÃ÷ʽµÄWeb Service¿Í»§¶Ë£¬ËüµÄÄ¿µÄ¾ÍÊÇÈÃWeb Serviceµ÷Óøü¼Ó¼òµ¥¡£ËüÕûºÏÁËRibbonºÍHystrix£¬´Ó¶øÈÃÎÒÃDz»ÔÙÐèÒªÏÔʽµØÊ¹ÓÃÕâÁ½¸ö×é¼þ¡£Feign»¹ÌṩÁËHTTPÇëÇóµÄÄ£°å£¬Í¨¹ý±àд¼òµ¥µÄ½Ó¿ÚºÍ²åÈë×¢½â£¬ÎÒÃǾͿÉÒÔ¶¨ÒåºÃHTTPÇëÇóµÄ²ÎÊý¡¢¸ñʽ¡¢µØÖ·µÈÐÅÏ¢¡£½ÓÏÂÀ´£¬Feign»áÍêÈ«´úÀíHTTPµÄÇëÇó£¬ÎÒÃÇÖ»ÐèÒªÏñµ÷Ó÷½·¨Ò»Ñùµ÷ÓÃËü¾Í¿ÉÒÔÍê³É·þÎñÇëÇó¡£

Feign¾ßÓÐÈçÏÂÌØÐÔ£º

¿É²å°ÎµÄ×¢½âÖ§³Ö£¬°üÀ¨Feign×¢½âºÍJAX-RS×¢½â

Ö§³Ö¿É²å°ÎµÄHTTP±àÂëÆ÷ºÍ½âÂëÆ÷

Ö§³ÖHystrixºÍËüµÄFallback

Ö§³ÖRibbonµÄ¸ºÔؾùºâ

Ö§³ÖHTTPÇëÇóºÍÏìÓ¦µÄѹËõ

ÒÔÏÂÊÇÒ»¸öFeignµÄ¼òµ¥Ê¾Àý£º

@SpringBootApplication
@EnableDiscoveryClient //ÆôÓÃFeign
@EnableFeignClients
public class Application
{
public static void main(String[] args)
{
SpringApplication.run(Application.class, args);
}
}
@FeignClient(name = "elements", fallback = ElementsFallback.class) //Ö¸¶¨feignµ÷ÓõķþÎñºÍHystrix Fallback£¨name¼´eurekaµÄapplication name£©
public interface Elements
{
@RequestMapping(value = "/index")
String index();
}
//Hystrix Fallback
@Component
public class ElementsFallback implements Elements
{
@Override
public String index()
{
return "**************";
}
}
//²âÊÔÀà
@Component
public class TestController {
@Autowired
Elements elements;
@RequestMapping(value = "/testEureka", method = RequestMethod.GET)
public String testeureka()
{
return elements.index();
}
}
   
11102 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù