½ñÌìÔĶÁÁËÁ½Æª¹ØÓÚ΢·þÎñµÄÎÄÕ£¬×ܽáһЩ±Ê¼Ç£¬²»¸ÒóȻ·Ò룺һÊÇÒòΪˮƽ²»¹»£¬·ÒëµÄ¹ý³Ì»á¶ªµô×÷ÕßµÄÔÒ⣻¶þÊÇÒòΪ¼¼Êõ·ÒëÊÇÒ»¸öÂÔ΢³ÔÁ¦²»ÌֺõĻ
΢·þÎñ£¨micro services£©Õâ¸ö¸ÅÄî²»ÊÇиÅÄºÜ¶à¹«Ë¾ÒѾÔÚʵ¼ùÁË£¬ÀýÈçÑÇÂíÑ·¡¢Google¡¢FaceBook£¬Alibaba¡£Î¢·þÎñ¼Ü¹¹Ä£Ê½
£¨Microservices Architecture Pattern£©µÄÄ¿µÄÊǽ«´óÐ͵ġ¢¸´Ôӵġ¢³¤ÆÚÔËÐеÄÓ¦ÓóÌÐò¹¹½¨ÎªÒ»×éÏ໥ÅäºÏµÄ·þÎñ£¬Ã¿¸ö·þÎñ¶¼¿ÉÒÔºÜÈÝÒ׵þֲ¿¸ÄÁ¼¡£
MicroÕâ¸ö´ÊÒâζ×Åÿ¸ö·þÎñ¶¼Ó¦¸Ã×㹻С£¬µ«ÊÇ£¬ÕâÀïµÄС²»ÄÜÓôúÂëÁ¿À´±È½Ï£¬¶øÓ¦¸ÃÊÇ´ÓÒµÎñÂß¼ÉϱȽϡª¡ª·ûºÏSRPÔÔòµÄ²Å½Ð΢·þÎñ¡£
ÔÝÇÒ²»ÌÖÂÛ´óСÎÊÌ⣬¶ÁÕßÅóÓÑÄãÊ×ÏÈÒª¿¼ÂǵÄÊÇÈçºÎ½â¾öĿǰ¼¼ÊõÍŶÓÓöµ½µÄ¿ª·¢ÎÊÌâ¡¢²¿ÊðÎÊÌâ¡£ÕýÊÇÔÚ½â¾öÕâЩÎÊÌâµÄ¹ý³ÌÖУ¬²Å½¥½¥×ܽáÌáÁ¶³öÁË΢·þÎñ¼Ü¹¹Ä£Ê½µÄ¸ÅÄî¡£
΢·þÎñ¸úSOAÓÐÊ²Ã´Çø±ðÄØ£¬¿ÉÒÔ°Ñ΢·þÎñµ±×öÈ¥³ýÁËESBµÄSOA¡£ESBÊÇSOA¼Ü¹¹ÖеÄÖÐÐÄ×ÜÏߣ¬Éè¼ÆÍ¼ÐÎÓ¦¸ÃÊÇÐÇÐε쬶øÎ¢·þÎñÊÇÈ¥ÖÐÐÄ»¯µÄ·Ö²¼Ê½Èí¼þ¼Ü¹¹¡£
½ÓÏÂÀ´»áÌÖÂÛÒÔϼ¸¸ö»°Ì⣺
Ó¦ÓÃ΢·þÎñµÄ¶¯»ú£¬¸ú´«Í³¾ÞʯӦÓõıȽÏ
΢·þÎñµÄÓŵãÓëȱµã
Ó¦ÓÃ΢·þÎñ¼Ü¹¹Éè¼ÆÊ±¿ÉÄÜÓöµ½µÄ¹Ø¼üÎÊÌ⣨ÄÚ²¿·þÎñͨÐÅ¡¢·Ö²¼Ê½Êý¾Ý¹ÜÀí£©
Ò»¡¢¾Þʯ£¨monolith£©
webÓ¦ÓóÌÐò·¢Õ¹µÄÔçÆÚ£¬´ó²¿·Öweb¹¤³ÌÊǽ«ËùÓеŦÄÜÄ£¿é£¨service side£©´ò°üµ½Ò»Æð²¢·ÅÔÚÒ»¸öwebÈÝÆ÷ÖÐÔËÐУ¬ºÜ¶àÆóÒµµÄJavaÓ¦ÓóÌÐò´ò°üΪwar°ü¡£ÆäËûÓïÑÔ£¨Ruby£¬Python»òÕßC++£©Ð´µÄ³ÌÐòÒ²ÓÐÀàËÆµÄÎÊÌâ¡£
¼ÙÉèÄãÕýÔÚ¹¹½¨Ò»¸öÔÚÏßÉ̵êϵͳ£º¿Í»§Ï¶©µ¥¡¢ºË¶ÔÇåµ¥ºÍÐÅÓÿ¨¶î¶È£¬²¢½«»õÎïÔËÊ䏸¿Í»§¡£ºÜ¿ì£¬ÄãÃÇÍŶÓÒ»¶¨Äܹ¹Ôì³öÈçÏÂͼËùʾµÄϵͳ¡£

