WHAT - ʲôÊÇ΢·þÎñ
΢·þÎñ¼ò½é
Õâ´Î²Î¼ÓJavaOne2015×î´óµÄÀ§ÄѾÍÊÇÌýMicroserviceÏà¹ØµÄsession£¬ÎÞÂÛÄÚÈݶàôˮ£¬Ö»ÒªÌâÄ¿´ømicroservice£¬±Ø¶¨±¨²»ÉÏÃû£¬¿É¼ûMicroserviceÓжà»ð¡£×îϲ»¶ÆäÖÐÒ»Ò³¡£¹ØÓÚÕâ¸öµä¹Ê£¬¿ÉÒԲο¼this£¬´ËͼÊÊÓÃÓÚÒ»ÇиߴóÉϵÄÃû×Ö¡ª¡ª¼¼ÊõÓÐSOA£¬Agile£¬CLOUD£¬DevOpsµÈµÈ£¬¹Å´úÓеÀ£¬Æø£¬°ËØÔµÈµÈ¡£´ËÀàÃû´ÊµÄ×î´óÌØµã¾ÍÊÇ
Ò»½âÊ;Ͷ®£¬Ò»ÎʾͲ»Öª£¬Ò»ÌÖÂ۾ʹò¼Ü¡£

΢·þÎñµÄÁ÷ÐУ¬Martin¹¦²»¿Éû£¬ÕâÀÏÍ·Ò²ÊǸöÆæÈË£¬ÌرðÉó¤³éÏó¹éÄɺÍÖÆÔì¸ÅÄÎÒ¾õµÄÕâ¾ÍÊÇ×îÅ£±ÆµÄmarkting°¡£¬¸Ð¾õÕâÒ²ÊÇĿǰ¹úÈËǷȱµÄÄÜÁ¦¡£
Martin FowlerÊǹú¼ÊÖøÃûµÄOOר¼Ò£¬Ãô½Ý¿ª·¢·½·¨µÄ´´Ê¼ÈËÖ®Ò»£¬ÏÖΪThoughtWorks¹«Ë¾µÄÊ×ϯ¿ÆÑ§¼Ò.¸£ÀÕ£¨Martin
Fowler£©£¬ÔÚÃæÏò¶ÔÏó·ÖÎöÉè¼Æ¡¢UML¡¢Ä£Ê½¡¢Èí¼þ¿ª·¢·½·¨Ñ§¡¢XP¡¢Öع¹µÈ·½Ã棬¶¼ÊÇÊÀ½ç¶¥¼¶µÄר¼Ò£¬ÏÖΪThought
Works¹«Ë¾µÄÊ×ϯ¿ÆÑ§¼Ò¡£Thought WorksÊÇÒ»¼Ò´ÓÊÂÆóÒµÓ¦Óÿª·¢ºÍ¼¯³ÉµÄ¹«Ë¾¡£ÔçÔÚ20ÊÀ¼Í80Äê´ú£¬Fowler¾ÍÊÇʹÓöÔÏó¼¼Êõ¹¹½¨¶à²ãÆóÒµÓ¦Óõij«µ¼Õߣ¬ËûÖøÓм¸±¾¾µäÊé¼®£º
¡¶ÆóÒµÓ¦Óüܹ¹Ä£Ê½¡·¡¢¡¶UML¾«´â¡·ºÍ¡¶Öع¹¡·µÈ¡£¡ª¡ª °Ù¶È°Ù¿Æ
ÏÈÀ´¿´¿´´«Í³µÄweb¿ª·¢·½Ê½£¬Í¨¹ý¶Ô±È±È½ÏÈÝÒ×Àí½âʲôÊÇMicroservice Architecture¡£ºÍMicroserviceÏà¶ÔÓ¦µÄ£¬ÕâÖÖ·½Ê½Ò»°ã±»³ÆÎªMonolithic£¨±È½ÏÄÑ´«ÉñµÄ·Ò룩¡£ËùÓеŦÄÜ´ò°üÔÚÒ»¸ö
WAR°üÀ»ù±¾Ã»ÓÐÍⲿÒÀÀµ£¨³ýÁËÈÝÆ÷£©£¬²¿ÊðÔÚÒ»¸öJEEÈÝÆ÷£¨Tomcat£¬JBoss£¬WebLogic£©À°üº¬ÁË
DO/DAO£¬Service£¬UIµÈËùÓÐÂß¼¡£

