HerokuÒѾÄܺܺõÄÂú×ãºÜ¶àÈ˵ÄÐèÇ󣬵«µ±ÎÒÃDz»¶Ï׳´ó£¬ÎÊÌâºÍÆ¿¾±ÆµÏÖ£¬Îª´ËÎÒÃÇ¿ªÊ¼Ñ°Çó½â¾öÖ®µÀ£¬Ê×ÏȹØ×¢µÄÊÇ¿ªÔ´ÉçÇøÖÐÖ§³ÖDockerµÄƽ̨£¬ÈçFlynn¡¢Deis¡¢CoreOS¡¢KubernetesµÈ£¬µ«¶¼²»ÀíÏ룬ºóͨ¹ýʹÓÃÑÇÂíÑ·ECS£¬×îºóÈ·¶¨ÁËEmpire£¬ÓÃEmpireÍê³É´ÓHerokuµ½ÑÇÂíÑ·ECSµÄÎÞÍ´Ç¨ÒÆ£¬¹ý³ÌÓëÌôÕ½¶¼ÔÚÎÄÖÐ×öÁË˵Ã÷¡£
½ñÌ죬Remind¿ªÔ´ÁËÎÒÃÇ×ÔÎÒÍйܵÄPaaSϵͳ - Empire¡£EmpireÄÜΪÄãÌṩһ¸ö»ùÓÚDockerÈÝÆ÷µÄ¼¯Èº£¬·ûºÏ12Òò×ÓÓ¦Óù淶£¬»ùÓÚÇ¿´óµÄÑÇÂíÑ·EC2
Container Service(ECS£¬EC2 ÈÝÆ÷·þÎñ)¹¹Ôì¶øÀ´£¬¾ßÓй¦ÄÜÍêÉÆµÄµÄÃüÁîÐнçÃæ¡£
ÒѾÓÐÁËHeroku£¬ÇÒHerokuÒѾÄܺܺõÄÂú×ãºÜ¶àÈ˵ÄÐèÇó£¬ÎªÊ²Ã´ÎÒÃÇ»¹ÐèÒª×Ô¼ºÔìÒ»Ì×EmpireÕâÑùµÄ¶«Î÷£¿ÕâÆªÎÄÕ½²ÊöÁËΪʲôÎÒÃǾö¶¨´ÓHerokuÇ¨ÒÆ³öÀ´£¬ÎÒÃÇÓöµ½ÁËÄÄЩÌôÕ½£¬ºÍÎÒÃÇÔõôÓÃEmpireÍê³É´ÓHerokuµ½ÑÇÂíÑ·ECSµÄÎÞÍ´Ç¨ÒÆ¡£
½²½²Ò»µãÀúÊ·
ÔÚ2011ÄêµÄʱºò£¬Remind»¹ÊÇÒ»¸öÍйÜÔÚHerokuµÄÒ»¸öÕûÌåµ¥Ò»µÄRailsÓ¦Óá£ÄǸöʱºòÒ»Çж¼ºÜ¼òµ¥£ºÒ»¸öÓ¦ÓÃʹÓü¸¸ödynosÒѾ×ãÒÔÓ¦¸¶µ±Ê±²»´óµÄÁ÷Á¿¡£µ±Ê±ÎÒÃÇÑ¡ÔñHerokuÒòΪËüÈÃÎÒÃÇÄÜרעÓÚ¿ª·¢²úÆ·¶øÎÞÐè¹ØÐÄ»ù´¡ÉèÊ©£¨infrastructure£©£¬¶ÔÓÚÒ»¸öµ±Ê±²»µ½Ê®¸öÈ˵ÄÍŶÓÀ´Ëµ£¬ÕâºÜÖØÒª¡£»ØÏë¹ýÈ¥£¬ÕâÎÞÒÉÊÇÎÒÃÇ×öµÄ×îºÃµÄÒ»¸ö¾ö¶¨¡£
µ«ÎÒÃÇ¿ªÊ¼×³´ó
¶øÔÚ½ñÌ죬ÊÂÇé±äµÃÓе㲻ͬÁË¡£ÎÒÃÇÓг¬¹ý50¸öÔ±¹¤£¬2500Íò¿Í»§£¬50¶à¸öºó¶Ë·þÎñÖ§³Å×ŲúÆ· - ÆäÖÐÓÐЩÊDzúÆ·µÄºËÐIJ¿·Ö£¬ÆäËûÔòÊDz»Í¬ÍŶӿª·¢³öÀ´ÓÃÀ´Âú×ã¸÷ÖÖÐèÇóµÄ¡£ÎªÁËÂú×ãÕâÖÖ¹æÄ££¬ÎÒÃÇÓÃÁ˳¬¹ý250¸ödynos¡£
ÎÒÃÇÂýÂý·¢ÏÖ£¬ÎÒÃǵķ¢Õ¹Ä£Ê½ÔÚºÜ¶à·½Ãæ¿´À´ÊǶÀÒ»ÎÞ¶þµÄ¡£ÎÒÃÇ´òÔìµÄÊÇÒ»¸ö¸øÀÏʦʹÓõIJúÆ·£¬ÔÚѧÉúµÄ·µÐ£¼¾ÒµÎñ»áѸËÙÔö³¤
- ÿÌìÓжà´ïµ½35ÍòÐÂÓû§£¬³¬¹ý500ÍòÌõÏûÏ¢£¬Ã¿30·ÖÖÓϵͳ¾Í»á³öÏÖÒ»¸ö·åÖµ£¨heavy spike£©¡£
ÎÒÃÇ¿ªÊ¼Òâʶµ½£¬Èç¹ûÏëÓÐÒ»¸öÄܹ»Âú×ãÎÒÃÇÒµÎñÔö³¤µÄ»ù´¡ÉèÊ©£¬Heroku¿ÉÄÜÎÞ·¨Íê³ÉÕâһĿ±ê¡£ÎÒÃÇÓöµ½µÄÖ÷ÒªÎÊÌâÓУº
1.ȱ·¦¶Ô°²È«µÄ¿ØÖÆ¡£ÎÒÃÇÊ®·ÖÍÆ³ç΢·þÎñ/SOAµÄ¼Ü¹¹£¬È»ºóÎÒÃÇÓÐÒ»´ó¶ÑÄÚ²¿µÄ·þÎñ¡£ÔÚHerokuÖУ¬Ã¿Ò»¸ö·þÎñ¶¼±©Â¶ÔÚÍâÍø£¬ÕâЩ·þÎñ±¾ÉíÄÑÃâÓÐ×Ô¼ºµÄÈõµã£¨nasties£©£¬Òò¶øÐèÒªÉí·ÝÈÏÖ¤£¬DoS·ÀÓù£¨DoS
mitigation£©£¬²»¶ÏµÄ´ò°²È«²¹¶¡µÈ¡£Õâ¸úÎÒÃÇÏëÏóµÄÓкܴó²»Í¬¡£
2.ȱ·¦¿É¼ûÐÔ£¨visibility£©£ºÎÒÃÇÐèÒª¶ÔÎÒÃǵÄÓ¦ÓõÄÐÔÄÜÓиü¼Ó͸µÄÈÏʶ¡£¾¡¹ÜHerokuÌṩÁËÕâÖÖ¿ÉÄÜ£¬È´¸úÎÒÃÇÏëÏóÖеÄÈÔÓоàÀ룬ÎÒÃÇÐèÒªÖªµÀÔÚ²Ù×÷ϵͳºÍÖ÷»úµÄ²ãÃæ¶¼·¢ÉúÁËʲô¡£
3.ȱ·¦Áé»îÐÔ£ºÎÒÃÇÐèÒª¹¹½¨ÐÔÄܸü¼ÓÇ¿´ó£¬²»½ö½öÖ»ÊÇÊÜHTTP¹Ü¿ØµÄ·þÎñ¡£ÎÒÃÇÎÞ·¨¿ØÖÆÂ·Óɲ㣨routing
layer£©£¬Òò¶øÊµÏÖһЩÖмä¼þÈçÏÞÖÆËÙÂÊ£¬Ìí¼Ó³£¼ûµÄÈÏÖ¤ºÍ½«Â·ÓÉij·¾¶µÄÇëÇóµ½²»Í¬µÄÉÏÓηþÎñÆ÷µÈ³¬¹ýÁËÆä±¾Ó¦ÓеÄÄѶȡ£
ÎÒÃǵÄѰµÀ֮·
´óÔ¼°ëÄêǰ£¬ÎÒÃÇ¿ªÊ¼Ì¸ÂÛÈçºÎ²ÅÄÜ´ÓHerokuǨ³ö¡£ÎÒÃÇÁгöÁ˱ØÐëÂú×ãµÄÌõ¼þºÍÒª´ïµ½µÄÄ¿±ê£º
1.AWS£ºÎÒÃǵ±Ê±ÒѾʹÓÃÁ˺ܶàÑÇÂíÑ·µÄ·þÎñ£¬ÈçRedshiftºÍDynamoDB£¬Òò¶øÄÜÖ±½ÓÔËÐÐÔÚEC2ÉÏÊDZØÐëµÄÒªÇó¡£ÕâÒ²ÄÜÈÃÎÒÃǰÑÕâЩÊý¾Ý´æ´¢Ëø¶¨µ½Ìض¨µÄ°²È«×飨security
groups£©¡£
2.¼òÒ×»¯ÔËά£¨Operational Simplicity£©£ºHerokuÔÚÈÃÔËάµÄ¹ý³Ì£¨È粿Êð£¬À©Õ¹£¬ÅäÖøüУ©¼òÒ×»¯·½Ãæ×öµÄÊ®·Ö³öÉ«¡£ÎÒÃÇҲϣÍûÇ¨ÒÆºóÈÔÈ»Äܹ»±£³ÖÕâ¸öË®×¼¡£ÎÒÃDz»Ô¸Òâ¿´µ½²¿ÊðÐÂÓ¦ÓõÄʱÔËάÈËÔ±±ØÐëµ½³¡£¬²¢ÇÒÎÒÃÇÏ£Íû²¿ÊðÄÜ×ñѹ²Í¬µÄģʽ¡£
3.Docker£ºÕâ²»ÊÇÒ»¸öÓ²ÐÔµÄÒªÇ󣬵«ÊÇÎÒÃÇ»¹ÊÇÏë¼ÌÐøÊ¹ÓÃÈÝÆ÷À´×÷Ϊ²¿ÊðµÄµ¥Ôª£¬ÒòΪ:
ÈÝÆ÷ÄܸôÀëÒÀÀµ£¬·â×°µÄ°üÒÆÖ²ÐԸߣ¬Ò×ÓÚ·¢²¼£¬ºÜÀàËÆGoµÄ°ü¡£
ÈÝÆ÷ÌṩÁ˸üºÃµÄ¿ª·¢»·¾³£¬ÒòΪ¿ª·¢ºÍÉú²ú»·¾³µÄÏàËÆ¶È£¨dev/prod
parity£©¸ü¸ß¡£
ÈÝÆ÷ÄÜÏÞÖÆÎÒÃDz¿ÊðµÄʱºòÄÇЩ²»È·¶¨µÄ²¿·Ö¡£»ù´¡ÉèÊ©£¨Imutability
in infrastructure£©ÖеIJ»¿É±äÐÔÓкܴóµÄºÃ´¦¡£
ÈÝÆ÷ÄܸüÓÐЧµØÀûÓÃ×ÊÔ´£¬½µµÍ³É±¾¡£
4.ÈÝ´íÐÔ£¨Resilience£©£ºÎÒÃǶÔå´»úÕâÒ»ÎÊÌâµÄ̬¶ÈÊ®·ÖÑÏËà¡£
²¢ÇÒÎÒÃÇÖªµÀÔËÐÐ×ÅÎÒÃÇÓ¦ÓúͷþÎñµÄƽ̨±¾ÉíÓ¦¸Ã½¡×³ÇÒÈÝ´íÐԸߡ£Í¬Ê±£¬ÎÞå´»ú²¿ÊðÒ²ÊÇÒªÇóµÄÒ»²¿·Ö¡£
·½°¸Ò»£ºÊ¹ÓÃʱÏÂʱ÷ֵļ¼Êõ£¨all the Alphas£©
ÎÒÃÇ¿ªÊ¼µ÷²é¿ªÔ´ÉçÇøÖÐÖ§³ÖDockerµÄƽ̨£¬ÎÒÃDz»ÏëÈ¥´´ÔìÊÂÎï¡£µ±Ê±£¬Á½¸ö¿´ÆðÀ´×îÓÐÏ£ÍûµÄϵͳÊÇFlynnºÍDeis¡£ÒòΪһЩÔÒò£¬ÎÒÃÇÍŶӲ»ÊǺܷÅÐĽ«ÕâЩÏîĿͶÈëÉú²ú»·¾³Ê¹Óá£Flynnµ±Ê±»¹ÉÐδ·¢²¼Îȶ¨°æ±¾£¬ÇÒÕýÔÚ½øÐв»Ð¡µÄ¼Ü¹¹µ÷Õû¡£²¢ÇÒËûÃǵĸºÔØÊ¹ÓõľùΪÍêÈ«×ÔÓеķ½°¸£¬¶øÒ»Ð©³ÉÊìµÄ·½°¸ÈçHAProxy¡¢Nginx»òÕßELB¶¼Ã»ÓÐÓõ½¡£ÎÒÃǼòµ¥µØÊÔÓÃÁËÒ»ÏÂDeis£¬×îÖÕ¾õµÃÆä¹ýÓÚ¸´ÔÓ¡£Í¬Ê±ÎÒÃÇÒ²Á˽⵽£¬ÉÐδÓÐÒ»¸ö¹æÄ£ÓëÎÒÃÇÏ൱ÇÒÔÚÉú²ú»·¾³Ê¹ÓÃÕâÁ½ÖÖ¼¼ÊõµÄ¹«Ë¾¡£
»ùÓÚÎÒÃǵÄÐèÇó£¬ReminedµÄÒ»¸öС¶Ó¹¤³Ìʦ¿ªÆôÁËEmpireÏîÄ¿£¬ÎÒÃÇ½è¼øÁËDeisºÍFlynnµÄÏîÄ¿µÄһЩÀíÄҲ½è¼øÁËÆäËûÏîÄ¿µÄ³¤´¦ÈçNetflixµÄAsgardºÍSoundCloudµÄBazooka¡£Æð³õÎÒÃǾö¶¨ÒÔCoreOSΪ»ù´¡£¬Ê¹ÓÃfleet×÷Ϊºó¶ËÀ´µ÷¶È»úÆ÷¼¯Èº¡£µ«Êǰ´ÕÕÎÒÃÇ×î³õµÄÉè¼Æ¾ö¶¨£¬µ÷¶ÈµÄºó¶ËÓ¦¸ÃÊDzå¼þʽ£¨pluggable£©µÄ¡£ÎÒÃÇÓÐÒ»¸ö×Ô¶¨ÒåµÄ·ÓɺͷþÎñ·¢ÏֵIJ㣬ʹÓõÄÊÇÓÉconfdºÍregistrator½øÐÐÅäÖõÄngixn£¬Õâ¶¼ÔËÐеĺܺã¬Ö±µ½ÎÒÃÇ¿ªÊ¼½øÐдíÎó²âÊÔ£¬ÎÒÃDzſªÊ¼Óöµ½Á˺ܶàetcd´àÈõµÄÎÊÌ⣨µ±Ê±etcdµÄ°æ±¾»¹ÊÇ0.4£©£¬Ò²Óöµ½ÁËfleetµ±ÖеÄbug
£¬²¢ÇÒÎÒÃÇÉÐδ½â¾ö²»å´»ú²¿ÊðµÄÎÊÌâ¡£
ÎÒÃÇÇåÐѵÄÈÏʶµ½ÎÒÃÇÐèÒªÒ»¸ö±Èfleet¸üºÃµÄµ÷¶Èºó¶Ë¡£ÔÚÑо¿KubernetesµÄʱºòÎÒÃÇ·¢ÏÖÆäÐèÒªÔËÐÐÍøÂ縲¸Ç²ã£¨network
overlay)£©ÓÚÊÇÎÒÃǰÑËü¸ø·ñ¾öÁË£¬ÒòΪÎÒÃÇʵÔÚ²»Ïë×Ô¼ºÔËÐв¢¹ÜÀí¼¯Èº¡£
·½°¸¶þ£ºÊ¹ÓÃÑÇÂíÑ·ECS
³¢ÊÔ½«ºÜ¶àеĻòÕßÉÐÔÚ¿ìËÙµü´úµÄÏîĿƴ´Õ³ÉÒ»¸öÉú²ú¼¶±ðµÄPassƽ̨½á¹ûÖ¤Ã÷Ö»»á¸øÈË´øÀ´µÄʧÍûºÍ¹ýÍ·¡£ºÜÏÔÈ»£¬ÎÒÃÇÓ¦¸ÃÍËÒ»²½ÒÔÇóº£À«Ìì¿Õ£¬¾¡Á¿¼ò»¯²¢ÌÞ³ý²»Îȶ¨µÄ×é¼þ¡£
ÇɺϵÄÊÇÕâ¸öʱºòÑÇÂíÑ·µÄECS·¢²¼ÁË£¬ÎÒÃÇÁ¢¼´·¢ÏÖµ½Ëü¼¸ºõÄܽâ¾öÎÒÃÇÓöµ½µÄËùÓÐÎÊÌ⣺
ÕâÊÇÒ»¸öµÚÈý·½¹ÜÀí£¨managed service£©µÄ·þÎñ£¬Òò¶øÎÒÃDz»ÐèÒª×Ô¼ºÔËÐкÍά»¤×Ô¼ºµÄ¼¯Èº·þÎñ¡£
Ëû¼¯³ÉÁËAWSµÄELB£¨Elastic Load Balancing£©£¬ÕâÄܽâ¾öÁãå´»ú£¬connection
drainingºÍͨ¹ý»ùÓÚDNSµÄ·þÎñ·¢ÏÖ¡£
ʧЧģʽ£¨failure mode£©µÄ±íÏֵĸúÎÒÃÇÔ¤ÆÚµÄЧ¹ûÒ»Ñù¡£ÎÒÃÇ¿ÉÒÔ½«»úÆ÷³ØµÄËùÓÐÖ÷»ú£¨entire
pool of machines£©Í£Ö¹£¬²¢ÇÒµ±ÐµĻúÆ÷Æô¶¯µÄʱºòÕû¸ö·þÎñÓÖÄָܻ´Õý³£¡£
ÎÒÃǶÔAWSµÄ·þÎñ¸ü¼Ó·ÅÐÄ¡£AWSµÄ·þÎñ£¬·¢Õ¹¿ì¶øÇÒ²½ÂÄÎȶ¨£¬»ùÓÚËü¹¹½¨Éú²ú¼¶±ðµÄPaaSÊ®·ÖÍêÃÀ¡£
¾¹ýһЩÆð³õµÄµ÷²éºÍÔÐÍ£¬ÎÒÃǰѵ÷¶Èºó¶Ë»»»Øµ½ÑÇÂíÑ·ECS¡£Ã¿Ò»¸ö¶¨ÒåÔÚProcfileÀïÃæµÄ½ø³Ì¶¼»á±»Ö±½ÓÓ³Éä³ÉÒ»¸öÑÇÂíÑ·ECSÖеÄÒ»¸ö·þÎñ¡£ÒòΪÑÇÂíÑ·ECS¼¯³ÉÁËELB£¬ÎÒÃÇÒ²¾ö¶¨ÆúÓÃ×Ô¼ºµÄ·Óɲ㣨routing
layer£©²¢Ê¹Óý«ELBÒÀ¸½µ½Ò»¸öappµÄweb½ø³Ì¡£Õâ¸ö´øÀ´Ò»¸öÎÊÌ⣬ÎÒÃǸÃÈçºÎ½â¾öϵͳÖеķþÎñ·¢ÏÖÎÊÌ⣿ÎÒÃǾö¶¨Ñ¡ÓÃʹÓÃÒ»¸ö˽ÓеÄRoute53È»ºó´´½¨CNAME¼Ç¼ָÏòÿһ¸öÓ¦ÓõÄweb½ø³Ì¡£ÎÒÃÇʹÓÃDHCPµÄÑ¡Ï£¨option
sets£©À´ÉèÖÃËÑË÷·¾¶Îª.empireÀ´´ïµ½·þÎñÖ»ÐèÒªÖªµÀËûÃÇÏë½»Á÷µÄ·þÎñµÄÃû³Æ¼´¿É£¨È磺http://acme-incc£©¡£ÎÒÃÇÈ¥³ýÁËϵͳÖв»Îȶ¨µÄµØ·½£¬Èçetcd£»ÎÒÃǵÄÖ÷»ú¼¯ÈºÏÖÔÚÖ»ÊǼòµ¥µÄ°²×°ÓÐDockerºÍÑÇÂíÑ·ECSµÄ´úÀíµÄUbuntuÖ÷»ú¡£
¶ÔÓÚÎÒÃǵļܹ¹£¬Õâ¸öϵͳÔËÐÐÊ®·ÖÁ¼ºÃ¡£ÎÒÃÇÓÐÒ»¸örouterµÄÓ¦ÓÃÒÀ¸½ÔÚ¶Ô¹«Íø¿É¼ûµÄELB£¨ÔÚEmpireÀÕâ¸öÓ¦ÓÃĬÈÏÊÇÖ»ÄÚ²¿¿É¼û£¬µ«ÊÇ¿ÉÒÔͨ¹ý¸øÆäÌí¼ÓÒ»¸öÓòÃûÈÃÆä¹«¹²¿É¼û£©¡£
Õâ¸öÓ¦ÓÃÅÜ×ÅÒ»¸önginx£¬¸ºÔðµ½ÏàÓ¦µÄ˽ÓÐÓ¦ÓõÄ·ÓÉ£¬²»¹ÜÕâÊÇÎÒÃǵÄAPI£¬WebµÄ¿ØÖÆÌ¨£¨dashboard£©»òÕ߯äËû·þÎñ¡£ËüÒ²»á¸ºÔðÇëÇóµÄIDÉú³ÉËùÒÔÎÒÃÇ¿ÉÒÔ·½±ãµÄ×·×ÙÇëÇóÔÚ·þÎñ¼äµÄÒÆ¶¯¡£ÕâÀï×î´óµÄºÃ´¦ÊÇÏÖÔÚrouter¿ÉÒÔÒÔEmpireÖÐÆäËûÓ¦ÓÃÒ»ÑùµÄ·½Ê½À´¹ÜÀí£»Ò»ÑùµÄ²¿Êð·½Ê½£»Ò»ÑùµÄÅäÖ÷½Ê½£»²¢ÇÒ¿ÉÒÔÇáÒ׵Ŀª·¢»·¾³ÓÃÔËÐÐÆðÀ´£¬Ö»ÐèÒªÒ»¸ö¼òµ¥µÄdocker
run remind101/routerÃüÁî¡£ÔÚÒÔºó£¬ËüÉõÖÁ¿ÉÒÔ»»³ÉÈçKongÕâÑùµÄ¶«Î÷¡£
EmpireÄܸøÎÒ´øÀ´Ê²Ã´£¿
Èç½ñEmpireÊÇÒ»¸öÔËÐмòµ¥£¬×ÔÎÒÍйܵÄPaaS£¬Æäͨ¹ýÔÚÑÇÂíÑ·ECSÉÏÒ»¸öÇáÁ¿µÄ²ãµÄ·½Ê½ÊµÏÖ¡£ËûʵÏÖÁËHerokuµÄÒ»²¿·ÖPlatform
API£¬ÕâÒâζ×ÅÄã¿ÉÒÔʹÓÃhk»òÕßheroku CLI¿Í»§¶Ë£¬»òÕßÎÒÃǵÄempCLI¡£ÕâÀïÊÇһЩEmpireÒ×ÓõÄÀý×Ó£º
²¿ÊðÒ»¸öDocker×¢²á±íÖÐеÄÓ¦ÓþÍÈçÇÃÒ»¸öemp deploy <image>:<tag>Ò»Ñù¼òµ¥£º
$ emp deploy remind101/acme-inc:latest |
Ó¦Óò¿ÊðºóÎÒÃÇ¿ÉÒÔÁгöÕâЩӦÓãº
$ emp apps acme-inc Jun 4 14:27 |
»òÕßÄã¿ÉÒÔÁгöÄÇЩÕýÔÚÔËÐеÄÓ¦Óãº
$ emp ps -a acme-inc v2.web.217e2ddd-c80c-41ed-af16-663717b08a3f 128:20.00mb
RUNNING 1m "acme-inc server¡± |
ÎÒÃÇ¿ÉÒÔÀ©Õ¹Ò»¸öÔÚProcfileÖе¥¶ÀµÄÒ»¸ö½ø³Ì£º
$ emp scale worker=2 -a acme-inc $ emp ps -a acme-inc v2.web.217e2ddd-c80c-41ed-af16-663717b08a3f 256:1.00gb RUNNING 1m "acme-inc server" v2.worker.6905acda-3af8-42da-932d-6978abfba85d 256:1.00gb RUNNING 1m "acme-inc worker" v2.worker.6905acda-3af8-42da-932d-6978abfba85d 256:1.00gb RUNNING 1m "acme-inc worker¡± |
ÉõÖÁ¿ÉÒÔÃ÷È·µÄÖ¸¶¨CPUºÍÄÚ´æµÄÏÞÖÆ£º
$ emp scale worker=1:256:128mb -a acme-inc # 1/4 CPU Share and 128mb of Ram |
ÎÒÃÇ¿ÉÒÔÁгöÒÔǰµÄ·¢²¼°æ±¾£º
$ emp releases -a acme-inc v1 Jun 4 14:27 Deploy remind101/acme-inc:latest v2 Jun 11 15:43 Deploy remind101/acme-inc:latest |
ÎÒÃÇÒ²¿ÉÒÔÔÚ¼¸ÃëÖÓÄڻعöµ½ÒÔǰµÄ°æ±¾£º
$ emp rollback v1 -a acme-inc Rolled back acme-inc to v1 as v3. |
ÕâЩ±³ºó¶¼·¢ÉúÔÚÎÒÃÇ¿ØÖƵÄÓ²¼þÉÏÃæ¡£
ÏÖÔÚ¿ÉÒÔÉÏÉú²ú»·¾³Âð£¿
EmpireÏÖÔÚ»¹Ã»Óе½1.0£¨Ð´ÕâÆª²©ÎĵÄʱºò°æ±¾Îª0.9.0£©,µ«ÊÇÎÒÃǹýÈ¥¼¸ÖÜ£¬ÎÒÃÇÑÇÂíÑ·ÉϵÄECS´ó²¿·ÖµÄÓ¦ÓúͷþÎñ¶¼ÒÀ¿¿EmpireÀ´¹ÜÀí£¬Æä½á¹ûÊ®·ÖÎȶ¨¡£ÕâЩӦÓÃÔÚ´ÓHerokuÇ¨ÒÆµ½EmpireºóµÄÐÔÄÜÏÔÖøÌáÉýÁË¡£»ù±¾ÉÏÎÒÃÇÄܹ۲쵽99%µÄÇëÇóµÄÏìӦʱ¼äÓÐÁ½±¶µÄ¼õÉÙ£¬±ä»¯ºÍ·åÖµÒ²¸üÉÙÁË¡£ÕâÀïÊÇһЩÀý×Ó£º
Õâ¸öͼÏÔʾÁËÔÚÎÒÃÇ´ÓHerokuµ½ÑÇÂíÑ·ECSÇ¨ÒÆÒÔºó£¬ÎÒÃǵĴÓAPI£¨RTT£©ÉÏ¿´µ½£¬Îļþ·þÎñµÄÏìӦʱ¼ä£º

