±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚinfoq£¬Èç½ñËæ×ÅÔÆ¼ÆËãÔ½·¢Á÷ÐУ¬ÈçºÎ³ä·ÖÀûÓÃÔÆ»·¾³ÌṩµÄ×Ô¶¯ÉìËõÄÜÁ¦£¬²¢ÓëÌØ¶¨Ôƹ©Ó¦ÉÌʵÏÖËÉÉ¢µÄñîºÏ£¬ÕâÒѳÉΪһ¸ö·Ç³£ÓÐȤµÄÌôÕ½¡£ |
|
½üÊ®ÄêÀ´£¬Spring ÒòÆäÌṩµÄÒÀÀµ×¢È빦Äܶø¹ãÊÜ Java ¿ª·¢Õߵ϶ӣ¬ÒòÆä¿ÉÒÔ°ïÖú´ó¼Ò¿ª·¢³öËÉÉ¢ñîºÏµÄϵͳ¡£¼òµ¥À´Ëµ£¬Óû§Ö»ÐèҪרעÓÚ½Ó¿ÚËùÌṩµÄ³éÏ󣬼´¿É»ñµÃ¾ßÌåµÄʵÀý¡£Èç½ñËæ×ÅÔÆ¼ÆËãÔ½·¢Á÷ÐУ¬ÈçºÎ³ä·ÖÀûÓÃÔÆ»·¾³ÌṩµÄ×Ô¶¯ÉìËõÄÜÁ¦£¬²¢ÓëÌØ¶¨Ôƹ©Ó¦ÉÌʵÏÖËÉÉ¢µÄñîºÏ£¬ÕâÒѳÉΪһ¸ö·Ç³£ÓÐȤµÄÌôÕ½¡£¡°ÔÆÔÉú¡±Õâ¸ö¸ÅÄîÓ¦Ô˶øÉú¡£ÎÒÃÇÏÈÀ´¿´¿´¡°ÔÆÔÉú¡±ºÍ¡°Î¢·þÎñ¡±µ½µ×ÊÇʲô£¿
ÔÆÔÉúºÍ΢·þÎñ
¡°ÔÆÔÉú¡±ÄãÁ˽âÂð£¿
ºÜ¶àÈËÈÏΪ£¬ÔÆÔÉú½ö½öÊÇÓÃÔÆÌṩÉ̵ķþÎñÀ´ÔËÐÐÄãµÄÏÖÓÐÓ¦Óã¿
´ð°¸²»ÊÇÕâô¼òµ¥¡£ÔÆÔÉú»áÈ«Ãæ¸Ä±äÓ¦ÓóÌÐòµÄÉè¼Æ¡¢ÊµÏÖ¡¢²¿ÊðºÍÔËά¹ý³Ì¡£
ÏÖÔڱȽÏÁ÷ÐеÄÔÆÔÉú¶¨ÒåÈçÏ£º
ÔÚ¿ª·¢ Spring ¿ò¼ÜºÍÔÆÆ½Ì¨µÄÈí¼þ¹«Ë¾ Pivotal ¿´À´£¬ÔÆÔÉúµÄ¶¨ÒåÊÇ£º
ÔÆÔÉúÊÇÒ»ÖÖ¹¹½¨ºÍÔËÐÐÓ¦ÓóÌÐòµÄ·½·¨£¬ÕâÖÖ·½·¨¿ÉÒÔÍêÈ«·¢»Ó³öÔÆ¼ÆËãÄ£Ð͵ÄÓÅÊÆ¡£
ÖÂÁ¦ÓÚ´´½¨ºÍÍÆ¶¯ÔÆÔÉú±à³Ì·¶Ê½µÄ×éÖ¯ CNCF (Cloud Native Computing Foundation)£¬¶ÔÔÆÔÉúµÄ¶¨ÒåÊÇ£º
ÔÆÔÉú¼¼Êõ¿ÉÒÔ°ïÖúÆóҵͨ¹ý¹«ÓÐÔÆ¡¢Ë½ÓÐÔÆ¡¢»ìºÏÔÆµÈÏÖ´ú»¯µÄ¶¯Ì¬»·¾³¹¹½¨²¢ÔËÐпÉÉìËõµÄÓ¦Óá£ÀýÈ磺ÈÝÆ÷¡¢·þÎñÍø¸ñ£¨Service
Mesh£©¡¢Î¢·þÎñ¡¢²»¿É±ä»ù´¡¼Ü¹¹£¨Immutable infrastructure£©ÒÔ¼°ÉùÃ÷ʽ API¡£
×ܽáһϣ¬ÔÆÔÉúÓ¦ÓÃÄܳä·ÖÀûÓÃÔÆ¼ÆËãÄ£ÐÍ´øÀ´µÄ¸÷ÖÖÓÅÊÆ£¬ ¶øÎ¢·þÎñÊÇÆäÖеÄÒ»ÖÖʵÏÖÐÎʽ¡£ÏÂÃæµÄ¶¨Òå»á°ïÖúÄã¸üÇåÎúµØÀí½â£º
ÔÆÔÉúÓ¦ÓÃÊÇרÃÅÃæÏòÔÆ¼ÆËã»·¾³Éè¼ÆµÄÓ¦Ó㬶ø·Ç¼òµ¥µÄÓ¦ÓÃÇ¨ÒÆÉÏÔÆ¡£
¡°Î¢·þÎñ¡±À´À²£¡
¡°Î¢·þÎñ¼Ü¹¹·ç¸ñÊÇÒ»ÖÖ½«µ¥¸öÓ¦ÓóÌÐò¿ª·¢³ÉÒ»Ì×СÐÍ·þÎñµÄ·½·¨£¬Ã¿¸öСÐÍ·þÎñ¶¼ÔÚ×Ô¼ºµÄ½ø³ÌÖÐÔËÐУ¬²¢Í¨¹ýÇáÁ¿¼¶»úÖÆ£¨Í¨³£Îª
HTTP ×ÊÔ´ API£©Ï໥ͨÐÅ¡£ÕâЩ·þÎñÎ§ÈÆÒµÎñ¹¦Äܹ¹½¨£¬¿Éͨ¹ýÈ«×Ô¶¯²¿Êð»úÖÆ¶ÀÁ¢²¿Êð¡£´ËÍ⣬ÕâЩ·þÎñÖÁÉÙÓ¦¸ÃÄܼ¯ÖйÜÀí£¬¿ÉÒÔÓò»Í¬±à³ÌÓïÑÔ±àд£¬²¢¿ÉÒÔʹÓò»Í¬µÄÊý¾Ý´æ´¢¼¼Êõ¡£¡±
¡ª¡ªÖªÃûÈí¼þ¹¤³Ìʦ£¬Ãô½Ý¿ª·¢·½·¨´´Ê¼ÈËÖ®Ò»£¬Martin Fowler
Óɴ˿ɼû΢·þÎñÊÇÒ»ÖÖ¿ÉÒÔÐͬ¹¤×÷µÄСÐÍ¡¢×¨×¢¡¢×ÔÖεķþÎñ¡£
СÐÍ¡¢×¨×¢ÌåÏÖÁË΢·þÎñµÄµ¥Ò»Ö°Ôð£¨Single Responsibility£©¡£Ò»¸ö·þÎñÖ»ÐèÒª½«Ò»¼þÊÂ×öºÃ¾Í¹»ÁË¡£×ÔÖÎÔòÒâζ×ÅÈÝ´íÄÜÁ¦£¬Ã¿¸ö·þÎñ¿ÉÒԱ˴˶ÀÁ¢µØÑÝ»¯ºÍ²¿Êð¡£
΢·þÎñ¾ÍÆä±¾ÖÊÀ´ËµÓëÔÆ¼ÆËãÆ½Ì¨µÄ¹ØÁª¼«ÎªÃÜÇУ¬µ«Î¢·þÎñÕâ¸ö¸ÅÄî±¾Éí²¢²»ÊÇÐÂÊÂÎï¡£Õâ¸ö¸ÅÄî¶àÄêǰ¾Í³öÏÖÁË¡£
΢·þÎñµÄ¸ÅÄîËäÈ»³öÏÖÒѾ㬵«²¢Î´ÕæÕýÁ÷ÐС£Ö÷ÒªÊÇÒòΪ´«Í³µÄ±¾µØ»¯²¿Êðʹ΢·þÎñµÄÂ䵨Ï൱À§ÄÑ¡£¶øÔƼÆËãµÄ³öÏÖÌṩÁ˸üºÃµÄÀ©Õ¹ÐÔ¡¢¿É¿¿ÐԺͿÉά»¤ÐÔ£¬ËùÒÔ»ùÓÚÔÆ¼ÆËãµÄ΢·þÎñʵÏÖºÍά»¤¸ü¼Ó±ãÀû£¬Ò²¾ÍÁ÷ÐÐÆðÀ´¡£Ä¿Ç°ÎÒÃÇ¿ÉÒÔ´Ó΢·þÎñÀï»ñµÃÊÕÒæ°üÀ¨µ«²»ÏÞÓÚÕâЩ£º
µ¯ÐÔ£ºÒ»¸ö×é¼þ³öÏÖÎÊÌâ²»»áÍÏÀÛÕû¸öϵͳ£¬Õâͨ³£ÊÇͨ¹ýÇåÎú¶¨ÒåµÄ·þÎñ±ß½çʵÏֵġ£
¿ÉÉìËõÐÔ£ºÈç¹ûÖ»ÓÐÒ»¸ö×é¼þµÄÐÔÄÜ´ïµ½ÉÏÏÞ£¬¿Éµ¥¶À½øÐÐÀ©ÈÝ£¬¶øÎÞÐè¶ÔÕû¸öϵͳ½øÐÐÀ©ÈÝ¡£
Ò×ÓÚ²¿Ê𣺿ÉÖ»¸Ä¶¯Ò»¸ö·þÎñ£¬½ø¶ø¼Ó¿ì·¢²¼ÖÜÆÚ²¢¼ò»¯ÅÅ´í¹ý³Ì¡£
¿É×éºÏÐÔ£ºÃ¿¸ö·þÎñÖ»×öÒ»¼þÊ£¬Òò´Ë¿ÉÒÔÏñ Unix ¹ÜµÀÄÇÑùÇáËÉʵÏÖ·þÎñµÄ¸´Óá£
¿ÉÌæ»»ÐÔ£ºÃ¿¸öСÐ͵ķþÎñ¶¼¿ÉÒÔ¸üÈÝÒ×µØÊ¹ÓøüºÃµÄʵÏÖ»ò¼¼ÊõÀ´Ìæ»»¡£
Spring Cloud
΢·þÎñÓкܶàÓŵ㣬µ«Êǹ¹½¨Î¢·þÎñµÄ¹ý³ÌÒÀÈ»Ï൱¸´ÔÓ¡£ÎªÁËʹ΢·þÎñ¼Ü¹¹ÇáËÉʵÏÖ£¬Òµ½ç¶¨ÒåÁËһЩͨÓõÄģʽ¡£±È½ÏÖªÃûµÄÓУ¬¼¯Öл¯µÄÖÐÐÄ»¯ÅäÖùÜÀí¡¢·þÎñ×¢²áºÍ·¢ÏÖ¡¢Òì²½ÏûÏ¢Çý¶¯ÒÔ¼°·Ö²¼Ê½×·×Ù¡£Spring
Cloud ½«ÕâЩ΢·þÎñ¼Ü¹¹Ä£Ê½Èںϵ½¾ßÌåʵ¼ùÖУ¬°ïÖúÎÒÃǸüºÃµØ×ñÑÔÆÔÉú×î¼Ñʵ¼ù¡£ÈçÏÂͼ£º