Fig1- the monolithic
architecture
ÕâÖÖ½«ËùÓй¦Äܶ¼²¿ÊðÔÚÒ»¸öwebÈÝÆ÷ÖÐÔËÐеÄϵͳ¾Í½Ð×ö¾ÞʯÐÍÓ¦Ó᣾ÞʯÐÍÓ¦ÓÃÓкܶàºÃ´¦£ºIDE¶¼ÊÇΪ¿ª·¢µ¥¸öÓ¦ÓÃÉè¼ÆµÄ¡¢ÈÝÒײâÊÔ¡ª¡ªÔÚ±¾µØ¾Í¿ÉÒÔÆô¶¯ÍêÕûµÄϵͳ¡¢ÈÝÒײ¿Ê𡪡ªÖ±½Ó´ò°üΪһ¸öÍêÕûµÄ°ü£¬¿½±´µ½webÈÝÆ÷µÄij¸öĿ¼Ï¼´¿ÉÔËÐС£
µ«ÊÇ£¬ÉÏÊöµÄºÃ´¦ÊÇÓÐÌõ¼þµÄ£ºÓ¦Óò»ÄÇô¸´ÔÓ¡£¶ÔÓÚ´ó¹æÄ£µÄ¸´ÔÓÓ¦Ó㬾ÞʯÐÍÓ¦ÓûáÏÔµÃÌØ±ð±¿ÖØ£ºÒªÐÞ¸ÄÒ»¸öµØ·½¾ÍÒª½«Õû¸öÓ¦ÓÃÈ«²¿²¿Êð£¨PS£ºÔÚ²»Í¬µÄ³¡¾°ÏÂÓÅÊÆÒ²±ä³ÉÁËÁÓÊÆ£©£»±àÒëʱ¼ä¹ý³¤£»»Ø¹é²âÊÔÖÜÆÚ¹ý³¤£»¿ª·¢Ð§ÂʽµµÍµÈ¡£ÁíÍ⣬¾ÞʯӦÓò»ÀûÓÚ¸üм¼Êõ¿ò¼Ü£¬³ý·ÇÄãÔ¸Ò⽫ϵͳȫ²¿ÖØÐ´£¨´ú¼ÛÌ«¸ßÄãÔ¸ÒâÀϰåÒ²²»Ô¸Ò⣩¡£
¶þ¡¢Ó¦Óòð·Ö
Ïêϸһ¸öÍøÕ¾ÔÚÒµÎñ´ó¹æÄ£ÅÀÉýʱ»á·¢ÉúʲôÊÂÇ飿²¢·¢¶È²»¹»£¿OK£¬¼Óweb·þÎñÆ÷¡£Êý¾Ý¿âѹÁ¦¹ý´ó£¿OK£¬Âò¸ü´ó¸ü¹óµÄÊý¾Ý¿â¡£Êý¾Ý¿âÌ«¹óÁË£¿½«
Ò»¸ö±íµÄÊý¾Ý·Ö¿ª´æ´¢£¬Ë׳ơ°·Ö¿â·Ö±í¡±¡£ÕâЩ¶¼Ã»ÓÐÎÊÌ⣬good job¡£²»¹ý£¬ÀÏÍâµÄ³éÏóÄÜÁ¦±ÈÎÒÃÇÇ¿£¬¿´ÏÂͼFig2¡£

