ÔÚ֮ǰµÄ²©ÎÄÖУ¬ÎÒ½²½âÁËLinuxÈÝÆ÷¼¼ÊõµÄÏà¹ØÊµÏÖ£¬±ÈÈçÈçºÎʹÓÃDockerÀ´½¨Á¢Á÷ÏßÐ͵Ŀª·¢ºÍ²âÊÔÌåÑé¡£ÒòΪ¿ÉÒÔʵÏֿ粻ͬÀàÐÍ»ù´¡ÉèÊ©µÄ¼æÈÝ£¨±ÈÈ磬ÔÚAWSÉÏ£¬ÈÝÆ÷Ò²¿ÉÒÔÈçʵÌå·þÎñÆ÷ÉÏÒ»ÑùÇáËɵÄÔËÐУ©£¬ÈÝÆ÷ÈôúÂëµÄ²¿ÊðÒì³£±ã½Ý¡£ÔÚʵ¼Ê¹¤×÷ÖУ¬²âÊԺͿª·¢»·¾³µÄϸ΢²»Í¬ºÜ¿ÉÄܻᵼÖÂÓ¦ÓóÌÐòµÄ²¿Êðʧ°Ü£»Òò´ËÔÚÕâÖÖÇé¿öÏ£¬¶ÔÓÚ¿ª·¢ºÍ²âÊÔ¹¤×÷£¬ÈÝÆ÷¼¼Êõ¿ÉÒÔÈÿª·¢Õß»íÃâºÜ¶àÔ¤ÏëÖ®ÍâµÄ¹¤×÷ºÍÏà»¥ÍÆÍÑ¡£
ÔÚ±¾ÆªÎÄÕÂÖУ¬ÎÒÃǽ«ÌÖÂÛÊÇÊ²Ã´ÌØÐÔÈÃÈÝÆ÷¼¼ÊõÈç´ËÊÊÓ¦¿ª·¢ºÍ²âÊÔ¹¤×÷£¬Í¬ÑùÊÊÓÃÓÚÔÚAWSƽ̨ÉϹ¹½¨Ò»¸ö»ùÓÚ΢·þÎñµÄ¼Ü¹¹¡£¶ÔÓÚWebÓ¦ÓóÌÐòÀ´Ëµ£¬Î¢·þÎñ¼Ü¹¹¿ÉÒÔÈÃÓ¦ÓóÌÐòµÄ´úÂë¿â¸ü¼ÓÃô½Ý£¬²¢ÇÒÈÝÒ×¹ÜÀí¡£ÏÂÃæ£¬ÎÒÃǽ«½éÉÜÕâ¸ö¼Ü¹¹ÎªºÎ¿ÉÒÔ´ó·ùÌáÉý¿ª·¢ÕßÉú²úЧÂʵÄÔÒò£¬²¢Á˽âËüÄܹ»¿ìËÙµü´úºÍÀ©³äÒ»¸ö´úÂë¿âµÄÔÀí¡£¶ÔÓÚ¿ìËÙ·¢Õ¹ÖеĴ´Òµ¹«Ë¾À´Ëµ£¬Î¢·þÎñ¼Ü¹¹¿ÉÒÔÈÿª·¢ÍŶÓÔÚÑз¢¹ý³ÌÖиü¼ÓµÄÃô½ÝºÍÁé»î¡£
Web¿ª·¢¼òÊ·
Ê×ÏÈ£¬ÎÒÃÇÏȼò½àµØ»Ø¹ËÏÂ20ÄêÄÚ»ùÓÚWeb¿ª·¢µÄÀúÊ·£¬Ëü¿ÉÒÔÈÃÎÒÃÇ֪Ϥ΢·þÎñ¼Ü¹¹ÎªÊ²Ã´¿ÉÒÔÔÚWeb¿ª·¢ÁìÓòÈç´ËµÄÊ¢ÐУ¬Í¬Ê±Ò²Ë³±ãÁ˽âÕâ¸ö¼Ü¹¹¿ÉÒÔ½â¾öµÄÎÊÌâ¡£
ÔÚWebÓ¦ÓóÌÐò¿ª·¢µÄÔçÆÚ£¬Ó¦ÓóÌÐòͨ³£Ê¹ÓÃCommon Gateway Interface£¨CGI£©½¨Á¢£¬Õâ¸ö½Ó¿ÚÎªÍøÂç·þÎñÆ÷ÌṩÁË´¦Àíä¯ÀÀÆ÷·¢À´µÄHTTPÇëÇóʱִÐнű¾£¨Í¨³£Çé¿öÏÂÓÃPerl±àд£©µÄÄÜÁ¦¡£CGIµÄÀ©Õ¹ÐԷdz£ºÜºÃ£¬ÒòΪËüÐèҪΪÿ¸öÊäÈëÇëÇó¶¼½¨Á¢Ò»¸öPerl½ø³Ì¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬ÄǸöʱ´úµÄÍøÂç·þÎñÆ÷ͨ³£¶¼»áÌí¼ÓÄ£¿é»¯µÄÖ§³Ö¡£Apache£¬ÏÖÏÂ×îΪÁ÷ÐеÄÍøÂç·þÎñÆ÷Ö®Ò»£¬Ôö¼ÓÁË¡°mod_perl¡±ÈÃPerl´úÂë¿ÉÒÔÔÚÄÚ²¿ÔËÐУ¬ÕâÑùÒ»À´£¬CGI½Å±¾¾Í¿ÉÒÔÔÚ¸üÉÙµÄʱ¼äÄÚÖ´ÐС£
¼´Ê¹¶Ô±È´«Í³µÄCGIÀàËÆmod_perlÕâЩ¼¼ÊõÓÐÁ˺ܴóµÄÌáÉý£¬µ«ÈÔÈ»´æÔÚÎÊÌâ¡£Ò²¾ÍÊÇ˵£¬¸ºÔðÊÓͼ²ã£¨±ÈÈ磬ÔÚHTMLÒ³ÃæÉÏÖ´ÐÐÒ»¸ö¶¯Ì¬Ä£¿é£©µÄ´úÂëͨ³£»á±»»ìÈëÓ¦ÓóÌÐòÂß¼´úÂëÖС£Õâ¾ÍÒâζ×Å£¬Íê³ÉÒ»¸ö¼òµ¥µÄÈÎÎñ£¬±ÈÈçÔÚHTMLÁбíÖÐÔö¼ÓÒ»ÁУ¬»òÕßÔÚformÖÐÔö¼ÓÒ»¸öÔªËØ£¬Í¨³£ÐèÒªÐÞ¸ÄÒ»¸öµÍµÈ¼¶µÄÓ¦ÓóÌÐò´úÂë¡£Òò´Ë£¬Web³ÌÐò¿ª·¢¼¼ÊõÏÂÒ»¸ö½×¶ÎÖÐÑÜÉúÁË¡°server
pages¡±£¬ËüÔÊÐíÔÚHTMLǶÈëÖ´ÐдúÂë¡£ÕâÑùÒ»À´£¬Ó¦ÓóÌÐòÂß¼´úÂëÓëÊÓͼ´úÂë±»ºÜºÃµÄ·ÖÀë¡£ÔÚJava¿ª·¢ÁìÓò£¬Ò»¸ö±»³ÆÎª¡°Model
2¡±µÄÉè¼ÆÄ£Ê½µÃÒÔ¿ìËÙÑݱ䣬ÔÚÕâÀӦÓóÌÐò´úÂë·Åµ½Java servletsÖУ¬Êý¾ÝÔòͨ¹ýJava Beans½øÐУ¬ÊÓͼ²ãÂß¼ÔòʹÓÃÁËJava
server pages£¬Ïê¼ûÏÂͼ£º