Spring Cloud ¶ÀÌØµÄ¼ÛÖµÖ÷ÒªÌåÏÖÔÚÕ⼸·½Ã棺
Ϊ³£ÓÃģʽ¶¨ÒåÁËͨÓóéÏó¡£ÕâÒ²ÊÇ Spring ½âñîÕÜѧµÄÁíÒ»¸ö¾«²ÊÓ¦ÓãºÃ¿ÖÖģʽ²¢²»Óë¾ßÌåµÄʵÏÖ½ôÃÜñîºÏ¡£ÒÔ
Config Server ΪÀý£¬ÎÒÃÇ¿ÉÒÔÔÚ²»Ó°ÏìÆäËû·þÎñµÄǰÌáÏÂËæÒâ¸ü¸ÄÅäÖÃËùÓõĺó¶Ë´æ´¢¡£Discovery
ºÍ Stream Ò²²ÉÓÃÁËÀàËÆ·½Ê½¡£
Ä£¿é»¯×é¼þ¡£ºÜ¶àÈ˵ÚÒ»Ó¡ÏóÈÏΪ Spring Cloud ÊÇÒ»ÖÖÖØÁ¿¼¶µÄÈ«¼ÒͰʽµÄ½â¾ö·½°¸¡£µ«Êµ¼ÊÉÏ£¬Õâ²¢²»ÊÇÒ»ÖÖÈ«ÓлòÈ«Î޵Ľâ¾ö·½°¸£¬ÎÒÃÇ¿ÉÒÔֻѡÔñÒ»¸öÄ£¿é²¢½«¸ÃÄ£¿éÓÃ×÷Ò»¸ö΢·þÎñ£¬ÆäËû·þÎñÒÀÈ»¿ÉÒÔÁé»îÑ¡ÔñÆäËûÈκοò¼Ü¡£Õâ¾ÍÏñÀָ߻ýľ£¬ÎÒÃÇÖ»ÐèҪѡÔñ×Ô¼ºÐèÒªµÄÄ£¿é£¬²¢È·±£½Ó¿Ú¼æÈݾÍÐÐÁË¡£
ÄÇô Spring Cloud µÄÄ£¿éÊÇÈçºÎÈÚÈë΢·þÎñģʽµÄ£¿
Spring Cloud Config£º¼¯Öл¯ÅäÖùÜÀí
ΪÂú×ãStore config in environment£¨´æ´¢ÅäÖÃÓÚ»·¾³ÖУ©ÒÔ¼°Î¢·þÎñ¼Ü¹¹µÄÒªÇó£¬ÎÒÃÇÐèÒª½«ËùÓзþÎñµÄÅäÖô洢ÔÚÒ»¸ö¼¯ÖеÄλÖᣴËÍ⻹ÐèÒª¾ß±¸ÏÂÁй¦ÄÜ£º
Ö§³Ö¿ª·¢¡¢²âÊÔ¡¢Éú²úµÈ¶àÖÖ»·¾³¡£ÕâÑù¾Í¿ÉÒÔΪËùÓл·¾³Ìṩͬһ¸öÈí¼þ°ü£¬ÅäÖôӻ·¾³ÖлñÈ¡¡£
ÒÔ͸Ã÷µÄ·½Ê½ÒýÈëÅäÖá£ÅäÖÿÉÒÔÎÞÐè±àд´úÂë×Ô¶¯»ñÈ¡¡£
ÊôÐԱ仯ºó×Ô¶¯Ë¢Ð¡£·þÎñÓ¦¸ÃÄÜ»ñµÃ±ä»¯µÄ֪ͨ²¢ÖØÐÂÔØÈëеÄÊôÐÔ¡£
ά³Ö±ä¸üÀúÊ·²¢ÄÜÇáËÉ»ØÍËÖÁÀϰ汾¡£ÕâÊÇÒ»¸öºÜʵÓõŦÄÜ£¬¿ÉÒÔ°ïÎÒÃdz·ÏúÉú²ú»·¾³ÖдíÎóµÄ¸Ä¶¯¡£
Spring Cloud Config ͨ¹ýÁ½¸ö¼òµ¥µÄ×¢½âÀ´Ö§³ÖÕâЩ¹¦ÄÜ¡£ÎÒÃÇÖ»ÐèÒªÔÚ Config
Server ÖÐ×¢½â @EnableConfigServer£¬²¢ÔÚÆäËû·þÎñÖаüº¬ Starter ¼´¿ÉÆôÓÿͻ§¶Ë¡£ÏêÇé¿É²ÎÔÄ
Spring Cloud Config Îĵµ
Spring Cloud Discovery£º·þÎñ·¢ÏÖ
·þÎñ·¢ÏÖÊǴ󲿷ֲַ¼Ê½ÏµÍ³ºÍÃæÏò·þÎñµÄ¼Ü¹¹ÖÐÒ»¸öÖØÒªµÄ×é¼þ¡£Õâ¸öÎÊÌâ¿´ÆðÀ´ºÜ¼òµ¥£º¿Í»§¶ËÈçºÎÈ·¶¨ÔËÐÐÓÚ¶à¸öÖ÷»úÉϵķþÎñËùʹÓõÄ
IP ºÍ¶Ë¿Ú¡£µ«Ëæ×ÅÔÚÔÆ»·¾³Öв¿ÊðµÄ·þÎñÔ½À´Ô½¶à£¬ÎÊÌ⿪ʼ±äµÃ¸´ÔÓÁË¡£
È·¶¨·þÎñλÖ㬰üº¬Á½²¿·Ö£º
·þÎñ×¢²á£ºÖ¸·þÎñÔÚÖÐÑë×¢²á±íÖÐ×¢²á×Ô¼ºÎ»ÖõĹý³Ì£¬´Ëʱͨ³£ÐèҪע²áÖ÷»úºÍ¶Ë¿ÚºÅ£¬ÓÐʱºò»¹ÐèҪע²áÉí·ÝÑé֤ƾ¾Ý¡¢ÐÒé¡¢°æ±¾ºÅºÍ
/ »ò»·¾³Ï¸½Ú¡£
·þÎñ·¢ÏÖ£ºÖ¸¿Í»§¶ËÓ¦ÓÃͨ¹ý²éѯÖÐÑë×¢²á±íÈ·¶¨·þÎñλÖõĹý³Ì¡£
ÄÇôÓÖ¸ÃÈçºÎÑ¡Ôñ·þÎñ·¢ÏÖ½â¾ö·½°¸£¿´ËʱÓкܶàÒòËØÐèÒª¿¼ÂÇ£º
¼à¿Ø£ºÈç¹ûÒÑ×¢²áµÄ·þÎñʧ°ÜÁËÈ»ºó»áÔõÑù£¿ÓÐʱ»áÁ¢¼´³·Ïú×¢²á£¬»òÕß³¬Ê±ºó³·Ïú×¢²á£¬»òÕß±»ÆäËû½ø³Ì³·Ïú×¢²á¡£Òò´Ëͨ³£ÐèҪΪ·þÎñʵÏÖÐÄÌø¼ì²â»úÖÆÀ´È·±£·þÎñʼÖÕÔÚÏߣ¬²¢È·±£¿Í»§¶Ëͨ³£¿ÉÒÔÕýÈ·¡¢¿É¿¿µØ´¦Àí·þÎñʧ°Ü¡£
¸ºÔؾùºâ£ºÈç¹ûÒ»¸ö·þÎñ×¢²áÁ˶à¸ö½Úµã£¬¿Í»§¶Ë¸ÃÈçºÎʵÏÖ¸ºÔؾùºâ£¿Èç¹û´æÔÚÖ÷£¨Master£©·þÎñ£¬¿Í»§¶Ë¿ÉÒÔÕýȷʶ±ðÂð£¿
¼¯³É·½Ê½£º×¢²á±íÊÇ·ñÖ»ÌṩÁËÓëÉÙÊýÓïÑԵİ󶨣¨ÀýÈç½ö Java£©£¿¼¯³É¹ý³ÌÊÇ·ñÐèÒªÔÚÓ¦ÓóÌÐòÖÐǶÈëʵÏÖ×¢²áºÍ·¢ÏֵĴúÂ룿»¹ÊÇÐèÒªÌá¹©ÊØ»¤½ø³Ì£¿
¿ÉÓÃÐÔÎÊÌ⣺ʧȥһ¸ö½ÚµãºóÊÇ·ñÒÀÈ»¿ÉÒÔÕý³£ÔËÐУ¿ÊÇ·ñ¿ÉÒÔÔÚ²»Ôì³ÉÖжϵÄǰÌáÏÂÉý¼¶£¿×¢²á±íÊÇÕû¸ö¼Ü¹¹µÄºËÐÄ£¬ÕâÊÇ·ñ»áµ¼Öµ¥µã¹ÊÕÏ£¿
Spring Cloud Ϊע²áºÍ·¢ÏÖÌṩÁËͨÓõijéÏó£¬ÎÒÃÇÖ»ÐèҪʹÓà @EnableDiscoveryClient£¬ÏàÓ¦µÄ¿Í»§¶Ë»á×Ô¶¯°ó¶¨¡£Spring
Cloud Discovery Eureka ºÍ Spring Cloud Discovery Zookeeper
ÌṩÁË·þÎñ·¢ÏֵľßÌåʵÏÖ¡£ÎÒÃÇÐèÒª¸ù¾Ý¾ßÌåµØÒµÎñ³¡¾°Ñ¡Ôñ²»Í¬µÄʵÏÖ£¬ÏêÇé¿É²ÎÔÄ Spring cloud
Discovery Îĵµ¡£
Spring Cloud Stream£ºÏûÏ¢Çý¶¯µÄ¼Ü¹¹
¼ÈÈ»ÎÒÃÇÓÐÁËÖÚ¶àµÄ΢·þÎñ£¬ÄÇôËüÃǿ϶¨ÐèÒª»¥ÏàͨÐÅ¡£´«Í³µÄͬ²½µ÷ÓÃÏÔÈ»²»ÄÜÂú×ã΢·þÎñ¶à±äµÄ¸´ÔÓ»·¾³£¬ËùÒÔÒì²½µÄÏûÏ¢Çý¶¯ÊDZØÈ»Ç÷ÊÆ¡£Æäʵ£¬Ò»ÇÐÇëÇ󶼿ÉÒÔÊÓ×÷ÊÇÏûÏ¢£¬Òò´ËÒ²¾Íµ®ÉúÁËʹÓò»Í¬¸ñʽºÍ
API µÄÏûÏ¢Öмä¼þ¡£ÈÃÕâЩÏûÏ¢Öмä¼þÏ໥ͨÐÅÎÞÒìÓÚÒ»³¡Ø¬ÃΡ£½â¾öÕâ¸öÎÊÌâÆäʵºÜ¼òµ¥£¬Ö»ÐèÒª¶¨ÒåͳһµÄÏûÏ¢½Ó¿Ú£¬ËæºóΪÿ¸öÖмä¼þÌṩÊÊÅäÆ÷£¬ÈÃËüÃÇÖªµÀÈçºÎÔÚ×Ô¼ºµÄÏûÏ¢ºÍ±ê×¼¸ñʽ֮¼ä½øÐÐת»»¾ÍÐÐÁË¡£Õâ¾ÍÊÇ
Spring Integration µÄºËÐÄÉè¼ÆÀíÄî¡£
Spring Integration µÄÄ¿±êÖ÷ÒªÔÚÓÚ£º
Ϊ¸´ÔӵįóÒµ¼¶¼¯³É·½°¸ÌṩһÖÖ¸ü¼òµ¥µÄÄ£ÐÍ¡£
ÍÆÐÐÒì²½µÄÏûÏ¢Çý¶¯ÐÐΪ¡£
´Ù½øÏÖÓÐ Spring Óû§½¥½øµØ²ÉÓÃÕâÒ»¼¼Êõ¡£
ͬʱ Spring Integration µÄÉè¼ÆÖ÷Òª×ñÑÁËÏÂÁÐÔÔò£º
ΪÁËÌá¸ßÄ£¿é»¯³Ì¶ÈºÍ¿É²âÊÔÐÔ£¬×é¼þ±ØÐëËÉÉ¢ñîºÏ¡£
¿ò¼ÜÓ¦ÔÚÒµÎñÂß¼ºÍ¼¯³ÉÂß¼Ö®¼äÇ¿ÖÆÊµÊ©¹Ø×¢µã¸ôÀ루Separation of concerns£©¡£
À©Õ¹µãÊdzéÏóµÄ£¬²¢ÇÒÓкÏÀíµØ±ß½ç£¬ÒÔ´ËÀ´´Ù½ø¸´ÓúͿÉÒÆÖ²ÄÜÁ¦¡£
ÏêÇé¿É²ÎÔÄ Spring Integration Îĵµ ¡£
²»¹ýĿǰ Spring Integration ÒÀȻרעÓڵײ㣬²¢°üº¬ºÜ¶à»ÞɬÄѶ®µÄÊõÓï¡£ËùÒÔÕâÖÖ±à³ÌÄ£ÐͲ»ÏñÆäËû
Spring ¼¼ÊõÄÇôÒ×Óã¬ÓÚÊÇÓÖµ®ÉúÁË Spring Cloud Stream¡£Spring Cloud
Stream »ùÓÚ±ê×¼ÏûÏ¢¸ñʽºÍ Spring integration ÌṩµÄ¶àÖÖÊÊÅäÆ÷£¬¿ÉÒÔ¹¤×÷Ôڸ߲ã³éÏóÖУ¬½è´ËÒÔ¸ü¼òµ¥µÄ·½Ê½²úÉú¡¢´¦ÀíºÍʹÓÃÏûÏ¢¡£ËüÒ²ÀàËÆÓÚ
Unix ¹ÜµÀ£¬ÎÒÃÇÖ»ÐèÒª¹Ø×¢ÈçºÎ´¦ÀíÏûÏ¢£¬ÏûÏ¢½«°´ÕÕÎÒÃǵÄÔ¤ÆÚÀ´Ö®£¬È¥Ö®¡£ÏêÇé¿É²ÎÔÄ Spring
Cloud Stream Îĵµ ¡£
Spring Cloud Sleuth & Zipkin£º·Ö²¼Ê½×·×Ù
ÔÚ΢·þÎñ¼Ü¹¹Ï£¬ÓÉÓÚ·þÎñ½øÐÐÁ˲ð·Ö£¬Ò»¸öÇëÇóºÜ¿ÉÄÜÉæ¼°¶à¸ö·þÎñ£¬ÕâЩ·þÎñ¿ÉÄܲ¿ÊðÔÚ²»Í¬µÄ»úÆ÷Ö®ÉÏ¡£¾¡¹ÜºÜ¶à½â¾ö·½°¸¶¼ÊµÏÖÁ˼¯ÖеÄÈÕÖ¾´æ´¢ºÍ²éѯ£¬µ«ÊÇÈç¹ûÓöµ½µ÷ÓÃʧ°Ü£¬Ïë¿ìËÙ¶¨Î»ÎÊÌâÈÔÈ»·Ç³£À§ÄÑ¡£Ò»°ãµÄ×ö·¨ÊǶà´Î·´¸´ÔÚÈÕÖ¾ÖвéѯÏà¹ØµÄ¹Ø¼ü×ÖÀ´Ñ°ÕÒÏßË÷¡£ÕâÖÖ·½·¨·Ñʱ·ÑÁ¦£¬¶øÇÒÈÝÒ׳ö´í¡£Êµ¼ÊÉÏ£¬ÎÒÃÇÐèÒªµÄÊÇÒ»¸ö¿ÉÒÔ°ïÖúÎÒÃÇÕûºÏÒ»´Îµ÷ÓÃÁ´µÄËùÓÐÏà¹ØÐÅÏ¢µÄϵͳ¡£
Spring Cloud Sleuth ͨ¹ýÒýÈë Span ºÍ Trace µÄ¸ÅÄîÀ´ÊµÏÖÕâÖ־ۺϡ£Í¨Ë׵ؽ²£¬Ò»¸ö
Span ¾ÍÊÇÒ»´Î·þÎñµÄµ÷Ó㬶ø Trace ¾ÍÊǰüº¬¶à¸ö Span µÄÊ÷Ðνṹ£¬±ÈÈçÒ»´Î·Ö²¼Ê½µ÷Óûá°üº¬¶à¸ö·þÎñµ÷Óá£Sleuth
»á°ÑÏàÓ¦µÄ SpanId ºÍ TraceId ¼Ç¼ÔÚ¶ÔÓ¦µÄÈÕÖ¾ÖС£ÈçÏÂͼ£º