Õâ¸öͼÏÔʾÁËÎÒÃÇ·þÎñÖÐÌØ¶¨¶Ëµã(endpoint)µÄÏìӦʱ¼ä£¬Æä×÷ÓÃÊÇÓÃÀ´¹ÜÀíÒ»¸öÓû§µÄδ¶ÁÏûÏ¢Êý¡£


ÕâÊÇÎÒÃǵÄAPIÖп´µ½µÄÏìӦʱ¼äµÄ¸Ä±ä£¨Õâ¸öÓ¦ÓÃÈÔÔËÐÐÔÚHerokuÉÏÃæ£»ÎÒÃÇÆÚ´ýÔÚתµ½Empierºó¿ÉÒÔ¼õµ½¸üÉÙ£¬È»ºó¸ü¼ÓƽÎÈ£©
ÎÒÓ¦¸ÃʹÓÃËüÂð£¿
Õâ¿´Çé¿ö¡£Èç¹ûÄãÖ»ÊÇÒ»¸öСµÄ´´Òµ¹«Ë¾£¬ËµÊµÔڵģ¬Ê¹ÓÃHeroku¾Í¹»ÁË¡£ÒòΪÕâÊDz¿ÊðÓ¦ÓÃ×î¼òµ¥µÄ·½Ê½¡£Empire²¢²»ÊÇûÓгɱ¾£»Ä㻹ÐèÒª´´½¨Äã×Ô¼ºµÄÈÕÖ¾ºÍÊý¾ÝÁ¿»¯·½ÃæµÄ»ù´¡·þÎñ£¨logging
and metrics infrastructure£©£¨ÕâÒ»²¿·ÖÎÒ»áÔÚδÀ´µÄ²©¿ÍÀïÃæ½²£©£¬²¢ÇÒEmpireÈÔ´¦ÓÚÆµ·±µÄ¿ª·¢½×¶Î¡£ÎÒÃÇÈÔÊÇHerokuµÄÖÒʵÓû§£¬ÎÒÃÇ»á¼ÌÐøÔÚÉÏÃæÔËÐÐһЩ·ÇºËÐĵÄÓ¦Óᣵ«ÊÇÈç¹ûÄãÅöµ½ÁËһЩºÍÎÒÃÇÒ»ÑùµÄÆ¿¾±£¬ÎÒÃÇÏ£ÍûEmpireÄÜÒ»ÑùÈÃÄãµÄ»ù´¡ÉèÊ©¸üÉÏÒ»²ãÂ¥¡£
ÄãÃÇΪʲô²»Ê¹ÓÃXXX£¿
ÎÒÃǵÄÖÕ¼«Ä¿µÄÊÇΪÎÒÃÇÔÚRemindÅöµ½µÄÎÊÌ⣬ѰÇóÒ»¸ö¼òµ¥¶ø½¡×³µÄ·½°¸¡£¾¡¹ÜÎÒÃDz»Î·¾åʹÓùýһЩÈÈÃŵÄм¼Êõ£¬µ«ÊÇÎÒÃǸü¿´ÖØÎȶ¨ÇÒÄܴﵽĿµÄ£¨just
work£©µÄ¼¼ÊõµÄ¼ÛÖµ£¬ËüÃDz»»á°ëÒ¹½«Äã³³ÐÑ¡£ÎÒÃÇÆ½Ì¨µÄ¾ø´ó²¿·Ö¶¼ÊÇ»ùÓÚÕâЩÎȶ¨µÄ¼¼Êõ´´½¨µÄ£¬Èçnginx£¬postgres£¬rabbitmqºÍELB£¬²¢ÇÒAmazon
ECS±»Ö¤Ã÷ÌØ±ðµÄÎȶ¨£¨¾¡¹Ü×îз¢Ðеİ汾 £©¡£
Èç¹ûÓÐÒ»¼þÊÂÇéÊÇÈ·¶¨µÄ£¬ÄǾÍÊÇÎÒÃǵĻùÓÚÈÝÆ÷µÄÓòµÄ»ù´¡ÉèÊ©ÔÚ¿ìËٵĸı䡣ÎÒÃÇÏÖÔÚ´´ÔìµÄ¶«Î÷£¬ÔÚ1-2ÄêÆÚÄÇ»¹²»¿ÉÄÜ¡£¸ÐлDcokerºÍAmazon
ECSÕâÑùµÄÏîÄ¿£¬ºÜ¿ÉÄÜÔÙ½ÓÏÂÀ´µÄÄîÍ·Ëæ×ÅÈÝÆ÷»¯¼¼Êõ±äµÃÔ½À´Ô½Æ½³£¡£
δÀ´
ÎÒÃÇÈÔÈ»¶ÔEmpireÓкê´óµÄ¼Æ»®£¬È罫¸ºÔؾùºâÆ÷Ó¦Óõ½Èκνø³ÌÉÏ£¬¶ø²»½öÏÞÓÚweb½ø³Ì£»À©Õ¹ProfileÒÔÔÚ°æ±¾¿ØÖÆÖÐÖ§³Ö½¡¿µ¼ì²é£¬±©Â¶ÅäÖã»Ö§³ÖsidekiqÈÝÆ÷ËùÄã¿ÉÒÔÔÚlinkedÈÝÆ÷ÀïÃæÔËÐÐÈçstatd»òÕßnginxµÈ·þÎñ¡£ÎÒÃÇҲͬʱϣÍû£¬×îÖÕÒ²Ö§³ÖʹÓÃKubernetesÀ´×÷Ϊµ÷¶Èºó¶Ë¡£
×ÜÖ®ÎÒÃÇÕû¸öÍŶÓÂúÒâÏÖÔÚÇ¨ÒÆµ½ÑÇÂíÑ·ECSºÍEmpireÖ®Éϵijɹû£¬ÎÒÃǽ«Æä¿ªÔ´Ï£ÍûËüÒ²¿ÉÒÔ°ïÖúµ½Äã¡£ |