ͼ1£ºModel 2Éè¼ÆÄ£ÐÍ
Ëæºó£¬ÔÚJavaÁìÓò£¬¡°Model 2¡±Ä£Ê½Ôں̵ܶÄʱ¼ä¾ÍÑÝ»¯³ÉÁË¡°Model-View-Controller£¨MVC£©¡±¿ò¼Ü£¬±ÈÈçApache
Struts¡£¶øÔÚÆäËûÁìÓò£¬Ruby on RailsÔò·Ç³£Ê¢ÐС£ÔÚMVCģʽÖУ¬¿ØÖÆÆ÷Àà»á¶¨Òå·½·¨£¬Í¨¹ý¡°route¡±ÀàÓ³Éä³ÉURLģʽ±»µ÷Óá£
¿ØÖÆÆ÷·½·¨»áÀûÓá°model¡±Àà·âºËÐÄÓ¦ÓóÌÐòʵÌåµÄÒµÎñÂß¼ºÍÊý¾Ý¡£×îºó£¬Ã¿¸ö¿ØÖÆ·½·¨¶¼»áäÖȾһ¸ö¡°view¡±ÓÃÓÚÏÔʾ£¬²¢ÐÞ¸ÄÏàӦģʽÀàµÄ·½·¨¡£ÔÚÕâÖÖģʽÏ£¬ÒµÎñ¡¢Ó¦ÓóÌÐò¡¢ÊÓͼÂß¼±»ºÜºÃµÄ·ÖÀ룬Èçͼ2£º