ʵ¼ÊÖУ¬»á±»¼Ç¼µÄ²Ù×÷°üÀ¨£º
MVC controller ÊÕµ½µÄ HTTP ÇëÇó
ͨ¹ý RestTemplate ·¢Ë͵ÄÇëÇó
ͨ¹ý Spring Cloud Stream Binder ·¢ËͺͽÓÊܵÄÇëÇó
ÆäËûÔÚ Spring Éú̬ϵͳÖеÄÇëÇóºÍ»Ø¸´
È»¶ø£¬ÓÐÁËÕâЩÐÅÏ¢»¹Ô¶Ô¶²»¹»£¬ÎÒÃÇ»¹ÐèÒª°ÑÕâЩÐÅÏ¢ÕûºÏ£¬´¦Àí£¬²¢ÒÔ¼òµ¥Ö±¹ÛµÄ·½Ê½Õ¹ÏÖ³öÀ´¡£Õâ¾ÍÊÇ Zipkin
·¢»Ó×÷Óõĵط½¡£ËüÌṩµÄ´æ´¢Ä£¿éºÍ UI ½çÃæ¿ÉÒÔ°ïÖúÎÒÃÇÀí½âÕû¸öµ÷ÓÃÁ´¡£ÈçÏÂͼËùʾ¡£