Monolithic±È½ÏÊʺÏСÏîÄ¿£¬ÓŵãÊÇ£º
¿ª·¢¼òµ¥Ö±½Ó£¬¼¯ÖÐʽ¹ÜÀí
»ù±¾²»»áÖØ¸´¿ª·¢
¹¦Äܶ¼ÔÚ±¾µØ£¬Ã»Óзֲ¼Ê½µÄ¹ÜÀí¿ªÏúºÍµ÷ÓÿªÏú
ËüµÄȱµãÒ²·Ç³£Ã÷ÏÔ£¬Ìرð¶ÔÓÚ»¥ÁªÍø¹«Ë¾À´Ëµ£¨²»Ò»Ò»ÁоÙÁË£©£º
¿ª·¢Ð§ÂʵͣºËùÓеĿª·¢ÔÚÒ»¸öÏîÄ¿¸Ä´úÂ룬µÝ½»´úÂëÏ໥µÈ´ý£¬´úÂë³åÍ»²»¶Ï
´úÂëά»¤ÄÑ£º´úÂ빦ÄÜñîºÏÔÚÒ»Æð£¬ÐÂÈ˲»ÖªµÀºÎ´ÓÏÂÊÖ
²¿Êð²»Áé»î£º¹¹½¨Ê±¼ä³¤£¬ÈκÎСÐ޸ıØÐëÖØÐ¹¹½¨Õû¸öÏîÄ¿£¬Õâ¸ö¹ý³ÌÍùÍùºÜ³¤
Îȶ¨ÐÔ²»¸ß£ºÒ»¸ö΢²»×ãµÀµÄСÎÊÌ⣬¿ÉÒÔµ¼ÖÂÕû¸öÓ¦Óùҵô
À©Õ¹ÐÔ²»¹»£ºÎÞ·¨Âú×ã¸ß²¢·¢Çé¿öϵÄÒµÎñÐèÇó
ËùÒÔ£¬ÏÖÔÚÖ÷Á÷µÄÉè¼ÆÒ»°ã»á²ÉÓÃMicroservice Architecture£¬¾ÍÊÇ»ùÓÚ΢·þÎñµÄ¼Ü¹¹¡£¼òµ¥À´Ëµ£¬
΢·þÎñµÄÄ¿µÄÊÇÓÐЧµÄ²ð·ÖÓ¦Óã¬ÊµÏÖÃô½Ý¿ª·¢ºÍ²¿Êð ¡£ 
Óá¶The art of scalability¡·Ò»ÊéÀïÌáµ½µÄscale cube±È½ÏÈÝÒ×Àí½âÈçºÎ²ð·Ö¡£Äã¿´£¬ÎÒÃǽзֿâ·Ö±í£¬±ðÈË×ܽá³ÉÁËscale
cube£¬Õâ¾ÍÊdzéÏóµÄÄÜÁ¦°¡£¬°Ñ¸´ÔӵĶ«Î÷ÓÃ×î¼òµ¥µÄ¸ÅÄî½âÊͺÍ×ܽᡣXÖá´ú±íÔËÐжà¸ö¸ºÔؾùºâÆ÷Ö®ºóÔËÐеÄʵÀý£¬YÖá´ú±í½«Ó¦ÓýøÒ»²½·Ö½âΪ΢·þÎñ
£¨·Ö¿â£©£¬Êý¾ÝÁ¿´óʱ£¬»¹¿ÉÒÔÓÃZÖὫ·þÎñ°´Êý¾Ý·ÖÇø£¨·Ö±í£© 
΢·þÎñµÄ¾ßÌåÌØÕ÷
ÏÈ¿´¿´×î¹Ù·½µÄ¶¨Òå°É
The microservice architectural style is an approach
to developing a single application as a suite of small
services, each running in its own process and communicating
with lightweight mechanisms, often an HTTP resource
API. These services are **built around business capabilities**
and independently deployable by fully automated deployment
machinery. There is a bare minimum of centralized management
of these services , which may be written in different
programming languages and use different data storage
technologies.
-- James Lewis and Martin Fowler
°ÑMartinÀÏÍ·µÄ¶¨Òå´ó¸ÅµÄ·ÒëһϾÍÊÇÏÂÃæ¼¸Ìõ£¬Õâ¸ö¶¨Ò廹ÊÇÌ«³éÏóÊDz»ÊÇ£¬ÄǾͶÔÁË£¬¾ÍÊÇÒªÎñÐ飬¶¼ËµÃ÷°×ÁËË»¹ÕÒËû¸¶·Ñ×Éѯ°¡£¬Õâô¹ó¡£
1. һЩÁеĶÀÁ¢µÄ·þÎñ¹²Í¬×é³Éϵͳ
2. µ¥¶À²¿Êð£¬ÅÜÔÚ×Ô¼ºµÄ½ø³ÌÀï
3. ÿ¸ö·þÎñΪ¶ÀÁ¢µÄÒµÎñ¿ª·¢
4. ·Ö²¼Ê½µÄ¹ÜÀí
Martin×Ô¼ºÒ²ËµÁË£¬Ã¿¸öÈ˶Ô΢·þÎñ¶¼¿ÉÒÔÓÐ×Ô¼ºµÄÀí½â£¬²»¹ý´ó¸ÅµÄ±ê×¼»¹ÊÇÓÐһЩµÄ¡£
·Ö²¼Ê½·þÎñ×é³ÉµÄϵͳ
°´ÕÕÒµÎñ¶ø²»ÊǼ¼ÊõÀ´»®·Ö×éÖ¯
×öÓÐÉúÃüµÄ²úÆ·¶ø²»ÊÇÏîÄ¿
Smart endpoints and dumb pipes£¨ÎÒµÄÀí½âÊÇÇ¿·þÎñ¸öÌåºÍÈõͨÐÅ£©
×Ô¶¯»¯ÔËά£¨DevOps£©
ÈÝ´í
¿ìËÙÑÝ»¯
SOA vs Microservice
³ýÁËSmart endpoints and dumb pipes¶¼ºÜÈÝÒ×Àí½â¶ÔÂð£¿ÏàÐźܶàÈ˶¼»áÎÊÒ»¸öÎÊÌ⣬ÕâÊDz»ÊǾÍÊÇSOA»»Á˸ö¸ÅÄ¹ÒÑòÍ·Âô¹·Èâ°¡£¬ÓÐ˵·¨°ÑMicroservice½Ð³É
Lightway SOA¡£Ò²Óкܶഫͳש¼ÒÌø³öÀ´ËµMicroservice¾ÍÊÇSOA¡£ÆäʵMartinҲû·ñÈÏSOAºÍMicroserviceµÄ¹ØÏµ¡£
ÎÒ¸öÈËÀí½â£¬MicroserviceÊÇSOAµÄ´«³Ð£¬µ«Ò»¸ö×î±¾ÖʵÄÇø±ð¾ÍÔÚÓÚSmart endpoints
and dumb pipes£¬»òÕß˵ÊÇÕæÕýµÄ·Ö²¼Ê½µÄ¡¢È¥ÖÐÐÄ»¯µÄ¡£Smart endpoints and
dumb pipes±¾ÖʾÍÊÇÈ¥ESB£¬°ÑËùÓеġ°Ë¼¿¼¡±Âß¼°üÀ¨Â·ÓÉ¡¢ÏûÏ¢½âÎöµÈ·ÅÔÚ·þÎñÄÚ²¿£¨Smart
endpoints£©£¬È¥µôÒ»¸ö´óһͳµÄESB£¬·þÎñ¼äÇᣨdumb pipes£©Í¨ÐÅ£¬ÊDZÈSOA¸ü³¹µ×µÄ²ð·Ö¡£
HOW - Ôõô¾ßÌåʵ¼ù΢·þÎñ
ÌýÉÏÈ¥ºÃÏñ¶¼²»´í£¬¾ßÌåÔõôÂ䵨°¡£¿ÕâÐèÒª»Ø´ðÏÂÃæ¼¸¸öÎÊÌ⣺
¿Í»§¶ËÈçºÎ·ÃÎÊÕâЩ·þÎñ£¿
·þÎñÖ®¼äÈçºÎͨÐÅ£¿
Õâô¶à·þÎñ£¬ÔõôÕÒ?
·þÎñ¹ÒÁËÔõô°ì£¿
¿Í»§¶ËÈçºÎ·ÃÎÊÕâЩ·þÎñ£¿
ÔÀ´µÄMonolithic·½Ê½¿ª·¢£¬ËùÓеķþÎñ¶¼ÊDZ¾µØµÄ£¬UI¿ÉÒÔÖ±½Óµ÷Óã¬ÏÖÔÚ°´¹¦Äܲð·Ö³É¶ÀÁ¢µÄ·þÎñ£¬ÅÜÔÚ¶ÀÁ¢µÄÒ»°ã¶¼ÔÚ¶ÀÁ¢µÄÐéÄâ»úÉϵÄ
Java½ø³ÌÁË¡£¿Í»§¶ËUIÈçºÎ·ÃÎÊËûµÄ£¿ºǫ́ÓÐN¸ö·þÎñ£¬Ç°Ì¨¾ÍÐèÒª¼Çס¹ÜÀíN¸ö·þÎñ£¬Ò»¸ö·þÎñÏÂÏß/¸üÐÂ/Éý¼¶£¬Ç°Ì¨¾ÍÒªÖØÐ²¿Êð£¬ÕâÃ÷ÏÔ²»·þÎñÎÒÃÇ
²ð·ÖµÄÀíÄî£¬ÌØ±ðµ±Ç°Ì¨ÊÇÒÆ¶¯Ó¦ÓõÄʱºò£¬Í¨³£ÒµÎñ±ä»¯µÄ½Ú×à¸ü¿ì¡£ÁíÍ⣬N¸öС·þÎñµÄµ÷ÓÃÒ²ÊÇÒ»¸ö²»Ð¡µÄÍøÂ翪Ïú¡£»¹ÓÐÒ»°ã΢·þÎñÔÚϵͳÄÚ²¿£¬Í¨³£ÊÇÎÞ
״̬µÄ£¬Óû§µÇ¼ÐÅÏ¢ºÍȨÏÞ¹ÜÀí×îºÃÓÐÒ»¸öͳһµÄµØ·½Î¬»¤¹ÜÀí£¨OAuth£©¡£
ËùÒÔ£¬Ò»°ãÔÚºǫ́N¸ö·þÎñºÍUIÖ®¼äÒ»°ã»áÒ»¸ö´úÀí»òÕß½ÐAPI Gateway£¬ËûµÄ×÷ÓðüÀ¨
Ìṩͳһ·þÎñÈë¿Ú£¬ÈÃ΢·þÎñ¶Ôǰ̨͸Ã÷
¾ÛºÏºǫ́µÄ·þÎñ£¬½ÚÊ¡Á÷Á¿£¬ÌáÉýÐÔÄÜ
Ìṩ°²È«£¬¹ýÂË£¬Á÷¿ØµÈAPI¹ÜÀí¹¦ÄÜ
ÎÒµÄÀí½âÆäʵÕâ¸öAPI Gateway¿ÉÒÔÓкܶà¹ãÒåµÄʵÏÖ°ì·¨£¬¿ÉÒÔÊÇÒ»¸öÈíÓ²Ò»ÌåµÄºÐ×Ó£¬Ò²¿ÉÒÔÊÇÒ»¸ö¼òµ¥µÄMVC¿ò¼Ü£¬ÉõÖÁÊÇÒ»¸öNode.jsµÄ·þÎñ¶Ë¡£ËûÃÇ×îÖØÒªµÄ×÷
ÓÃÊÇΪǰ̨£¨Í¨³£ÊÇÒÆ¶¯Ó¦Óã©Ìṩºǫ́·þÎñµÄ¾ÛºÏ£¬Ìṩһ¸öͳһµÄ·þÎñ³ö¿Ú£¬½â³ýËûÃÇÖ®¼äµÄñîºÏ£¬²»¹ýAPI
GatewayÒ²ÓпÉÄܳÉΪµ¥µã¹ÊÕϵã»òÕßÐÔÄܵį¿¾±¡£
Ò»°ãÓùýTaobao Open PlatformµÄ¾ÍÄܺÜÈÝÒ×µÄÌå»á£¬TAO¾ÍÊÇÕâ¸öAPI Gateway¡£ 
·þÎñÖ®¼äÈçºÎͨÐÅ£¿
ÒòΪËùÓеÄ΢·þÎñ¶¼ÊǶÀÁ¢µÄJava½ø³ÌÅÜÔÚ¶ÀÁ¢µÄÐéÄâ»úÉÏ£¬ËùÒÔ·þÎñ¼äµÄͨÐоÍÊÇIPC£¨inter process
communication£©£¬ÒѾÓкܶà³ÉÊìµÄ·½°¸¡£ÏÖÔÚ»ù±¾×îͨÓõÄÓÐÁ½ÖÖ·½Ê½¡£Õ⼸ÖÖ·½Ê½£¬Õ¹¿ªÀ´½²¶¼¿ÉÒÔд±¾Ê飬¶øÇÒ´ó¼ÒÒ»°ã¶¼±È½ÏÊìϤϸ½ÚÁË£¬
¾Í²»Õ¹¿ª½²ÁË¡£
ͬ²½µ÷ÓÃ
REST£¨JAX-RS£¬Spring Boot£©
RPC£¨Thrift, Dubbo£©
Òì²½ÏûÏ¢µ÷ÓÃ(Kafka, Notify, MetaQ) 
Ò»°ãͬ²½µ÷ÓñȽϼòµ¥£¬Ò»ÖÂÐÔÇ¿£¬µ«ÊÇÈÝÒ׳öµ÷ÓÃÎÊÌ⣬ÐÔÄÜÌåÑéÉÏÒ²»á²îЩ£¬ÌرðÊǵ÷Óòã´Î¶àµÄʱºò¡£RESTfulºÍRPCµÄ±È½ÏÒ²ÊÇÒ»¸öºÜÓÐÒâ
˼µÄ»°Ìâ¡£Ò»°ãREST»ùÓÚHTTP£¬¸üÈÝÒ×ʵÏÖ£¬¸üÈÝÒ×±»½ÓÊÜ£¬·þÎñ¶ËʵÏÖ¼¼ÊõÒ²¸üÁé»îЩ£¬¸÷¸öÓïÑÔ¶¼ÄÜÖ§³Ö£¬Í¬Ê±ÄÜ¿ç¿Í»§¶Ë£¬¶Ô¿Í»§¶ËûÓÐÌØÊâµÄÒª
Çó£¬Ö»Òª·â×°ÁËHTTPµÄSDK¾ÍÄܵ÷Óã¬ËùÒÔÏà¶ÔʹÓõĹãһЩ¡£RPCÒ²ÓÐ×Ô¼ºµÄÓŵ㣬´«ÊäÐÒé¸ü¸ßЧ£¬°²È«¸ü¿É¿Ø£¬ÌرðÔÚÒ»¸ö¹«Ë¾ÄÚ²¿£¬Èç¹ûÓÐͳһ¸ö
µÄ¿ª·¢¹æ·¶ºÍͳһµÄ·þÎñ¿ò¼Üʱ£¬ËûµÄ¿ª·¢Ð§ÂÊÓÅÊÆ¸üÃ÷ÏÔЩ¡£¾Í¿´¸÷×Եļ¼Êõ»ýÀÛʵ¼ÊÌõ¼þ£¬×Ô¼ºµÄÑ¡ÔñÁË¡£
¶øÒì²½ÏûÏ¢µÄ·½Ê½ÔÚ·Ö²¼Ê½ÏµÍ³ÖÐÓÐÌØ±ð¹ã·ºµÄÓ¦Óã¬Ëû¼ÈÄܼõµÍµ÷Ó÷þÎñÖ®¼äµÄñîºÏ£¬ÓÖÄܳÉΪµ÷ÓÃÖ®¼äµÄ»º³å£¬È·±£ÏûÏ¢»ýѹ²»»á³å¿å±»µ÷Ó÷½£¬Í¬Ê±ÄÜ
±£Ö¤µ÷Ó÷½µÄ·þÎñÌåÑ飬¼ÌÐø¸É×Ô¼º¸Ã¸ÉµÄ»î£¬²»ÖÁÓÚ±»ºǫ́ÐÔÄÜÍÏÂý¡£²»¹ýÐèÒª¸¶³öµÄ´ú¼ÛÊÇÒ»ÖÂÐԵļõÈõ£¬ÐèÒª½ÓÊÜÊý¾Ý×îÖÕÒ»ÖÂÐÔ£»»¹ÓоÍÊǺǫ́·þÎñÒ»°ãÒª
ʵÏÖÃݵÈÐÔ£¬ÒòΪÏûÏ¢·¢ËͳöÓÚÐÔÄܵĿ¼ÂÇÒ»°ã»áÓÐÖØ¸´£¨±£Ö¤ÏûÏ¢µÄ±»ÊÕµ½ÇÒ½öÊÕµ½Ò»´Î¶ÔÐÔÄÜÊǺܴóµÄ¿¼Ñ飩£»×îºó¾ÍÊDZØÐëÒýÈëÒ»¸ö¶ÀÁ¢µÄbroker£¬Èç
¹û¹«Ë¾ÄÚ²¿Ã»Óм¼Êõ»ýÀÛ£¬¶Ôbroker·Ö²¼Ê½¹ÜÀíÒ²ÊÇÒ»¸öºÜ´óµÄÌôÕ½¡£
Õâô¶à·þÎñ£¬ÔõôÕÒ?
ÔÚ΢·þÎñ¼Ü¹¹ÖУ¬Ò»°ãÿһ¸ö·þÎñ¶¼ÊÇÓжà¸ö¿½±´£¬À´×ö¸ºÔؾùºâ¡£Ò»¸ö·þÎñËæÊ±¿ÉÄÜÏÂÏߣ¬Ò²¿ÉÄÜÓ¦¶ÔÁÙʱ·ÃÎÊѹÁ¦Ôö¼ÓеķþÎñ½Úµã¡£·þÎñÖ®¼äÈçºÎÏ໥
¸ÐÖª£¿·þÎñÈçºÎ¹ÜÀí£¿Õâ¾ÍÊÇ·þÎñ·¢ÏÖµÄÎÊÌâÁË¡£Ò»°ãÓÐÁ½Àà×ö·¨£¬Ò²¸÷ÓÐÓÅȱµã¡£»ù±¾¶¼ÊÇͨ¹ýzookeeperµÈÀàËÆ¼¼Êõ×ö·þÎñ×¢²áÐÅÏ¢µÄ·Ö²¼Ê½¹ÜÀí¡£µ±
·þÎñÉÏÏßʱ£¬·þÎñÌṩÕß½«×Ô¼ºµÄ·þÎñÐÅÏ¢×¢²áµ½ZK£¨»òÀàËÆ¿ò¼Ü£©£¬²¢Í¨¹ýÐÄÌøÎ¬³Ö³¤Á´½Ó£¬ÊµÊ±¸üÐÂÁ´½ÓÐÅÏ¢¡£·þÎñµ÷ÓÃÕßͨ¹ýZKѰַ£¬¸ù¾Ý¿É¶¨ÖÆËã·¨£¬
ÕÒµ½Ò»¸ö·þÎñ£¬»¹¿ÉÒÔ½«·þÎñÐÅÏ¢»º´æÔÚ±¾µØÒÔÌá¸ßÐÔÄÜ¡£µ±·þÎñÏÂÏßʱ£¬ZK»á·¢Í¨Öª¸ø·þÎñ¿Í»§¶Ë¡£
¿Í»§¶Ë×ö£ºÓŵãÊǼܹ¹¼òµ¥£¬À©Õ¹Áé»î£¬Ö»¶Ô·þÎñ×¢²áÆ÷ÒÀÀµ¡£È±µãÊǿͻ§¶ËҪά»¤ËùÓе÷Ó÷þÎñµÄµØÖ·£¬Óм¼ÊõÄѶȣ¬Ò»°ã´ó¹«Ë¾¶¼ÓгÉÊìµÄÄÚ²¿¿ò¼ÜÖ§³Ö£¬±ÈÈçDubbo¡£
·þÎñ¶Ë×ö£ºÓŵãÊǼòµ¥£¬ËùÓзþÎñ¶ÔÓÚǰ̨µ÷Ó÷½Í¸Ã÷£¬Ò»°ãÔÚС¹«Ë¾ÔÚÔÆ·þÎñÉϲ¿ÊðµÄÓ¦ÓòÉÓõıȽ϶ࡣ 
Õâô¶à·þÎñ£¬·þÎñ¹ÒÁËÔõô°ì£¿
Ç°ÃæÌáµ½£¬Monolithic·½Ê½¿ª·¢Ò»¸öºÜ´óµÄ·çÏÕÊÇ£¬°ÑËùÓ즵°·ÅÔÚÒ»¸öÀº×ÓÀһÈÙ¾ãÈÙ£¬Ò»Ëð¾ãËð¡£¶ø·Ö²¼Ê½×î´óµÄÌØÐÔ¾ÍÊÇÍøÂçÊDz»¿É¿¿
µÄ¡£Í¨¹ý΢·þÎñ²ð·ÖÄܽµµÍÕâ¸ö·çÏÕ£¬²»¹ýÈç¹ûûÓÐÌØ±ðµÄ±£ÕÏ£¬½á¾Ö¿Ï¶¨ÊÇØ¬ÃΡ£ÎÒÃǸÕÓöµ½Ò»¸öÏßÉϹÊÕϾÍÊÇÒ»¸öºÜ²»ÆðÑÛµÄSQL¼ÆÊý¹¦ÄÜ£¬ÔÚ·ÃÎÊÁ¿ÉÏÉý
ʱ£¬µ¼ÖÂÊý¾Ý¿âload±ë¸ß£¬Ó°ÏìÁËËùÔÚÓ¦ÓõÄÐÔÄÜ£¬´Ó¶øÓ°ÏìËùÓе÷ÓÃÕâ¸öÓ¦Ó÷þÎñµÄǰ̨ӦÓá£ËùÒÔµ±ÎÒÃǵÄϵͳÊÇÓÉһϵÁеķþÎñµ÷ÓÃÁ´×é³ÉµÄʱºò£¬ÎÒÃÇ
±ØÐëÈ·±£ÈÎÒ»»·½Ú³öÎÊÌâ¶¼²»ÖÁÓÚÓ°ÏìÕûÌåÁ´Â·¡£ÏàÓ¦µÄÊÖ¶ÎÓкࣺܶ
ÖØÊÔ»úÖÆ
ÏÞÁ÷
ÈÛ¶Ï»úÖÆ
¸ºÔؾùºâ
½µ¼¶£¨±¾µØ»º´æ£©
ÕâЩ·½·¨»ù±¾É϶¼ºÜÃ÷ȷͨÓ㬾Ͳ»Ïêϸ˵Ã÷ÁË¡£±ÈÈçNetflixµÄHystrix£ºhttps://github.com/Netflix/Hystrix 
WHY - ΢·þÎñµÄÓ¦ÓÃ
ÕâÀïÓÐÒ»¸öͼ·Ç³£ºÃµÄ×ܽá΢·þÎñ¼Ü¹¹ÐèÒª¿¼ÂǵÄÎÊÌ⣬°üÀ¨
API Gateway
·þÎñ¼äµ÷ÓÃ
·þÎñ·¢ÏÖ
·þÎñÈÝ´í
·þÎñ²¿Êð
Êý¾Ýµ÷Óà 
΢·þÎñµÄÓŵãºÍȱµã£¨»òÕß˵ÌôÕ½£©Ò»ÑùÃ÷ÏÔ¡£
Óŵã
¿ª·¢¼òµ¥
¼¼ÊõÕ»Áé»î
·þÎñ¶ÀÁ¢ÎÞÒÀÀµ
¶ÀÁ¢°´ÐèÀ©Õ¹
¿ÉÓÃÐÔ¸ß
ȱµã£¨ÌôÕ½£©
¶à·þÎñÔËάÄѶÈ
ϵͳ²¿ÊðÒÀÀµ
·þÎñ¼äͨÐųɱ¾
Êý¾ÝÒ»ÖÂÐÔ
ϵͳ¼¯³É²âÊÔ
ÖØ¸´¹¤×÷
ÐÔÄÜ¼à¿Ø
ûÓÐ×îºÃµÄ£¬Ö»ÓÐÊʺÏ×Ô¼ºµÄ¡£ 
¶ÔÓÚ´óµÄ»¥ÁªÍø¹«Ë¾£¬Î¢·þÎñ¼Ü¹¹ÊÇѪҺ£¬ÊÇϰ¹ß£¬Ã¿¼Ò¹«Ë¾¶¼ÓÐ×Ô¼ºµÄÌ×·ºÍ¼Ü¹¹£¬Ï¸½ÚÓв»Í¬£¬µ«ÊǺËÐÄÀíÄîÊÇͨµÄ¡£
¶ÔÓÚÒ»°ãµÄ¹«Ë¾¶øÑÔ£¬Êµ¼ù΢·þÎñÓзdz£´óµÄ¼¼ÊõÌôÕ½£¬ÓÚÊǺõ²ÅÓÐÁËÕâô¶àIT¹©Ó¦ÉÌ¿¼ÂÇÕâÀïµÄÉÌ»ú¡£Î¢·þÎñ±È½ÏÊʺÏδÀ´ÓÐÒ»¶¨µÄÀ©Õ¹¸´ÔÓ¶È£¬ÇÒÓÐ
ºÜ´óÓû§ÔöÁ¿Ô¤ÆÚµÄÓ¦Óã¬ËµÈË»°¾ÍÊÇÐÂÐ˵Ļ¥ÁªÍø¹«Ë¾¡£´´Òµ³õÆÚ£¬²»¿ÉÄÜÂò´óÁ¿µÄ»úÆ÷»òÕߺܹóµÄ»úÆ÷£¬µ«ÊÇÓÖ±ØÐ뿼ÂÇÓ¦¶Ô³É¹¦ºóµÄ¾ÞÁ¿µÄÓû§£¬Î¢·þÎñ¼Ü¹¹
³ÉÁË×îºÃµÄÑ¡Ôñ¡£