ͼ2£ºMVCÉè¼ÆÄ£ÐÍ
RESTÐÒéµÄÊ¢ÐÐ
¾ÍÔÚMVC±»¹ã·º½ÓÊܲ¢³ÉÎªÍøÂ翪·¢Í¾¾¶µÄͬʱ£¬½ø³Ì¼äͨÐÅ£¨IPC£©Ò²¿ªÊ¼ÀûÓÃÉÏÁË»ùÓÚÎı¾µÄÐòÁл¯¸ñʽ£¬±ÈÈçXMLºÍJSON¡£¶øÔÚÀàËÆSOAPÕâЩÐÒéʵÏÖ¿çHTTP
IPCµÄ²»¾Ãºó£¬ÍøÂ翪·¢ÒѲ»ÔÙÏÞÖÆÓÚ¸øä¯ÀÀÆ÷½¨Á¢½»¸¶ÄÚÈݵÄÓ¦ÓóÌÐò£¬ÎªÆäËû³ÌÐòÖ´ÐвÙ×÷ºÍ½»¸¶Êý¾ÝµÄÍøÂç·þÎñÒ²Öð½¥×ßÉÏÀúÊ·µÄÎę̀¡£ÕâÖÖ»ùÓÚ·þÎñµÄ¼Ü¹¹ÓµÓзdz£Ç¿´óµÄ¹¦ÄÜ£¬ÒòΪËüÏû³ýÁË´úÂë¿â¹²ÏíµÄÒÀÀµÐÔ£¬´Ó¶ø¿ª·¢Õß¿ÉÒÔ¸ü½øÒ»²½µÄ½âñîÓ¦ÓóÌÐò×é¼þ¡£¶øSOAPÐÒéºÍÏà¹ØµÄWS-*±ê×¼Ò²±äµÃÔ½À´Ô½¸´ÔÓ£¬²¢¸ü¼ÓÒÀÀµÓÚÓ¦ÓóÌÐò·þÎñÆ÷µÄʵÏÖ£¬ÖÁ´Ë¿ª·¢Õß¿ªÊ¼Í¶Éí¸üΪÇáÁ¿¼¶µÄRESTÐÒ顣ͬʱ£¬Ëæ×ÅÒÆ¶¯É豸µÄ¾çÔö£¬Web
UX developmentÖð½¥×ßÏòAJAXºÍJavaScript¿ò¼Ü£¬Ó¦ÓóÌÐò¿ª·¢Õß¿ªÊ¼¹ã·ºÊ¹ÓÃRESTÔÚ¿Í»§¶ËÉ豸ºÍÍøÂç·þÎñÆ÷Ö®¼ä×öÊý¾Ý´«Êä¡£
ºóÀ´ÈËÃÇ·¢ÏÖ£¬MVC¿ò¼ÜͬÑù·Ç³£ÊʺϿª·¢REST¶Ëµã¡£RESTÃæÏò×ÊÔ´µÄÌØÐÔ±»ºÜºÃµÄÓ³Éä³ÉÁË¿ØÖÆÆ÷ºÍÄ£ÐÍÀíÄÈçͼ3Ëùʾ£º

ͼ3£ºMVCµÄREST¶Ëµã
Monolithic¼Ü¹¹
Òò´Ë£¬Ôø½ñÓÉÄ£ÐÍ¡¢ÊÓͼ²ã¡¢¿ØÖÆÆ÷×é³É£¬Ö÷ÒªÓÃÓÚ¸øÓ¦ÓóÌÐò½»¸¶HTMLÄÚÈݵÄMVCÓ¦ÓóÌÐò·¢ÉúÁ˱¾ÖÊÉϵı仯¡ª¡ªËüÃDz»½ö¿ÉÒÔÖ§³Å´«Í³µÄHTML£¬Ò²¿ÉÒÔͨ¹ýREST¶ËµãÀ´Ö§³ÅJSON¡£Ó¦ÓóÌÐò±»²¿ÊðΪһ¸öµ¥Ò»µÄÎļþ£¨±ÈÈçJava£©»òÕßͬһ¸öĿ¼ÏµÄÎļþºÏ¼¯£¨±ÈÈçRails£©¡£È»¶ø²»ÈݺöÊÓµÄÊÇ£¬ËùÓÐÓ¦ÓóÌÐò´úÂë¶¼ÔËÐÐÔÚÏàͬµÄ½ø³ÌÖС£Òò´ËÔÚËõ·Å¹ý³ÌÖУ¬¿ª·¢ÕßÐèÒª½«Ó¦ÓóÌÐò´úÂëµÄ¶à¸ö¸±±¾²¿Êðµ½¶à¸öËùÐèµÄ·þÎñÆ÷ÉÏ¡£ÏÂͼ½âÎöÁËMonolithic¼Ü¹¹£º