Spring Cloud Azure
Spring Cloud ËäÈ»¶ÔͨÓõÄģʽÌṩÁ˺ܺõÄʵÏÖ£¬µ«Èç¹ûÏëÔÚʵ¼ÊµÄÔÆ·þÎñÉÏÃæÊ¹Óû¹ÓÐÒ»¶¨µÄ¾àÀë¡£ËùÒÔ£¬Spring
Cloud Azure ×ñÑÁË Spring Cloud ÌṩµÄ×î¼Ñʵ¼ùºÍͨÓóéÏ󣬲¢ÔÚ´Ë»ù´¡Éϸü½øÒ»²½ÌṩÁË×Ô¶¯»¯µÄ×ÊÔ´ÅäÖúÍ×Ô¶¯ÅäÖÃ
Azure ·þÎñÏà¹ØÊôÐÔµÄÄÜÁ¦¡£½è´ËÓû§Ö»ÐèÒª´Ó½Ï¸ß²ãÃæÁ˽â Azure ·þÎñ¼´¿É˳ÀûʹÓ㬶øÎÞÐèÉæ¼°ÓйØÅäÖúÍ
SDK API µÄµ×²ãϸ½Ú¡£ÒÔ Azure EventHub ΪÀý£¬ÎÒÃÇÖ»ÐèÒªÖªµÀÕâÊÇÒ»ÖÖÔÚÉè¼ÆÉÏÓë
Kafka ÀàËÆµÄÏûÏ¢·þÎñ£¬Ëæºó¼´¿ÉʹÓà Azure EventHub µÄ Spring Cloud
Stream Binder Éú³É²¢Ê¹ÓÃÏûÏ¢¡£