Fig2 - the scale cube
ÕâÕÅͼ´ÓÈý¸öά¶È¸ÅÀ¨ÁËÒ»¸öϵͳµÄÀ©Õ¹¹ý³Ì£º£¨1£©xÖᣬˮƽ¸´ÖÆ£¬¼´ÔÚ¸ºÔؾùºâ·þÎñÆ÷ºóÔö¼Ó¶à¸öweb·þÎñÆ÷£»£¨2£©zÖáÀ©
Õ¹£¬ÊǶÔÊý¾Ý¿âµÄÀ©Õ¹£¬¼´·Ö¿â·Ö±í£¨·Ö¿âÊǽ«¹ØÏµ½ôÃܵıí·ÅÔÚһ̨Êý¾Ý¿â·þÎñÆ÷ÉÏ£¬·Ö±íÊÇÒòΪһÕűíµÄÊý¾ÝÌ«¶à£¬ÐèÒª½«Ò»ÕűíµÄÊý¾Ýͨ¹ýhash·ÅÔÚ²»Í¬
µÄÊý¾Ý¿â·þÎñÆ÷ÉÏ£©£»£¨3£©yÖáÀ©Õ¹£¬Êǹ¦Äֽܷ⣬½«²»Í¬Ö°ÄܵÄÄ£¿é·Ö³É²»Í¬µÄ·þÎñ¡£´ÓyÖáÕâ¸ö·½ÏòÀ©Õ¹£¬²ÅÄܽ«¾ÞÐÍÓ¦Ó÷ֽâΪһ×鲻ͬµÄ·þÎñ£¬ÀýÈç¶©µ¥
¹ÜÀíÖÐÐÄ¡¢¿Í»§ÐÅÏ¢¹ÜÀíÖÐÐÄ¡¢ÉÌÆ·¹ÜÀíÖÐÐĵȵȡ£
½«ÏµÍ³»®·ÖΪ²»Í¬µÄ·þÎñÓкܶ෽·¨£º£¨1£©°´ÕÕÓÃÀý»®·Ö£¬ÀýÈçÔÚÏßÉ̵êϵͳÖлỮ·Ö³öÒ»¸öcheckout
UI·þÎñ£¬Õâ¸ö·þÎñʵÏÖÁËcheckoutÕâ¸öÓÃÀý£»£¨2£©°´ÕÕ×ÊÔ´»®·Ö£¬ÀýÈç¿ÉÒÔ»®·Ö³öÒ»¸öcatlog·þÎñÀ´´æ´¢²úƷĿ¼¡£
·þÎñ»®·ÖÓÐÁ½¸öÔÔòÒª×ñÑ£º£¨1£©Ã¿¸ö·þÎñÓ¦¸Ã¾¡¿ÉÄÜ·ûºÏµ¥Ò»Ö°ÔðÔÔò¡ª¡ªSingle Responsible
Principle£¬¼´Ã¿¸ö·þÎñÖ»×öÒ»¼þÊ£¬²¢°ÑÕâ¼þÊÂ×öºÃ£»£¨2£©²Î¿¼UnixÃüÁîÐй¤¾ßµÄÉè¼Æ£¬UnixÌṩÁË´óÁ¿µÄ¼òµ¥Ò×ÓõŤ¾ß£¬ÀýÈçgrep¡¢catºÍfind¡£Ã¿¸ö¹¤¾ß¶¼Ð¡¶øÃÀ¡£
×îºó»¹ÒªÇ¿µ÷£ºÏµÍ³·Ö½âµÄÄ¿±ê²¢²»½ö½öÊǸã³öÒ»¶ÑºÜСµÄ·þÎñ£¬Õâ²»ÊÇÄ¿±ê£»ÕæÕýµÄÄ¿±êÊǽâ¾ö¾ÞʯÐÍÓ¦ÓÃÔÚÒµÎñ¼±¾çÔö³¤Ê±Óöµ½µÄÎÊÌâ¡£
¶ÔÓÚÉÏÃæµÄÀý×Ó£¬°´ÕÕ¹¦ÄܺÍ×ÊÔ´»®·Öºó£¬¾ÍÐγÉÏÂÃæÍ¼3µÄ¼Ü¹¹Í¼¡£·Ö½âºóµÄ΢·þÎñ¼Ü¹¹°üº¬¶à¸öǰ¶Ë·þÎñºÍºó¶Ë·þÎñ¡£Ç°¶Ë·þÎñ°üÀ¨Catalog
UI£¨ÓÃÓÚÉÌÆ·ËÑË÷ºÍä¯ÀÀ£©¡¢Checkout UI£¨ÓÃÓÚʵÏÖ¹ºÎï³µºÍϵ¥²Ù×÷£©£»ºó¶Ë·þÎñ°üÀ¨Ò»Ð©ÒµÎñÂ߼ģ¿é£¬ÎÒÃǽ«ÔÚ¾ÞʯӦÓÃÖеÄÿ¸ö·þÎñÄ£¿éÖØ¹¹ÎªÒ»¸öµ¥¶ÀµÄ·þÎñ¡£Õâô×öÓÐʲôÎÊÌâÄØ£¿