ͼƬ4£ºMonolithic¼Ü¹¹
ÔÚMonolithic¼Ü¹¹ÖдæÔÚןܶàµÄÎÊÌâ¡£Ê×ÏÈ£¬Ëæ×ÅÓ¦ÓóÌÐòµÄ¹¦ÄܺͷþÎñÔ½À´Ô½¶à£¬´úÂ뽫±äµÃÔ½À´Ô½¸´ÔÓ¡£¶ÔÓÚеĿª·¢ÕßÀ´Ëµ£¬ÕâÒ»µã·Ç³£Í·ÌÛ¡£ÐÂÐͼ¯³É¿ª·¢»·¾³ÔÚ¼ÓÔØ¡¢±àÒëÕû¸öÓ¦ÓóÌÐò´úÂëʱҲ¿ÉÄÜ´æÔÚÎÊÌ⣬ͬʱÕâ¸ö¹ý³ÌµÄºÄʱҲ¿ÉÄܷdz£³¤¡£´ËÍ⣬ÒòΪËùÓгÌÐò´úÂë¶¼ÔËÐÐÔÚ·þÎñÆ÷ÉϵÄÏàͬ½ø³ÌÖУ¬µ¼ÖÂÓ¦ÓóÌÐòij¸ö×é³ÉµÄÀ©Õ¹Ò²·Ç³£ÄÑ¡£Èç¹ûij¸ö·þÎñÊÇÄÚ´æÃܼ¯Ð͵쬶øÁíÒ»¸öÊÇCPUÃܼ¯Ð͵ģ¬ÄÇô·þÎñÆ÷±ØÐëÓÐ×ã¹»µÄÄÚ´æºÍCPUÀ´Âú×ãÿ¸ö·þÎñµÄÐèÇó¡£Òò´Ë£¬¼øÓÚÿ¸ö·þÎñÆ÷¶¼Ê¹Ó÷dz£¸ßµÄCPUºÍÄڴ棬»ù´¡ÉèÊ©µÄÕûÌ廨·Ñ¿ÉÄÜ»á·Ç³£¸ß£¬ÌرðÊÇÔÚ×ÝÏòÀ©Õ¹²ßÂÔÏ¡£×îºó·Ç³£Î¢ÃîµÄÊÇ£¬Ó¦ÓóÌÐòµÄ×é³Éͨ³£Ò²»áÓ³Éäµ½Ñз¢ÍŶӵĽṹÉÏ¡£UX¹¤³Ìʦ¸ºÔðUI×é¼þµÄ½¨Á¢£¬Öмä²ã¿ª·¢Õßͨ³£¸ºÔð½¨Á¢·þÎñÆ÷¶Ëµã£¬¶øÊý¾Ý¿â¹¤³ÌʦºÍDBAÃÇÔò¸ºÔðÊý¾Ý·ÃÎÊ×é¼þºÍÊý¾Ý¿â¡£Èç¹ûij¸öUX¹¤³ÌʦÆÚÍû¸øÔö¼ÓһЩÏÔʾ£¬ËûÍùÍùÐèÒªÀ´×ÔÖмä²ãºÍÊý¾Ý¿â¹¤³ÌʦµÄÅäºÏ¡£¾ÍÏñˮһÑù£¬ÈËÃÇͨ³£ÆÚÍûÒÔ×îÉÙµÄ×èÁ¦Ö´ÐУ¬Ã¿¸ö¹¤³ÌʦҲ¶¼ÆÚÍûΪÆä¸ºÔðµÄÓ¦ÓóÌÐòǶÈ뾡¿ÉÄܶàµÄÂß¼¡£¼øÓÚÕâЩÎÊÌâ£¬Ëæ×Åʱ¼äµÄÍÆÒÆ£¬´úÂ뽫ԽÀ´Ô½ÄÑÒÔ¹ÜÀí¡£
΢·þÎñ¼Ü¹¹
΢·þÎñ¼Ü¹¹µÄ·¢Ã÷¾ÍÊÇÓÃÀ´½â¾öÕâЩÎÊÌâ¡£¶¨ÒåÔÚMonolithic¼Ü¹¹Ó¦ÓóÌÐòÖеķþÎñ½«²ð·Ö³É¶ÀÁ¢µÄ·þÎñ£¬ËüÃÇÔÚ²»Í¬µÄÖ÷»úÉϽøÐжÀÁ¢µÄ²¿Êð¡£