So What - ˼¿¼
¿´µ½ÉÏÃæµÄͼ£¬²»ÊDz»¾õµÃÌØ±ðµÄÊìϤ£¿ÆäʵÎÒÃÇNÄêǰ¾ÍÓõĹö¹ÏÀÃÊìÁ˺ò»ºÃ£¿¿ã×Ó¶¼ÍÏÁË£¬Äã¾Í¸øÎÒ¿´Õâ¸ö£¿

from: https://github.com/Netflix/recipes-rss/wiki/Architecture
Æäʵ±¾À´ËùνµÄ΢·þÎñ¾ÍÊǶԻ¥ÁªÍøÔÚÓ¦Óü¼ÊõµÄÒ»¸ö×ܽá¹éÄÉ£¬IT³§É̹ĴµËùÓиÅÄîÎÞ·ÇÊÇΪÁËÉúÒ⣨business£©£¬SOAÊÇ£¬CloudÊÇ£¬MicroserviceÒ²ÊÇ¡£ÏÂÃæÍæÐ¦ºÜÓÐÒâ˼µÄ¸ÅÀ¨ÁËÕâ¸öÇé¿ö£¨ÎÒ¼ÓÁ˵ÚÒ»ÌõÏߣ¬Ôͼ¼ûÕâÀ 
ËùÒÔ΢·þ¶ÔÎÒÃǵÄ˼¿¼ÎÒ¾õµÃ¸ü¶àµÄÊÇ˼άÉϵ쬶ÔÒÑ΢·þÎñ¼Ü¹¹£¬ ¼¼ÊõÉϲ»ÊÇÎÊÌ⣬Òâʶ±È¹¤¾ßÖØÒª¡£
°´ÕÕÒµÎñ »òÕ߿ͻ§ÐèÇó×éÖ¯×ÊÔ´£¨ÕâÊÇ×îÄѵģ©
×öÓÐÉúÃüµÄ²úÆ·£¬¶ø²»ÊÇÏîÄ¿
Í·ÀÇÕ½¶Ó£¬È«Õ»»¯
ºǫ́·þÎñ¹á³¹Single Responsibility Principle
VM->Docker £¨to PE£©
DevOps (to PE)
ͬʱ£¬¶ÔÓÚ¿ª·¢Í¬Ñ§£¬ÓÐÕâô¶àµÄÖмä¼þºÍÇ¿´óµÄPEÖ§³Ö¹ÌÈ»ÊǺÃÊ£¬ÎÒÃÇÒ²ÐèÒªÉîÈëÈ¥Á˽âÕâЩÖмä¼þ±³ºóµÄÔÀí£¬ÖªÆäȻ֪ÆäËùÒÔÈ»£¬ÉèÏëÏ£¬Èç¹ûÎÒÃÇÊÇÒ»¸öС¹«Ë¾µÄCTO£¬À뿪µÄ°¢ÀïµÄ´ó»·¾³£¬ÔÚÓÐÏ޵ļ¼Êõ×ÊÔ´ÈçºÎͨ¹ý¿ªÔ´¼¼Êõʵʩ΢·þÎñ£¿
×îºó£¬Ò»°ãÌᵽ΢·þÎñ¶¼Àë²»¿ªDevOpsºÍDocker£¬Àí½â΢·þÎñ¼Ü¹¹ÊǺËÐÄ£¬devopsºÍdockerÊǹ¤¾ß£¬ÊÇÊֶΡ£Ï´ÎÔÚ³éʱ¼äÔÙѧϰÕûÀíÏ¡£ 
|