Fig 3 - the microservice
architecture
Èý¡¢Î¢·þÎñ¼Ü¹¹µÄÓŵãÓëȱµã
1. Óŵã
ÿ¸ö·þÎñ×ã¹»ÄÚ¾Û£¬×㹻С£¬´úÂëÈÝÒ×Àí½â¡¢¿ª·¢Ð§ÂÊÌá¸ß
·þÎñÖ®¼ä¿ÉÒÔ¶ÀÁ¢²¿Êð£¬Î¢·þÎñ¼Ü¹¹ÈóÖÐø²¿Êð³ÉΪ¿ÉÄÜ£»
ÿ¸ö·þÎñ¿ÉÒÔ¸÷×Ô½øÐÐxÀ©Õ¹ºÍzÀ©Õ¹£¬¶øÇÒ£¬Ã¿¸ö·þÎñ¿ÉÒÔ¸ù¾Ý×Ô¼ºµÄÐèÒª²¿Ê𵽺ÏÊʵÄÓ²¼þ·þÎñÆ÷ÉÏ£»
ÈÝÒ×À©´ó¿ª·¢ÍŶӣ¬¿ÉÒÔÕë¶Ôÿ¸ö·þÎñ£¨service£©×é¼þ¿ª·¢ÍŶӣ»
Ìá¸ßÈÝ´íÐÔ£¨fault isolation£©£¬Ò»¸ö·þÎñµÄÄÚ´æÐ¹Â¶²¢²»»áÈÃÕû¸öϵͳ̱»¾£»
ϵͳ²»»á±»³¤ÆÚÏÞÖÆÔÚij¸ö¼¼ÊõÕ»ÉÏ¡£
2. ȱµã
¡¶ÈËÔÂÉñ»°¡·Öн²µ½£ºÃ»ÓÐÒøµ¯£¬Òâ˼ÊÇÖ»¿¿Ò»°Ñ´¸×ÓÊǸDz»ÆðĦÌì´óÂ¥µÄ£¬Òª¸ù¾ÝÒµÎñ³¡¾°Ñ¡ÔñÉè¼ÆË¼Â·ºÍʵÏÖ¹¤¾ß¡£ÎÒÃÇ¿´ÏÂΪÁË»»»ØÉÏÃæÌáµ½µÄºÃ´¦£¬ÎÒÃǸ¶³ö£¨trade£©ÁËʲô£¿
¿ª·¢ÈËÔ±Òª´¦Àí·Ö²¼Ê½ÏµÍ³µÄ¸´ÔÓÐÔ£»¿ª·¢ÈËÔ±ÒªÉè¼Æ·þÎñÖ®¼äµÄͨÐÅ»úÖÆ£¬¶ÔÓÚÐèÒª¶à¸öºó¶Ë·þÎñµÄuser case£¬ÒªÔÚûÓзֲ¼Ê½ÊÂÎñµÄÇé¿öÏÂʵÏÖ´úÂë·Ç³£À§ÄÑ£»Éæ¼°¶à¸ö·þÎñÖ±½ÓµÄ×Ô¶¯»¯²âÊÔÒ²¾ß±¸Ï൱µÄÌôÕ½ÐÔ£»
·þÎñ¹ÜÀíµÄ¸´ÔÓÐÔ£¬ÔÚÉú²ú»·¾³ÖÐÒª¹ÜÀí¶à¸ö²»Í¬µÄ·þÎñµÄʵÀý£¬ÕâÒâζ×Å¿ª·¢ÍŶÓÐèҪȫ¾Öͳ³ï£¨PS£ºÏÖÔÚdockerµÄ³öÏÖÊʺϽâ¾öÕâ¸öÎÊÌ⣩
Ó¦ÓÃ΢·þÎñ¼Ü¹¹µÄʱ»úÈçºÎ°ÑÎÕ£¿¶ÔÓÚÒµÎñ»¹Ã»ÓÐÀíÇå³þ¡¢ÒµÎñÊý¾ÝºÍ´¦ÀíÄÜÁ¦»¹Ã»ÓпªÊ¼±¬·¢Ê½Ôö³¤Ö®Ç°µÄ´´Òµ¹«Ë¾£¬²»ÐèÒª¿¼ÂÇ΢·þÎñ¼Ü¹¹Ä£Ê½£¬Õâʱºò×îÖØÒªµÄÊÇ¿ìËÙ¿ª·¢¡¢¿ìËÙ²¿Ê𡢿ìËÙÊÔ´í¡£
ËÄ¡¢Î¢·þÎñ¼Ü¹¹µÄ¹Ø¼üÎÊÌâ
1. ΢·þÎñ¼Ü¹¹µÄͨÐÅ»úÖÆ
£¨1£©¿Í»§¶ËÓë·þÎñÆ÷Ö®¼äµÄͨÐÅ
ÔÚ¾ÞʯÐͼܹ¹Ï£¬¿Í»§¶ËÓ¦ÓóÌÐò£¨web»òÕßapp£©Í¨¹ýÏò·þÎñ¶Ë·¢ËÍHTTPÇëÇó£»µ«ÊÇ£¬ÔÚ΢·þÎñ¼Ü¹¹Ï£¬ÔÀ´µÄ¾ÞʯÐÍ·þÎñÆ÷±»Ò»×é΢·þÎñÌæ´ú£¬ÕâÖÖÇé¿öÏ¿ͻ§¶ËÈçºÎ·¢ÆðÇëÇóÄØ£¿
Èçͼ4ÖÐËùʾ£¬¿Í»§¶Ë¿ÉÒÔÏòmicro service·¢ÆðRESTful HTTPÇëÇ󣬵«ÊÇ»áÓÐÕâÖÖÇé¿ö·¢Éú£º¿Í»§¶ËΪÁËÍê³ÉÒ»¸öÒµÎñÂß¼£¬ÐèÒª·¢Æð¶à¸öHTTPÇëÇ󣬴ӶøÔì³ÉϵͳµÄÍÌÍÂÂÊϽµ£¬ÔÙ¼ÓÉÏÎÞÏßÍøÂçµÄÑӳٸߣ¬»áÑÏÖØÓ°Ïì¿Í»§¶ËµÄÓû§ÌåÑé¡£