ͼƬ5£ºÎ¢·þÎñ¼Ü¹¹
ÿ¸ö΢·þÎñ¶¼¶ÔÓ¦ÁËÒ»¸ö¶ÀÁ¢µÄÒµÎñ¹¦ÄÜ£¬Ò²Ö»¶¨ÒåÁ˸ù¦±ØÐëµÄһЩ²Ù×÷¡£ÕâÌýÆðÀ´±È½ÏÀàËÆÃæÏò·þÎñ¼Ü¹¹£¨SOA£©£¬ÊÂʵÉÏ£¬Î¢·þÎñ¼Ü¹¹ºÍÃæÏò·þÎñµÄ¼Ü¹¹È·ÊµÓкܶ๲ͬµÄÌØÐÔ¡£Á½¸ö¼Ü¹¹¶¼Ê¹Ó÷þÎñµÄģʽ×éÖ¯´úÂ룬Á½Öּܹ¹ÔÚ²»Í¬µÄ·þÎñ¼ä¶¼½¨Á¢Á˷dz£Ã÷È·µÄ±ß½ç¡£È»¶ø£¬ÃæÏò·þÎñµÄ¼Ü¹¹ÆðÔ´ÓÚMonolithicÓ¦ÓóÌÐò½»»¥µÄÐèÇó£¬Í¨³£±Ë´Ë¶¼»áÌṩһ¸öAPI£¨»ùÓÚSOAP£©¡£ÔÚÃæÏò·þÎñ¼Ü¹¹ÖУ¬¼¯³ÉÖØ¶ÈÒÀÀµÓÚÖмä¼þ£¬ÌرðÔÚÆóÒµ·þÎñ×ÜÏߣ¨EBS£©ÖС£Î¢·þÎñ¼Ü¹¹Í¨³£»áÀûÓÃÒ»¸öÏûÏ¢×ÜÏߣ¬µ«ÊÇÎÞÂÛÈκÎÇé¿öÔÚÏûÏ¢²ã¶¼²»»á´æÔÚÂß¼¡ª¡ªËü´¿´âµÄ±»ÓÃÓÚ·þÎñÖ®¼äµÄ½»»¥¡£ÕâÓëESBÓÐ×ŷdz£ÏÔÖøµÄ²î±ð£¬ESB°üº¬ÁË´óÁ¿Âß¼¡ª¡ªÓÃÓÚÏûϢ·ÓÉ¡¢Ä£Ê½ÑéÖ¤¡¢ÏûÏ¢·ÒëºÍÒµÎñ¹æÔò¡£Òò´Ë£¬¶Ô±È´«Í³µÄÃæÏò·þÎñ¼Ü¹¹£¬Î¢·þÎñ¼Ü¹¹ÍùÍù¸üΪ¼òµ¥£¬²»»á°üº¬ÓÃÓÚ¶¨Òå·þÎñ¼ä½Ó¿ÚµÄͬ¼¶±ð¿ØÖƺ͹淶»¯Êý¾Ý½¨Ä£¡£Í¨¹ýʹÓÃ΢·þÎñ£¬¿ª·¢½«·Ç³£¿ìËÙ£¬·þÎñµÄÑܱäÒ²Ö»ÐèÆ¥ÅäÒµÎñµÄÐèÇó¡£
΢·þÎñ¼Ü¹¹µÄÁíÒ»¸öºËÐÄÓÅÊÆ¾ÍÊÇ·þÎñ¿ÉÒÔ»ùÓÚ×ÊÔ´µÄÐèÇó½øÐжÀÁ¢À©Õ¹¡£È¡´úÔËÐаüº¬´óÁ¿CPUºÍÄÚ´æµÄ´ó·þÎñÆ÷£¬Î¢·þÎñ¿ÉÒÔ±»²¿ÊðÔÚ¸üСµÄÖ÷»úÉÏ£¬ÕâЩÖ÷»úÖ»ÐèÒªÂú×ãÆä²¿Êð·þÎñµÄÐèÇó¡£Í¬Ê±£¬¿ª·¢Õß¿ÉÒÔ¸ù¾ÝÒµÎñµÄÐèÇóÑ¡Ôñ¿ª·¢ÓïÑÔ£¬±ÈÈ磺һ¸öͼÏñ´¦Àí·þÎñ¿ÉÒÔʹÓÃÀàËÆC++ÕâÑùµÄ¸ßÐÔÄÜÓïÑÔʵÏÖ£¬Ò»¸öÖ´ÐÐÊýѧ»òÕß¾²Ì¬²Ù×÷µÄ·þÎñ¿ÉÒÔʹÓÃPythonʵÏÖ£¬¶Ô×ÊÔ´½øÐÐÔöɾ²é¸ÄµÄ»ù´¡²Ù×÷ÔòÍùÍùͨ¹ýRuby½øÐС£ÔÚ΢·þÎñÖУ¬¿ª·¢Õß²¢²»ÐèÒª¿¼ÂÇMonolithic¼Ü¹¹ÖÐʹÓõġ°Ò»µ¶ÇС±Ä£ÐÍ¡ª¡ª±ÈÈçֻʹÓÃMVC¿ò¼ÜºÍµ¥Ò»µÄ±à³ÌÓïÑÔ¡£
È»¶ø£¬²»ÈݺöÊÓµÄÊÇ£¬Î¢·þÎñͬÑù´æÔÚһЩÁÓÊÆ¡£ÒòΪ·þÎñͨ³£²¿ÊðÔÚ¶à¸öÖ÷»úÉÏ£¬ºÜÄѳÖÐø¸ú×ÙÖ¸¶¨·þÎñ¾¿¾¹ÔËÐÐÔÚij̨Ö÷»úÉÏ¡£Í¬Ê±£¬ÒòΪ΢·þÎñ¼Ü¹¹Ê¹ÓõÄÖ÷»úÈÝÁ¿ÍùÍùСÓÚMonolithic¼Ü¹¹£¬Ëæ×Å΢·þÎñ¼Ü¹¹²»Í£µÄºáÏòÀ©Õ¹£¬Ö÷»úÊýÁ¿½«ÒÔÒ»¸ö·Ç³£¿Ö²ÀµÄËÙ¶ÈÔö³¤¡£ÔÚAWS»·¾³ÖУ¬Î¢·þÎñ¼Ü¹¹ÖжÀÁ¢·þÎñÐèÒªµÄ×ÊÔ´ÍùÍù»áСÓÚ×îСµÄEC2ʵÀýÀàÐÍ¡£´Ó¶øÔì³ÉÁ˳¬Á¿ÅäÖò¢ÀË·Ñ¿ªÏú¡£´ËÍ⣬Èç¹û·þÎñʹÓò»Í¬µÄ±à³ÌÓïÑÔ½«¿ª·¢£¬Õâ¾ÍÒâζ×Åÿ¸ö·þÎñµÄ²¿Êð¶¼ÐèÒªÍêÈ«²»Í¬µÄ¿âºÍ¿ò¼Ü£¬´Ó¶ø·þÎñµÄ²¿Êð·Ç³£¸´ÔÓ¡£
ÈÝÆ÷µÄÓÃÎäÖ®µØ
LinuxÈÝÆ÷¼¼ÊõµÄʹÓÿÉÒԺܴó³Ì¶ÈÉÏ»º½â΢·þÎñ¼Ü¹¹Ëù´øÀ´µÄÎÊÌâ¡£LinuxÈÝÆ÷¼¼ÊõʹÓÃÁËÀàËÆcnamesºÍnamespacesÕâÑùµÄÄں˽ӿڣ¬ËüÔÊÐí²»Í¬ÈÝÆ÷¹²ÏíÏàͬµÄÄںˣ¬Í¬Ê±ÈÝÆ÷Ö®¼ä»¹½øÐÐÁËÍêÈ«µÄ¸ôÀë¡£DockerÖ´Ðл·¾³Ê¹ÓÃÁËÒ»¸ö±»³ÆÎªlibcontainerµÄÄ£¿é£¬Ëü±ê×¼»¯ÁËÕâЩ½Ó¿Ú¡£DockerͬÑùΪÈÝÆ÷¾µÏñÌṩÁËÒ»¸öÀàGitHubµÄ×ÊÔ´¿âDockerHub£¬ÈÃÈÝÆ÷µÄ¹²ÏíºÍ·¢²¼·Ç³£¼òµ¥£¬Ò²ÕýÊÇÕâÖÖÏàͬÖ÷»úÉϵÄÈÝÆ÷¸ôÀë¼òÒ×Á˲»Í¬ÓïÑÔ¿ª·¢µÄ΢·þÎñ´úÂ벿Êð¡£Ê¹ÓÃDocker£¬ÎÒÃÇ¿ÉÒÔ´´½¨Ò»¸öDockerFileÀ´ÃèÊöËùÓÐÓõ½µÄÓïÑÔ¡¢¿ò¼ÜºÍ·þÎñ¼ä¿âµÄÒÀÀµÐÔ¡£¾Ù¸öÀý×Ó£¬ÏÂÃæ´úÂëÖеÄDockerFile¿ÉÒÔÓÃÀ´¶¨ÒåÒ»¸ö΢·þÎñµÄDocker¾µÏñ£¬ËüʹÓÃÁËRubyºÍSinatra¿ò¼Ü£º
FROM ubuntu:14.04 MAINTAINER John Doe <jdoe@example.com> RUN apt-get update && apt-get install -y curl wget default-jre git RUN adduser --home /home/sinatra --disabled-password --gecos '' sinatra RUN adduser sinatra sudo RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers USER sinatra RUN curl -sSL https://get.rvm.io | bash -s stable RUN /bin/bash -l -c "source /home/sinatra/.rvm/scripts/rvm" RUN /bin/bash -l -c "rvm install 2.1.2" RUN /bin/bash -l -c "gem install sinatra" RUN /bin/bash -l -c "gem install thin" |
ʹÓÃÕâ¸ö¾µÏñ½¨Á¢µÄÈÝÆ÷¿ÉÒÔ±ã½ÝµØ±»²¿Êðµ½Ò»¸öÖ÷»úÉÏ£¬Õâ¸öÖ÷»úͬʱ»¹ÔËÐÐÁËÁíÒ»¸öʹÓÃJavaºÍDropWizard
¶¨ÒåµÄDocker¾µÏñËù½¨Á¢µÄÈÝÆ÷¡£ÈÝÆ÷Ö´Ðлº½â¸ôÀëÁËÖ÷»úÉÏÔËÐеIJ»Í¬ÈÝÆ÷£¬Òò´Ë²»´æÔÚʹÓò»Í¬ÓïÑÔ¡¢¿âºÍ¿ò¼ÜÈÝÆ÷ËùÔì³ÉµÄ³åÍ»ÎÊÌâ¡£
ͬʱֵµÃ¸ßÐ˵ÄÊÇ£¬½üÆÚ·¢²¼µÄAmazon EC2 Container Service£¨Amazon ECS£©¿ÉÒÔ°ïÄã¸ã¶¨ËùÓÐÕâЩ¹¤×÷¡£Ê¹ÓÃAmazon
ECS£¬Äã¿ÉÒÔ¶¨ÒåÒ»¸ö±»³ÆÎª¡°cluster¡±µÄ¼ÆËã×ÊÔ´³Ø£¬Ò»¸öclusterÓÉÒ»¸ö»òÒÔÉϵÄEC2ʵÀý×é³É¡£Amazon
ECS¸ºÔð¹ÜÀí¼¯ÈºÖÐËùÓлùÓÚÈÝÆ÷µÄÓ¦ÓóÌÐò£¬Ìṩ telemetryºÍlogging£¬²¢¹ÜÀí¼¯ÈºµÄÈÝÁ¿ÓÅ»¯£¬½øÐиßЧµÄÈÎÎñµ÷¶È¡£Amazon
ECSÌṩÁËÒ»¸ö¡°ÈÎÎñÄÚÈÝ£¨task definition£©¡±µÄÀíÄËü¿ÉÒÔ¶¨Òå×é³ÉÒ»¸öÓ¦ÓóÌÐòµÄÒ»×éÈÝÆ÷¡£task
definitionÖеÄÿ¸öÈÝÆ÷¶¼Ö¸¶¨Á˸ÃÈÝÆ÷ËùÐèµÄ×ÊÔ´£¬¶øAmazon ECS½«»ùÓÚ¼¯ÈºÖеĿÉÓÃ×ÊÔ´À´µ÷¶ÈÕâ¸öÈÎÎñµÄÖ´ÐС£
΢·þÎñ¿ÉÒԷdz£±ã½ÝµØ±»¶¨ÒåΪһ¸öÈÎÎñ£¬Ëü¿ÉÒÔÓÉÁ½¸öÈÝÆ÷×é³É¡ª¡ªÒ»¸ö¸ºÔðÔËÐзþÎñÖÕ¶Ë´úÂ룬ÁíÒ»¸ö¸ºÔðÔËÐÐÊý¾Ý¿â¡£Amazon
ECS¿ÉÒÔ¹ÜÀíÕâЩÈÝÆ÷Ö®¼äµÄÒÀÀµÐÔ£¬Í¬Ê±Ò²¿ÉÒԿ缯Ⱥ½øÐÐ×ÊԴƽºâ¡£Í¬Ê±£¬Amazon ECS»¹¿ÉÒÔÎÞ·ìµÄ·ÃÎʶà¸öAWSÖØµã·þÎñ£¬±ÈÈçElastic
Load Balancing¡¢Amazon EBS¡¢Elastic Network InterfaceºÍAuto
Scaling¡£Í¨¹ýAmazon ECS£¬Ê¹Óà Amazon EC2²¿ÊðÓ¦ÓóÌÐòµÄËùÓлù±¾ÌØÕ÷¶¼¶Ô»ùÓÚÈÝÆ÷µÄÓ¦ÓóÌÐò¿ÉÓá£
´ËÍ⣬ÀàËÆAmazon ECS ÕâÑùµÄÈÝÆ÷½â¾ö·½°¸»¹¿ÉÒÔ¼ò»¯¡°service discovery£¨·þÎñËÑѰ£©¡±ÕâÑùµÄʵÏÖ¡£ÒòΪ΢·þÎñÍùÍù»á¿ç¶à¸öÖ÷»ú²¿Ê𣬲¢¸ù¾Ý¸ºÔؽøÐÐËõ·Å£¬service
discovery¸üÓÐÀûÓÚ·þÎñÖ®¼äµÄ¶¨Î»¡£ÔÚ×î¼òµ¥µÄÇé¿öÏ£¬¿ÉÒÔʹÓøºÔؾùºâÆ÷À´½øÐУ¬µ«ÊÇÔÚ¸üΪ¸´ÔӵĻ·¾³ÖУ¬Ò»¸öÕæÕýµÄ·Ö²¼Ê½ÅäÖ÷þÎñ·Ç³£ÓбØÒª£¬±ÈÈçApache
Zookeeper¡£Ê¹ÓÃAmazon ECS API£¬ÓëÀàËÆZookeeperÕâÑùµÄµÚÈý·½¹¤¾ßÕûºÏ½«·Ç³£ÈÝÒס£ÅäÖÃÁËZookeeperµÄÈÝÆ÷¿ÉÒÔ±»Ìí¼Óµ½Ò»¸ötask
definitionÖУ¬²¢¿ÉÒÔͨ¹ýAmazon ECSÔÚ¼¯ÈºÖеÄAmazon EC2µ÷¶ÈÖ´ÐС£
´ÓÐí¶à·½ÃæÀ´¿´£¬Ê¹ÓÃÈÝÆ÷¼¼Êõʵʩ΢·þÎñ¼Ü¹¹×ª±ä¶¼Óë¹ýÈ¥20ÄêWeb¿ª·¢µÄÑܱä·Ç³£ÀàËÆ¡£Ðí¶àÕâЩÑܱ䶼ÊÇΪÁ˸üºÃµÄÀûÓüÆËã×ÊÔ´£¬ÒÔ¼°¸ü·½±ãµÄά»¤Ô½À´Ô½¸´ÔÓµÄWebÓ¦ÓóÌÐò¡£ÈçÎÒÃÇËù¼û£¬Ê¹ÓÃLinuxÈÝÆ÷¼¼ÊõÀ´ÊµÏÖ΢·þÎñ¼Ü¹¹ÍêȫƥÅäÁËÕâÁ½¸öÐèÇó¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǼòµ¥µØ½Ó´¥ÁËʹÓÃAmazon
ECSÀ´¶¨ÒåÒ»¸ö΢·þÎñ¼Ü¹¹£¬µ«ÊÇÈÝÆ÷ÔÚ·Ö²¼Ê½ÏµÍ³ÖеÄʹÓÃÒѾԶ³¬¹ýÁË΢·þÎñ¡£ÔÚ·Ö²¼Ê½ÏµÍ³ÖУ¬Ô½À´Ô½¶àµÄÈÝÆ÷³ÉΪÁËfirst
class citizens£¬¶øÔÚδÀ´µÄ±¨¸æÖУ¬ÎÒ½«ÌÖÂÛΪʲô Amazon ECS¶Ô¹ÜÀí¸øÓèÈÝÆ÷µÄ¼ÆËãÊÇÖÁ¹ØÖØÒªµÄ¡£
|