Spring Cloud Azure µÄÉè¼ÆÀíÄîÖ÷Òª°üÀ¨£º
¼ò»¯ Spring Cloud Óë Azure µÄ¼¯³É¡£Óû§ÎÞÐèÐÞ¸ÄÏÖÓдúÂë¼´¿ÉÇáËÉʹÓà Azure
·þÎñ£¬²¢ÇÒÖ»ÐèÒªÌṩ×îÉÙµÄÒÀÀµºÍÅäÖá£
¼«¼òÅäÖá£Îª´Ë¿ÉÒÔ³ä·ÖÀûÓà Spring boot auto config£¬¸ù¾Ý Azure ×ÊÔ´¹ÜÀíÆ÷
API Ô¤ÅäÖÃĬÈÏÊôÐÔÖµ£¬µ«Óû§Ò²¿ÉÒÔÓÃ×Ô¼ºµÄÅäÖø²¸ÇĬÈÏÖµ¡£
×Ô¶¯¹ÜÀí×ÊÔ´¡£Èç¹û×ÊÔ´²»´æÔÚ£¬½«ÄÜÔÚÓû§Ö¸¶¨µÄ¶©ÔĺÍ×ÊÔ´×éÖÐ×Ô¶¯´´½¨ËùÐè×ÊÔ´¡£
ÓëÔÆ¹©Ó¦É̽âñî¡£Óû§¿ÉÒÔÇáËɵØÊ¹Óà Azure ·þÎñÒÔ¼° Spring Cloud ÌṩµÄ±ãÀûÐÔ£¬ÎÞÐèÊÜÖÆÓÚij¸öÌØ¶¨µÄÔÆ¹©Ó¦ÉÌ¡£
Azure ×ÊÔ´¹ÜÀíÆ÷£º×Ô¶¯ÅäÖúÍ×ÊÔ´¹ÜÀí
ÅäÖã¬Õâ¿ÉÄÜÊÇ¿ª·¢Õß×î²»Ô¸×öµÄ¹¤×÷Ö®Ò»¡£ÅäÖÃÿ¸öÊôÐÔǰ£¬¿ª·¢Õß±ØÐëÍêÕûÔĶÁÏà¹ØÎĵµ²¢È«ÃæÁ˽âÿ¸öÊôÐԵĺ¬Òå£¬ËæºóСÐĽ÷É÷µØ´ÓÒ»¸öλÖø´ÖÆÃ¿¸öÊôÐÔ£¬È»ºóÕ³Ìùµ½Ó¦ÓõÄÊôÐÔÎļþÖС£È»¶øÂé·³»¹Ã»Í꣬ËûÃÇ»¹ÐèҪΪÿ¸öÊôÐÔÌṩ±ØÒªµÄ±¸×¢£¬ÒÔ±ãÈÃÆäËû¿ª·¢ÕßÃ÷°×ÔÚÿÖÖ³¡¾°ÏÂÐèÒª¸ü¸ÄÄĸöÊôÐÔ£¬²¢ÇÒÔõÑù×ö²Å²»»á³ö´í¡£ÎÒÃÇÏëÒª½â¾öÕâ¸öÍ´µã£¬Òò´Ë»ùÓÚ
Spring boot ÌṩÁË×Ô¶¯ÅäÖù¦ÄÜ¡£
¾ÙÀýÀ´Ëµ£¬Èç¹ûÏëʹÓà Azure EventHub£¬´Ëʱ²¢²»ÐèÒªÁ˽âÁ¬½Ó×Ö·û´®ÊÇʲô£¬Ö»ÐèÊäÈë EventHub
µÄÃû³Æ¿Õ¼ä£¨ÀàËÆÓÚ Kafka µÄ¼¯ÈºÃû³Æ£©ºÍ EventHub Ãû³Æ£¨ÀàËÆÓÚ Kafka µÄ»°ÌâÃû³Æ£©£¬ÆäËû¶¼»á×Ô¶¯ÅäÖᣵ±È»£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ý×Ô¶¨ÒåÅäÖø²¸ÇĬÈÏÖµ¡£
ÔÆ×î´óµÄÓŵãÖ®Ò»ÔÚÓÚ¿ÉÒÔͨ¹ý¿É±à³ÌµÄ API ´´½¨²¢²éѯ×Ô¼ºµÄ×ÊÔ´¡£ÕâÒ²ÊÇʵÏÖ×Ô¶¯»¯µÄ¹Ø¼ü¡£Spring
Cloud Azure ¿É½èÖú Azure ×ÊÔ´¹ÜÀíÆ÷ʵÏÖ×Ô¶¯»¯µÄ×ÊÔ´ÅäÖá£Æäʵ×ÊÔ´µÄ·¶³ëºÜ´ó£¬ÀýÈç
AzureEventHub µÄ Consumer group¡£µ±ÎÒÃÇÓÐÒ»¸öзþÎñʹÓÃÁíÒ»¸öÐ嵀 Consumer
Group ʱ£¬ÎÞÐèÊÖ¹¤´´½¨¡£
Spring Cloud Stream Binder ºÍ Azure EventHub
ÔÚÁ˽âÁË Spring Cloud Stream µÄÓÅÊÆºó£¬¼ÙÉèÄ㿪ʼʹÓÃËü£¬µ«Ï£Íû½«ÆäÇ¨ÒÆÖÁ Azure£¬´Ëʱ¸ÃÔõô×ö£¿Äã¿ÉÄÜÒѾʹÓÃÁË
Kafka »ò RabbitMQ Binder£¬µ« Azure ËÆºõ²¢Î´Ìṩ´ËÀàÍйÜʽµÄ Kafka
»ò RabbitMQ ·þÎñ¡£ÄÇôÔõÑùÓÃ×î¿ì½ÝµÄ·½·¨À´Ç¨ÒÆ£¿
ʵ¼ÊÉÏÎÒÃDz¢²»ÐèÒª¹Ø×¢×Ô¼ºµ½µ×ʹÓÃÁËÄÄÖÖÏûÏ¢Öмä¼þ£¬Ö»ÒªÓÐÒ»¸ö×é¼þÄÜÌṩÀàËÆµÄ¹¦Äܲ¢Âú×ãÐÔÄÜÒªÇó¾ÍÐÐÁË¡£Òò´ËÎÒÃÇÖ»ÐèÒª½«ÒÀÀµÏî´Ó
Kafka Binder ¸ÄΪ Azure EventHub Binder ¾ÍÐУ¬ÍêÈ«²»Óøü¸ÄÈκδúÂë¼´¿Éƽ»¬Ç¨ÒÆ¡£Azure
EventHub Binder ÌṩÁ˷ḻµØ¸ß¼¶¹¦ÄÜ£¬ÈçÏ£º
Consumer Group:
Óë Apache Kafka ÀàËÆ£¬EventHub ҲΪÇáÁ¿¼¶ Consumer ×éÌṩÁËÀàËÆµÄÖ§³Ö£¬µ«ÊµÏÖÉÏÂÔÓвîÒì¡£Kafka
»á½«ËùÓÐÒÑÌá½»µÄÆ«ÒÆÁ¿£¨Offset£©´æ´¢ÔÚ Broker ÖУ¬µ« EventHub Æ«ÒÆÁ¿µÄ´æ´¢¹¤×÷ÐèÒªÊÖ¹¤½øÐС£EventHub
SDK ÌṩÁËÔÚ Azure ´æ´¢ÕÊ»§Öб£´æÆ«ÒÆÁ¿µÄ¹¦ÄÜ¡£
·ÖÇøÖ§³Ö:
EventHub ÌṩÁËÓë Kafka ÀàËÆµÄÎïÀí·ÖÇø¸ÅÄµ«Óë Kafka »áÔÚ Consumer
ºÍ·ÖÇøÖ®¼ä×Ô¶¯ÔÙ¾ùºâµÄ×ö·¨²»Í¬£¬EventHub ʹÓÃÁËÒ»ÖÖÇÀռģʽ¡£Azure ´æ´¢ÕÊ»§¿ÉÒԳ䵱¡¸×âÔ¼¡¹À´¾ö¶¨Ã¿¸ö·ÖÇøÊÇÄĸö
Consumer ËùÓµÓеġ£µ±Ð Consumer Æô¶¯ºó£¬Ëü»á³¢ÊÔ×Å´Ó¸ºÔØ×îÖØµÄ Consumer¡¸ÇÀÕ¼¡¹Ò»²¿·Ö·ÖÇø£¬½è´ËʵÏÖ¸ºÔؾùºâ¡£
¼ì²éµãÖ§³Ö:
ÔÚ·Ö²¼Ê½·¢²¼ - ¶©ÔÄÏûϢϵͳÖУ¬Ö÷Òª´æÔÚÈýÖÖÏûÏ¢ÓïÒ壺×îÉÙÒ»´Î£¨At-least-once£©¡¢×î¶àÒ»´Î£¨At-most-once£©ÒÔ¼°ÑϸñÒ»´Î£¨Exactly-once£©¡£Ä¿Ç°ÎÒÃÇÖ»¿¼ÂÇÁËʹÓ÷½£º
×îÉÙÒ»´Î£ºConsumer ½ÓÊÕ²¢´¦ÀíÏûÏ¢£¬µ«ÔÚÏûÏ¢³É¹¦´¦ÀíÍê±Ï֮ǰ£¬²¢²»Ïò Broker ·¢³öÈ·ÈÏ¡£Èç¹ûÒòΪijЩÔÒòµ¼Ö´¦Àí¹¤×÷δÄÜÍê³É£¬ÀýÈç
Consumer ½Úµã¹ÊÕÏ£¬Í¬Ò»ÌõÏûÏ¢½«±»£¨×÷Ϊ·ÖÇøÖеÄÏÂÒ»Ìõ¿ÉÓÃʼþ£©ÖØÐ´¦Àí£¬½è´ËÈ·±£ÏûÏ¢×îÉÙ¿ÉÒÔ±»Ê¹ÓÃÒ»´Î¡£ÕâÖÖÇé¿öÏ£¬£¨ÔÚÏûÏ¢±»³É¹¦´¦ÀíÍê³É֮ǰ£©Consumer
¿ÉÄܻὫͬһÌõÏûÏ¢´¦Àí¶à´Î£¬Manual¼ì²éµãģʽΪÏûÏ¢´¦ÀíÍê±ÏÖ®ºóµÄÊÖ¹¤¼ì²éµã²Ù×÷ÌṩÁËÖ§³Ö¡£
×î¶àÒ»´Î£ºConsumer ÊÕµ½ÏûÏ¢²¢Á¢¼´ÏòÏûÏ¢ Broker ·¢ËÍÈ·ÈÏ£¬Ëæºó¿ªÊ¼´¦Àí¸ÃÏûÏ¢¡£µ«Èç¹û
Consumer ÔÚ´¦Àí¹ý³ÌÖÐÓöµ½¹ÊÕÏ£¬¸ÃÏûÏ¢½«ÎÞ·¨ÖØÐ´¦Àí£¬ÒòΪ Broker »áÈÏΪ Consumer
ÒѾÊÕµ½ÁËÕâÌõÏûÏ¢¡£ÕâÖÖÇé¿öÏ£¬Consumer ×î¶à½«Ò»ÌõÏûÏ¢´¦ÀíÒ»´Î£¬µ«¿ÉÄÜÒòΪ´¦Àí¹ý³ÌÖеĴíÎó¶ø¶ªÊ§Ä³Ð©ÏûÏ¢¡£ÕâÒ²ÊÇ
EventHub Binder ĬÈϵÄBatch¼ì²éµãģʽ¡£
ÑϸñÒ»´Î£ºÔÚÑϸñÒ»´ÎÓïÒåÖУ¬ÎÒÃÇ»áͨ¹ýΨһµÄÏûÏ¢ ID ¶ÔÒѾ´¦Àí¹ýµÄÏûÏ¢½øÐÐÈ¥ÖØ¡£»òÕßÒ²¿ÉÒÔʵʩÃݵȵÄÏûÏ¢´¦Àí»úÖÆ¡£ÏêÇé¿É²ÎÔÄ
Exactly once ¡£
ͨ¹ýʹÓÃ×Ô¶¨ÒåÏûϢͷ±©Â¶ Checkpointer£¬Azure EventHub Binder ¼´¿ÉÖ§³Ö²»Í¬µÄÏûϢʹÓÃÓïÒå¡£ÏêÇé¿É²ÎÔÄ
Spring Cloud Stream Event Hub binder Îĵµ »òÕßÒ²¿ÉÒÔͨ¹ý·¶Àý×ÔÐг¢ÊÔ¡£
Spring ×ÊÔ´ºÍ Azure ´æ´¢ Blob
Spring ×ÊԴΪUrlResource¡¢ClassPathResourceºÍFileSystemResourceµÈ»ùÓÚÁ÷µÄ×ÊÔ´µÄ²Ù×÷ÌṩÁËͨÓýӿڡ£ºÜÃ÷ÏÔ£¬Azure
´æ´¢ Blob ºÜÊʺϳ䵱ÕâÖÖBlobResource¡£ÔÚÕâÖÖResourceÖУ¬ËùÓÐʵÏÖ·½ÃæµÄϸ½Ú¾ùÒÑÒþ²Ø£¬²»´æÔÚµÄÎļþÒ²¿ÉÒÔ×Ô¶¯´´½¨¡£