Fig4 - calling services
directly
ΪÁ˽â¾öÕâ¸öÎÊÌ⣬һ°ã»áÔÚ·þÎñÆ÷¼¯ÈºÇ°ÃæÔÙ¼ÓÒ»¸ö½ÇÉ«£ºAPI gateway£¬ÓÉËü¸ºÔðÓë¿Í»§¶È¶Ô½Ó£¬²¢½«¿Í»§¶ËµÄÇëÇóת»¯³É¶ÔÄÚ²¿·þÎñµÄһϵÁе÷Óá£ÕâÑù×ö»¹ÓиöºÃ´¦ÊÇ£¬·þÎñÉý¼¶²»»áÓ°Ïìµ½¿Í»§¶Ë£¬Ö»ÐèÒªÐÞ¸Ä
API gateway¼´¿É¡£¼ÓÁËAPI gatewayÖ®ºóµÄϵͳ¼Ü¹¹Í¼Èçͼ5Ëùʾ¡£

Fig5 - API gateway
£¨2£©ÄÚ²¿·þÎñÖ®¼äµÄͨÐÅ
ÄÚ²¿·þÎñÖ®¼äµÄͨÐÅ·½Ê½ÓÐÁ½ÖÖ£º»ùÓÚHTTPÐÒéµÄͬ²½»úÖÆ£¨REST¡¢RPC£©£»»ùÓÚÏûÏ¢¶ÓÁеÄÒì²½ÏûÏ¢´¦Àí»úÖÆ£¨AMQP-based
message broker£©¡£
DubboÊǰ¢Àï°Í°Í¿ªÔ´µÄ·Ö²¼Ê½·þÎñ¿ò¼Ü£¬ÊôÓÚͬ²½µ÷Ó㬵±Ò»¸öϵͳµÄ·þÎñÌ«¶àʱ£¬ÐèÒªÒ»¸ö×¢²áÖÐÐÄÀ´´¦Àí·þÎñ·¢ÏÖÎÊ
Ì⣬ÀýÈçʹÓÃZooKeeperÕâÀàÅäÖ÷þÎñÆ÷½øÐзþÎñµÄµØÖ·¹ÜÀí£º·þÎñµÄ·¢²¼ÕßÒªÏòZooKeeper·¢ËÍÇëÇ󣬽«×Ô¼ºµÄ·þÎñµØÖ·ºÍº¯ÊýÃû³ÆµÈÐÅÏ¢¼Ç¼
ÔÚ°¸£»·þÎñµÄµ÷ÓÃÕßÒªÖªµÀ·þÎñµÄÏà¹ØÐÅÏ¢£¬¾ßÌåµÄ»úÆ÷µØÖ·ÔÚZooKeeper²éѯµÃµ½¡£ÕâÖÖͬ²½µÄµ÷ÓûúÖÆ×ã¹»Ö±¹Û¼òµ¥£¬Ö»ÊÇûÓС°¶©ÔÄ¡ª¡ªÍÆËÍ¡±»ú
ÖÆ¡£
AMQP-basedµÄ´ú±íϵͳÊÇkafka¡¢RabbitMQµÈ¡£ÕâÀà·Ö²¼Ê½ÏûÏ¢´¦Àíϵͳ½«¶©ÔÄÕߺÍÏû·ÑÕß½âñîºÏ£¬ÏûÏ¢µÄÉú²úÕß²»ÐèÒªÏû·ÑÕßÒ»Ö±ÔÚÏߣ»ÏûÏ¢µÄÉú²úÕßÖ»ÐèÒª°ÑÏûÏ¢·¢Ë͸øÏûÏ¢´úÀí£¬Òò´ËÒ²²»ÐèÒª·þÎñ·¢ÏÖ»úÖÆ¡£
Á½ÖÖͨÐÅ»úÖÆ¶¼Óи÷×ÔµÄÓŵãºÍȱµã£¬Êµ¼ÊÖеÄϵͳ¾³£°üº¬Á½ÖÖͨÐÅ»úÖÆ¡£ÀýÈ磬ÔÚ·Ö²¼Ê½Êý¾Ý¹ÜÀíÖУ¬¾ÍÐèҪͬʱÓõ½Í¬²½HTTP»úÖÆºÍÒì²½ÏûÏ¢´¦Àí»úÖÆ¡£
2. ·Ö²¼Ê½Êý¾Ý¹ÜÀí
£¨1£©´¦Àí¶ÁÇëÇó
ÔÚÏßÉ̵êµÄ¿Í»§ÕË»§ÓÐÏ޶µ±¿Í»§ÊÔͼϵ¥Ê±£¬ÏµÍ³±ØÐëÅжÏ×ܵĶ©µ¥½ð¶îÊÇ·ñ³¬¹ýËûµÄÐÅÓÿ¨¶î¶È¡£ÐÅÓÿ¨¶î¶ÈÓÉCustomerService¹Ü
Àí¡¢Ï¶©µ¥µÄ²Ù×÷ÓÉOrderService¸ºÔð£¬Òò´ËOrder ServiceҪͨ¹ýRPCµ÷ÓÃÏòCustomer
ServiceÇëÇóÊý¾Ý£»ÕâÖÖ·½·¨Äܹ»±£Ö¤Ã¿´ÎOrder Service¶¼»ñÈ¡µ½×¼È·µÄ¶î¶È£¬µ¥È±µãÊǶàÒ»´ÎRPCµ÷ÓᢶøÇÒCustomer
Service±ØÐë±£³ÖÔÚÏß¡£
»¹ÓÐÒ»ÖÖ´¦Àí·½Ê½ÊÇ£¬ÔÚOrderServiceÕâ±ß´æ·ÅÒ»·ÝÐÅÓÿ¨¶î¶ÈµÄ¸±±¾£¬ÕâÑù¾Í²»ÐèҪʵʱ·¢ÆðRPCÇëÇ󣬵«ÊÇ»¹ÐèÒªÒ»ÖÖ»úÖÆ±£Ö¤¡ª¡ªµ±Customer
ServiceÓµÓеÄÐÅÓÿ¨¶î¶È·¢Éú±ä»¯Ê±£¬Òª¼°Ê±¸üдæ·ÅÔÚOrder ServiceÕâ±ßµÄ¸±±¾¡£
£¨2£©´¦Àí¸üÐÂÇëÇó
µ±Ò»·ÝÊý¾ÝλÓÚ¶à¸ö·þÎñÉÏʱ£¬±ØÐë±£Ö¤Êý¾ÝµÄÒ»ÖÂÐÔ¡£
·Ö²¼Ê½ÊÂÎñ£¨Distributed transactions£©
ʹÓ÷ֲ¼Ê½ÊÂÎñ·Ç³£Ö±¹Û£¬¼´Òª¸üÐÂCustomer ServiceÉϵÄÐÅÓÿ¨¶î¶È£¬¾Í±ØÐëͬʱ¸üÐÂÆäËû·þÎñÉϵĸ±±¾£¬ÕâЩ²Ù×÷Ҫôȫ×öҪôȫ²»×ö¡£Ê¹Ó÷ֲ¼Ê½ÊÂÎñÄܹ»±£Ö¤Êý¾ÝµÄǿһÖ£¬µ«ÊǻήµÍϵͳµÄ¿É
ÓÃÐÔ¡ª¡ªËùÓÐÏà¹ØµÄ·þÎñ±ØÐëʼÖÕÔÚÏߣ»¶øÇÒ£¬ºÜ¶àÏÖ´úµÄ¼¼ÊõÕ»²¢²»Ö§³ÖÊÂÎñ£¬ÀýÈçREST¡¢NoSQLÊý¾Ý¿âµÈ¡£
»ùÓÚʼþµÄÒì²½¸üУ¨Event-driven asynchronous updates£©
Customer ServiceÖеÄÐÅÓÿ¨¶î¶È¸Ä±äʱ£¬Ëü¶ÔÍâ·¢²¼Ò»¸öʼþµ½¡°message broker£¨ÏûÏ¢´úÀíÈË£©¡±£»ÆäËû¶©ÔÄÁËÕâ¸öʼþµÄ·þÎñÊܵ½Ìáʾºó¾Í¸üÐÂÊý¾Ý¡£Ê¼þÁ÷Èçͼ6Ëùʾ¡£ 
Fig 6 - replicating
the credit limit using events
Îå¡¢ÖØ¹¹¾ÞʯÐÍÓ¦ÓÃ
ÔÚʵ¼Ê¹¤×÷ÖУ¬ºÜÉÙÓлú»á²ÎÓëÒ»¸öȫеÄÏîÄ¿£¬ÐèÒª´¦ÀíµÄ²î²»¶à¶¼ÊÇ´æÔÚÕâÑùÄÇÑùÎÊÌâµÄ¸´ÔÓ¡¢´óÐÍÓ¦Óá£ÕâʱºòÈçºÎÔÚά»¤ÀÏ·þÎñµÄͬʱ£¬½«ÏµÍ³½¥½¥Öع¹ÎªÎ¢·þÎñ¼Ü¹¹ÄØ£¿
²»ÒªÈÃÊÂÇé¸ü»µ£¬ÓÐеÄÐèÇó¹ýÀ´Ê±£¬Èç¹û¿ÉÒÔ¶ÀÁ¢¿ª·¢ÎªÒ»¸ö·þÎñ£¬¾Íµ¥¶À¿ª·¢£¬È»ºóΪÀÏ·þÎñºÍзþÎñÖ±½Ó±àд½ºË®´úÂ루Glue
Code£©¡ª¡ªÕâ¸ö¹ý³Ì²»ÈÝÒ×£¬µ«ÕâÊÇ·Ö½â¾ÞÐÍ·þÎñµÄµÚÒ»²½£¬Èçͼ7Ëùʾ£» 
Fig-7 - extracting a
service
ʶ±ð¾ÞʯÐÍÓ¦ÓÃÖеĿÉÒÔ·ÖÀë³öÀ´µ±×öµ¥¶À·þÎñµÄÄ£¿é£¬Ò»°ãÊʺϷÖÀëµÄÄ£¿é¾ßÓÐÈçÏÂÌØµã£ºÁ½¸öÄ£¿é¶Ô×ÊÔ´µÄÐèÇóÊdzåÍ»µÄ£¨Ò»¸öÊÇCPUÃܼ¯ÐÍ¡¢Ò»¸ö
ÊÇIOÃܼ¯ÐÍ£©£»ÊÚȨ¼ø¶¨²ãÒ²Êʺϵ¥¶À·ÖÀë³öÒ»¸ö·þÎñ¡£Ã¿·ÖÀë³öÒ»¸ö·þÎñ£¬¾ÍÐèÒª±àд¶ÔÓ¦µÄ½ºË®´úÂëÀ´ÓëʣϵķþÎñͨÐÅ£¬ÕâÑù£¬ÔÚÖð½¥Ñݽø¹ý³ÌÖУ¬¾ÍÍê³É
ÁËÕû¸öϵͳµÄ¼Ü¹¹¸üС£
¹ØÓÚÖØ¹¹£¬ÓÐÆªÎÄÕÂÍÆ¼ö´ó¼ÒÔĶÁ¡ª¡ªÍƵ¹ÖØÀ´µÄ½²¾¿£¬¹ØÓÚÖØ¹¹Óкܶà¿ÉÒÔдµÄ£¬Ï£ÍûÎÒÄÜ¿ìËÙ½ø²½£¬¶àдµã×ܽáÓë´ó¼Ò·ÖÏí¡£
×ܽá
΢·þÎñ²¢²»ÊÇÖΰٲ¡µÄÁ¼Ò©£¬Ò²²»ÊÇʲôеļ¼Êõ£¬ÎÒ´ÓÖÐѧµ½µÄ×î´óµÄÒ»µã¾ÍÊÇscale cube£¬´ÓÕâ¸ö×ø±êÖá³ö·¢È¥¿¼ÂÇ´ó¹æÄ£ÏµÍ³µÄ¹¹½¨±È½ÏÈÝÒ×·ÖÎöºÍʵ¼ù¡£ |