ÏêÇé¿É²ÎÔÄ Spring Resource with Azure Storage Îĵµ£¬»òͨ¹ý·¶Àý×ÔÐг¢ÊÔ¡£
Spring Cloud Azure Playground£ºÒ»¼üÔËÐÐ΢·þÎñ
¾¡¹Ü Spring Cloud ÌṩÁ˺ܺõÄ΢·þÎñ¹¹½¨Ö§³Ö£¬µ«ÊǶÔÓÚÊ״γ¢ÏÊ΢·þÎñµÄС°×£¬ÏëѸËٴһ¸ö»ùÓÚ
Spring Cloud µÄ¿ÉÒÔÔËÐеÄ΢·þÎñÈÔÈ»ºÜÓÐÌôÕ½£¬Í¨³£°üº¬ÒÔϹ¤×÷£º
ÐèҪΪÿ¸ö΢·þÎñ´´½¨µ¥¶ÀµÄÏîÄ¿ºÍÒÀÀµ¡£¾¡¹Ü Spring Initializr ÔÚÕâ·½ÃæÌṩÁ˺ܺõÄÖ§³Ö£¬µ«ÊÇ΢·þÎñµÄÊýÁ¿ºÜ¶à£¬Ã¿¸ö·Ö±ð´´½¨Ò²ÊǺܷ±ËöµÄ¹¤×÷¡£
È·±£Î¢·þÎñÖ®¼äµÄ°æ±¾ºÍÒÀÀµ»¥Ïà¼æÈÝ¡£
²»Í¬µÄ΢·þÎñÓв»Í¬µÄÅäÖ㬶øÇÒÓÐЩÓÐÏ໥µÄÒÀÀµ¹ØÏµ¡£ÊÖ¶¯ÅäÖúÜÈÝÒ×ÒÅ©ºÍ·¸´í¡£
Spring Cloud ÌṩµÄ»ù´¡Î¢·þÎñÓи÷×ÔµÄ×¢½âºÍÅäÖÃÀ´Æô¶¯Î¢·þÎñ¡£ÊÖ¹¤ÅäÖÃÐèÒª²Î¿¼¸÷×ÔµÄÑùÀý¡£
ºÜ¶àÓû§Ï£Íû¿ÉÒÔÒ»¼üÔÚ±¾µØÔËÐÐ΢·þÎñÀ´ÑéÖ¤¿ÉÐÐÐÔ¡£ÊÖ¹¤±àд docker file Ò²ÐèÒªÒ»¶¨µÄʱ¼äºÍ¶Ô¸÷¸ö·þÎñ¹ØÏµµÄÀí½â¡£
ΪÁ˽â¾öÉÏÊöÎÊÌ⣬ÎÒÃǹ¹½¨ÁË Spring Cloud Azure Playground À´°ïÖú´ó¼ÒÇáËɹ¹½¨Î¢·þÎñ¡£ÌṩµÄ¹¦ÄÜÈçÏ£º
»ùÓÚ Spring Initializr£¬¿ÉÒÔÒ»´Î´´½¨È«Ì׵ĿÉÔËÐÐ΢·þÎñ
ÿ¸ö΢·þÎñ°üº¬ÍêÕûµÄÒÀÀµ£¬×¢½â£¬ÅäÖúÍÑùÀý¡£Í¨¹ýÏàÓ¦µÄ docker file ¿ÉÒÔÒ»¼üÔËÐС£
Óû§¿ÉÒÔ×Ô¶¨Òå΢·þÎñµÄ¶Ë¿ÚºÍÃû×Ö£¬ÒÔ±ÜÃâÓë±¾µØÔËÐÐµÄÆäËû·þÎñ³åÍ»¡£
Óû§¿ÉÒÔÑ¡ÔñÏÂÔØµ½±¾µØ»òÕßÍÆË͵½ GitHub¡£·½±ãÍŶӹ²Ïí¡£
Äã¿ÉÒÔͨ¹ýÒÔÏÂÁ´½Ó·ÃÎÊ:https://aka.ms/springcloud¡£ÈçÏÂͼ£º

Ŀǰ£¬Spring Cloud Azure ÒÑÈ«Ãæ¿ªÔ´²¢ÒÑ·¢²¼ÖÁ¡£ |