±à¼ÍƼö: |
±¾ÎÄÖ¼ÔÚ´Ó¼¼Êõ½Ç¶È½éÉÜÒ»ÏÂÎÒÃÇÈçºÎ¹¹½¨Õâ¸ö³ÖÐø¿ª·¢µÄÁ÷³Ì£¬À´Ö§³ÅÎÒÃǵĴ´ÐÂÒµÎñµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ ÍøÒ×ÔÆ»ù´¡·þÎñ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼ÍƼö¡£ |
|
ÏîÄ¿½éÉÜ
ÈýʰÖÚ³ïÊÇÒ»¸ö´´ÐÂÐ͵ÄÒµÎñ£¬ÎÒÃǵÄÀíÏëÊÇ×ö²»Ò»ÑùµÄÖÚ³ïÆ½Ì¨£º
¡¤»ùÓÚÄÚÈݲúÆ·ÌṩÖÚ³ï·þÎñ
¡¤×¨×¢Ì½Ñ°×îÓд´ÒâµÄÏë·¨¡¢×îÓÐζȵĹÊÊÂ
¡¤Éî¸ûÓ°ÊÓ¡¢ÓÎÏ·¡¢ÒôÀÖ¡¢´«Ã½¡¢¶¯ÂþµÈ·ºÎÄÓéÁìÓò
´Ó2016Äê7Ô·ÝÏîÄ¿³ï±¸ÒÔÀ´£¬¾¹ýÁ½¸ö¶àÔµĿª·¢£¬10ÔÂ·ÝÆ½Ì¨ÕýʽÉÏÏßÔËÓª¡£Ä¿Ç°µÄÍŶӹæÄ£²»´ó£¬ÊôÓÚÄÚ²¿´´ÒµµÄ״̬£¬µ«ÊÇÎÒÃǵĿںÅÊÇ£ºÔÙСµÄÁ¦Á¿£¬Ò²ÄÜÖÀµØ»ØÏì¡£

½ñÌìµÄ·ÖÏíÊÇ´Ó¼¼Êõ½Ç¶È½éÉÜÒ»ÏÂÎÒÃÇÈçºÎ¹¹½¨Õâ¸ö³ÖÐø¿ª·¢µÄÁ÷³Ì£¬À´Ö§³ÅÎÒÃǵĴ´ÐÂÒµÎñ¡£
ÔÚÔËÐÐÒ»¸ö´´ÐÂÒµÎñµÄʱºò£¬ÎÒÃǵļ¼Êõ»áÃæÁٺܴóµÄÌôÕ½£¬ÕâºÍÎÒÃÇ´´ÐÂÒµÎñµÄÌØµãÊÇÏà¹ØµÄ£º
µÚÒ»£ºÒµÎñÊÇ¿ìËÙ±ä¸üµÄ£¬²»¿ÉÄÜÏëºÃËùÓеÄÊÂÇé²Å¿ªÊ¼Æô¶¯ÎÒÃǵÄÏîÄ¿£¬ËùÒÔ¸Õ¿ªÊ¼µÄʱºò£¬ËùνµÄ´´Ð¸ü¶àµÄÊÇÔÚÊÔ´í¡£ÎÒÃÇÏ£ÍûÏîÄ¿ÔÚ×öµÄʱºò£¬²»¶ÏµØÊÕ¼¯·´À¡£¬²»¶ÏµØµ÷Õû·½Ïò£¬×îÖÕÕÒµ½Í»ÆÆµã¡£¶øÔÚ²»¶Ïµ÷Õû·½ÏòµÄ¹ý³ÌÖУ¬¼¼Êõ±ØÐë×öµ½¼°Ê±ÏìÓ¦¡£µ±ÒµÎñÐèÒª¼¼ÊõÌṩµ¯Ò©µÄʱºò£¬¼¼Êõ²»ÄÜ˵ÎÒÃÇ»¹ÔÚµ÷ÑУ¬ÎÒÃÇ»¹ÔÚ½¨³§·¿£¬¹¦Äܲ»Äܱä¸ü¡£
µÚ¶þ£ºÒµÎñ±¬·¢Ê½µØÔö³¤¡£Ç°ÃæÎÒÃÇ˵ȥÕÒ·½Ïò£¬ÄÇʲôÊÇÕýÈ·µÄ·½Ïò£¬ÆäʵºÜÄÑÈ¥Åжϣ¬µ«ÊÇÖÁÉÙÎÒÃDz»ÊÇΪÁËά³ÖijÖÖ״̬ȥ×öµÄ£¬ÒòΪÎÒÃÇÊÇÒ»¸ö´ÓÎÞµ½ÓеĹý³Ì¡£Ò»µ©ÎÒÃÇÕÒµ½ÁËÕýÈ·µÄ·½Ïò£¬½ÓÏÂÀ´ÒµÎñ¾Í»á³öÏÖÒ»¸öÌáÉý»òÕßÀ©ÕÅ£¬µ«ÊÇʱ¼äÊÇÎÞ·¨Ô¤ÆÚµÄ£¬ÍùÍùÊDZ¬·¢Ê½µÄ£¬ºÜÄÑÏßÐÔµØÈ¥Åжϡ£µ«ÊǶÔÓÚ¼¼ÊõÀ´½²£¬ÈçºÎÄܹ»²»ÍÏÒµÎñ±¬·¢µÄºóÍÈ£¬ÊÇÒ»¸ö¼¬ÊÖµÄÎÊÌâ¡£µ±ÒµÎñÓкܴóÁ÷Á¿µ¼ÈëµÄʱºò£¬ÎÒÃǵÄϵͳ²»Äܳػס£¬¹ÒÁË¡£
µÚÈý£º×ÊÔ´³É±¾Í¶Èë¡£ËùÓеĴ´ÐÂÏîÄ¿×ÊÔ´¶¼ÊÇÓÐÏ޵ģ¬Èç¹û×ÊÔ´ºÜ¶à£¬ÍùÍù¾ÍûÓÐÁË´´ÐµÄÍÁÈÀ¡£×ÊÔ´²»¶à¾Í±ØÐ뽫ÓÐÏÞµÄ×ÊÔ´ÓÃÔÚµ¶ÈÐÉÏ¡£

Ãæ¶ÔÕâÈýÏîÌôÕ½£¬ÎÒÃǵļ¼ÊõÍŶӱØÐë¾ß±¸ÈýÏî¼¼ÊõÄÜÁ¦£º
µÚÒ»£º¿ìËÙµü´ú£º²úÆ·Òª¿ìËÙ½»¸¶£¬¿ìËÙ²¿Êð¡£
µÚ¶þ£º¿ÉÀ©Õ¹£ºÏµÍ³Äܹ»Í¨¹ýºáÏòÀ©Õ¹µÄ·½Ê½£¬Ö§³Å¸ü´óµÄÁ÷Á¿¡£
µÚÈý£º¼¼ÊõÓа´ÐèµÄÄÜÁ¦£¬Ö»À©Õ¹Ó¦¸ÃÀ©Õ¹µÄÄ£¿é¡£
ÕâÈÃÎÒÃÇÕâ¸ö´´ÒµÍŶÓÏëÒª½èÖúÔÆµÄÁ¦Á¿£¬½èÖúÍøÒ×ÔÆÈÝÆ÷ƽ̨µÄÁ¦Á¿¡£
¶ÔÓÚÔÆÀ´½²£¬°´ÐèµÄÄÜÁ¦ÊÇÌìÈ»µÄ£¬ÔÚÍøÒ×ÔÆÉÏ£¬ÎÒÃÇÊǰ´Ð谴ʱ·ÖÅäµÄ£»¶ø¿ìËÙµü´úºÍ¿ÉÀ©Õ¹£¬ÊÇÔÆµÄDZÁ¦£¬Ê¹µÃÎÒÃDz»ÐèÒª²É¹º»úÆ÷£¬°²×°ÏµÍ³£¬²¿Êð»·¾³¡£
ÄÇÈýʰÖÚ³ïÈçºÎ²ÅÄÜ·¢»ÓÔÆµÄDZÁ¦£¬ÈçºÎÉè¼ÆÎÒÃǵÄϵͳ£¬Ê¹ÓÃʲôÑùµÄ¿ª·¢¹ý³Ì£¬²ÅÄÜÈÃÔÆÕæÕýµÄ°ïÖúÎÒÃǵÄÒµÎñ£¿
ÕâÀïÓÐÒ»¸öÖØÒªµÄ¸ÅÄ¾ÍÊÇ Cloud Native¡£Ö®Ç°ÓÐÈË·ÒëÎªÔÆÔÉúÓ¦Óã¬ÎÒ¾õµÃ±È½ÏÖ±°×£¬ÎÒÆðÁËÒ»¸öСÇåеÄÃû×Ö£¬½Ð×öÏòÔÆ¶øÉú¡£
Õâ±íʾÎÒÃǵÄÓ¦ÓÃÓ¦¸ÃÉè¼ÆÎªÃæÏòÔÆºÍÈÝÆ÷ƽ̨ȥӦÓõġ£
Éè¼ÆÄ¿±ê
ʹÓñê×¼»¯Á÷³Ì×Ô¶¯ÅäÖÃ(declarativeformats for setup automation)£¬´Ó¶øÊ¹ÐµĿª·¢Õß»¨·Ñ×îÉÙµÄѧϰ³É±¾¼ÓÈëÕâ¸öÏîÄ¿¡£
ºÍ²Ù×÷ϵͳ֮¼ä¾¡¿ÉÄܵػ®Çå½çÏÞ£¬ÔÚ¸÷¸öϵͳÖÐÌṩ×î´óµÄ¿ÉÒÆÖ²ÐÔ¡£
Êʺϲ¿ÊðÔÚÏÖ´úµÄÔÆ¼ÆËãÆ½Ì¨£¬´Ó¶øÔÚ·þÎñÆ÷ºÍϵͳ¹ÜÀí·½Ãæ½ÚÊ¡×ÊÔ´¡£
½«¿ª·¢»·¾³ºÍÉú²ú»·¾³µÄ²îÒì½µÖÁ×îµÍ£¬²¢Ê¹ÓóÖÐø½»¸¶ÊµÊ©Ãô½Ý¿ª·¢¡£
¿ÉÒÔÔÚ¹¤¾ß¡¢¼Ü¹¹ºÍ¿ª·¢Á÷³Ì²»·¢ÉúÃ÷ÏԱ仯µÄǰÌáÏÂʵÏÖÀ©Õ¹¡£
ÁíÍ⻹ÓÐ12ÔÔò
ÈýʰÖÚ³ï·Ç³£ÏàÐÅ12ÔÔò£¬°ÑÕû¸öϵͳ°´ÕÕ12ÔÔò½øÐÐÉè¼Æ¡£
12 Factors
I. Codebase-One codebase tracked in revision control,
many deploys
II. Dependencies-Explicitly declare and isolate dependencies
III. Config-Store config in the environment
IV. Backing services-Treat backing services as attached
resources
V. Build, release, run-Strictly separate build and
run stages
VI. Processes-Execute the app as one or more stateless
processes
VII. Port binding-Export services via port binding
VIII. Concurrency-Scale out via the process model
IX. Disposability-Maximize robustness with fast startup
and graceful shutdown
X. Dev/prod parity-Keep development, staging, and
production as similar as possible
XI. Logs-Treat logs as event streams
XII. Admin processes-Run admin/management tasks as
one-off processes
ϵͳ¼Ü¹¹
ÈçͼÊÇÈýʰÖÚ³ïµÄϵͳ¸ÅÀÀ£¬Ò²ÊÇÎÒÃǵ±Ç°ÏµÍ³µÄ²¿Êð¼Ü¹¹

ÈýʰÖÚ³ïµÄ¼Ü¹¹²ÉÓõÄÊÇ·þÎñ»¯µÄ¼Ü¹¹£¬ÊÇÓÉһϵÁÐÏ໥ÐͬµÄ·þÎñ×é³ÉµÄ¡£·þÎñÖ®¼äÓÐÐ×÷µÄ¹ý³Ì£¬·þÎñ¶ÔÍâÒ²ÌṩÁËͳһµÄ½çÃæ¡£Ã¿Ò»¸ö·þÎñ±¾ÉíÓÐ×Ô¼ºµÄ´æ´¢£¬ÓÐ×Ô¼ºµÄ»º´æ¡£
ËùÓеķþÎñ·ÖÁ½¸öÇøÓò£¬Ò²¼´·þÎñ·ÖÁ½ÖÖÀàÐÍ¡£µÚÒ»ÊÇÓ¦ÓõķþÎñ£¬µÚ¶þÊÇ»ù´¡·þÎñ¡£
ÔÚÓ¦Ó÷þÎñÀïÃæ£¬¶ÔÍâÓÐÒ»¸öÖ÷Õ¾·þÎñ£¬Í¬Ê±³Ðµ£ÁË APIÍø¹ØµÄÖ°Ôð¡£Ëü»á°Ñǰ̨µÄÇëÇó·Ö·¢µ½ºǫ́£¬²¢ÇÒ¸ù¾Ý¹æÔò½øÐзÓÉ¡£
·þÎñÓë·þÎñÖ®¼ä¶¼ÊÇͨ¹ý Restful APIÒ²¼´ HTTPµÄ·½Ê½£¬·þÎñÖ®¼ä»áÓÐÃ÷È·µÄÒÀÀµ¹ØÏµ£¬¶øÇÒÒÀÀµ¹ØÏµµÄÇ¿ÈõÔÚÕâÀïÓÃʵÏߺÍÐéÏß×öÇø·Ö¡£Í¨¹ýÕâЩÒÀÀµ¹ØÏµÀ´¹¹³ÉºÍ±àÅÅÎÒÃǵķþÎñ¡£
ÎÒÃÇ×î³õÉÏÏߵį½Ì¨Ò²²»ÊÇÕâÑùµÄ£¬¶øÊÇÖ»ÓÐÒ»¸öÖÚ³ïÆ½Ì¨¡£ÊÇËæ×Ź¦Äܵķḻ£¬Ó¦¶Ô¸ü¿ìµÄ±ä»¯£¬¶øÖð½¥²ð·ÖµÄ£¬ÀýÈç¶ÔÓÚÖ§¸¶Ä£¿é£¬µ±ÎÒÃÇÐèÒª½ÓÈë¸ü¶àµÄÖ§¸¶·½Ê½£¬Õë¶ÔÖ§¸¶Óиü¶àµÄÓÅ»¯ÐèÇóµÄʱºò£¬ÎÒÃÇÐèÒª¶ÀÁ¢³öÒ»¸öÊÕÒøÌ¨µÄÄ£¿é£¬½øÐзþÎñ²ð·Ö¡£°üÀ¨»áÔ±£¬°üÀ¨¶©µ¥µÄ²¿·Ö¡£
ΪÁËÖ§³ÅÓ¦Ó÷þÎñµÄ»·¾³£¬ÎÒÃÇ»¹ÓÐһЩ»ù´¡ÉèÊ©·þÎñ¡£
±ÈÈç×¢²áÖÐÐÄ£¬·þÎñÖ®¼äÓÐ×Ô¶¯µÄ·þÎñ×¢²áÓë·þÎñ·¢ÏֵĻúÖÆ¡£ÎÒÃǵÄËùÓзþÎñÊÇͨ¹ý×¢²áÖÐÐĽøÐÐÏ໥¹ØÁªµÄ£¬²»ÐèÒªÈ˹¤µÄ±àÅÅ£¬ÊÇ¿ÉÒÔ×Ô¶¯µØ·¢ÏÖ·þÎñ¡£
ÎÒÃÇ¿ÉÒÔͨ¹ý·þÎñµÄ¿ØÖÆÌ¨È¥¹ÜÀí·þÎñ¡£ÎҵķþÎñ״̬ÊÇʲô£¬¶ÔÓ¦µÄ°æ±¾¾ÍÊÇʲô¡£
ÿ¸öÓ¦Óö¼Éæ¼°µ½Ò»Ð©ÅäÖòÎÊý£¬Èç¹ûÅäÖòÎÊýÈÓÔÚÿ¸ö·þÎñÉϵϰ£¬¶ÔÓÚÔËάÀ´Ëµ´ú¼Û¾Í±È½Ï¸ßÁË¡£¶ÔÓÚ΢·þÎñ¼Ü¹¹À´½²£¬±ØÈ»ÐèÒªÒ»¸ö¼¯Öл¯£¬¿É·Ö·¢µÄÅäÖÃÖÐÐÄ£¬Ò²ÊÇÔÚ»ù´¡·þÎñÖеġ£
ÎÒÃÇ»áʹÓà Git²Ö¿â×÷ΪÅäÖõĺó¶Ë£¬Í¨¹ýÅäÖÃÖÐÐÄÈ¥·Ö·¢ Git²Ö¿âÖеÄÅäÖã¬Í¬Ê±ºóÃæÎÒÃÇ»¹»áÌáµ½£¬ÓÐÒ»¸öÁ÷³ÌÀ´¹ÜÀíÕû¸ö¹ý³Ì¡£
ÔÚÕâ¸ö¼Ü¹¹ÀËùÓеÄ×é¼þ¶¼ÔÚÈÝÆ÷ÀïÃæ¡£Ã¿¸ö·þÎñ¹¹½¨µÄ½á¹û¾ÍÊǾµÏñ£¬ÔÚÔËÐÐÆÚ¾ÍÌåÏÖΪÈÝÆ÷¡£
ÕâÀïÃæµÄÿ¸ö·þÎñ¶¼Ê¹ÓõÄÊÇÍøÒ×ÔÆµÄÎÞ״̬·þÎñ£¬³ýÁ˹¹½¨·þÎñ¡£¹¹½¨·þÎñÊÇ´Ó´úÂë¹¹½¨Îª¾µÏñ£¬ÊÇÔÚÎÒÃÇ×Ô¼ºµÄ·þÎñÆ÷ÉÏÔËÐУ¬Ò²ÊÇÒ»¸öÈÝÆ÷¡£
Éè¼ÆÒªµã
½ÓÏÂÀ´ÎÒ·ÖÏíÒ»ÏÂÎÒÃÇÉè¼ÆÊ±µÄ¿¼ÂǼ°ÊµÏÖÒªµã£º
Ò»£®Cloud NativeµÄÉè¼Æ
1. ´ÓÉè¼Æ¿ªÊ¼£¬ÎÒÃǾ͸ôÀëÁË»ù´¡ÉèÊ©ºÍºó¶Ë·þÎñÒÀÀµ£¬Õâ¸ö¸ôÀëÒ»·½ÃæÊÇÓÉÈÝÆ÷À´×öµÄ£¬¸ôÀëÁËÓ¦ÓúͷþÎñÆ÷Ö®¼äµÄ¹ØÏµ¡£ÁíÒ»·½Ã棬ӦÓòãÎÒÃÇÓÃÁ˺ܶàµÄ¿ò¼Ü£¬ÀýÈçºóÃæÌáµ½µÄ
springbootºÍ springcloud£¬ÎÒÃÇʹÓù«¹²µÄ¿ªÔ´¿ò¼ÜºÍ¹¤¾ß£¬°ÑÒ»Ð©ÃæÏò·þÎñ»¯£¬ÈÝÆ÷»¯µÄ»ù´¡¹¦ÄܽøÐÐʵÏÖ£¬¶ÔÓÚÓ¦Óñ¾Éí²»ÐèÒª¹ØÐÄÕâЩ¹ý³Ì£¬Ö»ÐèÒª¹Ø×¢Öмä²ã£¬¸ù¾Ý
springµÄ¹æÔ¼À´½øÐпª·¢¡£
2. ´ÓÒ»¿ªÊ¼£¬¾Í°ÑÅäÖúʹúÂë½øÐзÖÀë¡£½«ÅäÖú;µÏñ½øÐзÖÀë¡£
3. ¶ÔÓÚ±àÅŵÄÎÊÌ⣬ͨ¹ý springcloudºÍ consul½øÐзþÎñ·¢ÏֵŦÄÜ£¬À´ÊµÏÖ·þÎñµÄ×Ô¶¯±àÅÅ¡£
4. ÎÒÃÇʵÏÖÁ˳ÖÐø¼¯³ÉºÍ³ÖÐø½»¸¶µÄ¿ª·¢¹ý³Ì£¬ÏÔʽµØ·ÖÀëÁ˹¹½¨£¬·¢²¼£¬ÔËÐеÄÕû¸ö¹ý³Ì¡£ÕâÒ²ÊǽñÌì·ÖÏíµÄÒ»¸öÖ÷Ìâ¡£
¶þ£¬ÈÝÆ÷»¯µÄʵ¼ù
1. ¹ã·ºÊ¹ÓÃÁËÈÝÆ÷£¬ÔÚÎÒÃÇ¿´À´£¬ÈÝÆ÷¾ÍÊÇ·þÎñ¡£µ±ÎÒÃÇʵÏÖÒ»¸öй¦ÄܵÄʱºò£¬Ê×ÏÈÒª¿¼ÂÇÐè²»ÐèÒªµ¥¶À²ð·ÖΪһ¸öеķþÎñ¡£
2. ͨ¹ýÌṩһÅú»ù´¡¾µÏñ£¬À´¼ò»¯·þÎñµÄ¿ª·¢£¬¿ÉÒÔ˵ÊÇÓ¦Óÿª·¢µÄÄ£°å
3. ʹÓÃÁËÍøÒ×ÔÆ»ù´¡Éèʩƽ̨£¬ÒòΪËû·Ç³£¿ª·Å£¬¼¼Êõµ¼Ïò£¬¶Ô³ÌÐòÔ±ÓѺá£ÌṩÁ˷ḻµÄ API£¬Í¨¹ýÕâЩ
API¿ÉÒÔʵÏÖ×Ô¶¯»¯£¬ÊµÏÖ×Ô¶¯½»¸¶¡£ÁíÍâ·ä³²ÌṩÁ˺ܶà»ù´¡ PaaS·þÎñ£¬°üº¬Êý¾Ý¿â£¬»º´æ£¬CDN£¬¶ÔÏó´æ´¢£¬¸ºÔؾùºâµÈ£¬½µµÍ¹¹½¨·þÎñµÄÄѶȣ¬Ìá¸ß¿ª·¢Ð§ÂÊ¡£ÎÒÃǼ¸ºõÓÃÁËËùÓеÄ
PaaS·þÎñ£¬Ê¹µÃÎÒÃDz»±Ø¹ý¶à¹ØÐÄÆ½Ì¨²ãÃæµÄ¶«Î÷¡£
Èý£¬Î¢·þÎñ»ù´¡ÉèÊ©
1. ·þÎñµÄ×¢²á£¬·¢Ïֺ͸ºÔؾùºâ»úÖÆ¡£Õâ¸ö»úÖÆÄ¿Ç°ÊÇͨ¹ý spring cloudÀ´×öµÄ¡£Spring
cloudÊÇÒ»¸ö·Ç³£ÍêÕûµÄ΢·þÎñ¿ª·¢µÄ¿ò¼Ü£¬ËûµÄÖ÷Òª×÷ÓÃÊÇÔÚÓ¦ÓúÍÉèʩ֮¼äÌṩһ¸ö³éÏó²ã£¬ÈÃÎÒÃÇÓÃÒ»ÖµÄ
APIȥʹÓò»Í¬µÄ·þÎñ·¢ÏÖ»úÖÆ£¬±ÈÈç»ùÓÚ Java¿ª·¢µÄ eureka£¬°üÀ¨ÎÒÃÇʹÓÃµÄ consul¡£
2. ÎÒÃÇʵÏÖÁËÅäÖÃÖÐÐÄ
3. ÎÒÃÇʵÏÖÁË·þÎñ¿ØÖÆÌ¨£¬¿ÉÒԲ鿴¸÷¸ö·þÎñµÄ״̬£¬ÒÔ¼°»ñÈ¡·þÎñ״̬±ä¸üµÄÏûϢ֪ͨ£¬»¹ÓжÔÓÚ·þÎñ¶Ëµã
Endpoint±¾Éí½øÐйÜÀí¡£¶ÔÓÚ΢·þÎñ¼Ü¹¹À´Ëµ£¬Ã¿Ò»¸ö·þÎñµÄ¶Ëµã EndpointÓ¦¸Ã¸ü¼ÓÖÇÄÜ£¬ÕâÊǺÍ
SOAµÄÇø±ð¡£ÎÒÃÇÒ²ÊÇÕâÑùµÄ£¬¶ÔÓÚÿһ¸ö·þÎñ£¬ÎÒÃǽèÖú springcloudÌṩµÄһϵÁйÜÀí¶Ë¿Ú£¬ÎÒÃǵķþÎñ¿ØÖÆÌ¨¿ÉÒÔͨ¹ýÕâЩ¹ÜÀí¶Ë¿ÚÈ¥¿ØÖÆËü£¬°üÀ¨È¥²é¿´ºÍÐÞ¸Äijһ¸ö·þÎñ½ÚµãµÄÅäÖ㬲鿴ij¸ö½ÚµãµÄÈÕÖ¾£¬Õâ¶¼ÊÇ¿ÉÒÔͨ¹ý·þÎñ¿ØÖÆÌ¨È¥ÊµÏֵġ£
4. ³ÖÐø½»¸¶µÄ¹ý³Ì
ºóÃæ»áÏêϸÃèÊöÐ×÷Á÷³ÌºÍ×Ô¶¯»¯½»¸¶µÄ»úÖÆ¡£
½ÓÏÂÀ´ÁгöµÄÊÇÎÒÃÇʹÓõļ¼ÊõÇåµ¥
·ä³²
¡¤¼¯ÈººÍÈÝÆ÷¡¢¾µÏñ²Ö¿â
¡¤RDS¡¢»º´æ
¡¤¸ºÔؾùºâ¡¢¶ÔÏó´æ´¢
·þÎñÄ£°å
¡¤consul
¡¤spring boot/cloud
¡¤Rest RPC: spring mvc, feign, ribbon£¬£¨¿Í»§¶ËµÄ¸ºÔؾùºâ£©
¡¤nginx (Íⲿ HTTPÇëÇóµÄת·¢), consul-template (ÅäÖúÍÅäÖÃÖÐÐÄ´òͨ)
¡¤dumb-init (DockerÀïÃæÔËÐзþÎñµÄ¹¤¾ß)
³ÖÐø¼¯³É
¡¤Gitlab-CE (˽ÓдúÂë²Ö¿â£¬Ð×÷Á÷³ÌºÍÅäÖùÜÀíµÄÈë¿Ú)
¡¤docker¡¢maven
¡¤flyway, junit, h2, mockito, spring test (³ÖÐø¼¯³ÉµÄ¹Ø¼üµãÊÇ×Ô¶¯»¯µÄÑéÖ¤)
¾µÏñ¹¹½¨
ΪÁ˾¡Á¿½µµÍ·þÎñ±¾ÉíºÍ»ù´¡Éèʩ֮¼äµÄ¹ØÁª£¬ÔÚ¹¹½¨»ù´¡¾µÏñµÄʱºò£¬·Ö³É¼¸¸ö²ã´ÎÈ¥¿¼ÂÇ¡£
µÚÒ»£¬×îÀïÃæµÄÒ»²ã£¬ÊÇ OSºÍϵͳ¹¤¾ßµÄÒ»²ã£¬ÎÒÃÇÊÇ»ùÓÚ Debianϵͳ½øÐй¹½¨µÄ¡£
µÚ¶þ£¬Ó¦Óû·¾³µÄ²¿·ÖÊǺÍÓ¦Ó÷ÖÀ뿪À´µÄ£¬°üÀ¨ JDK£¬consul·þÎñ·¢ÏֵĻúÖÆµÈ£¬ÕâÀïÓиöС¹¤¾ß
dumb-init£¬¿ÉÒÔÔÚÒ»¸ö DockerÀïÃæÊµÏÖ¶à½ø³Ì¡£Èç¹ûÔÚ DockerÀïÃæÊ¹ÓÃ¶à½ø³Ì»áÓÐÒ»¸ö±È½Ï´óµÄ¿Ó£ºÈç¹ûij¸ö½ø³ÌËÀµô£¬ËûµÄ×Ó½ø³Ì¾Í»á±ä³É½©Ê¬½ø³Ì£¬Ã»Óа취Êջأ¬µ¼ÖÂÎÒÃǹرÕ
DockerÈÝÆ÷µÄʱºòÊÇÐèÒªÇ¿ÖÆÉ±µôµÄ¡£Õâ¶ÔÓÚ³ÌÐòÐèÒªÓÅÑŹػúÀ´ËµÊǺÜÓÐÎÊÌâµÄ£¬Dumb-init¿ÉÒÔ½â¾öÕâ¸öÎÊÌ⣬ÁíÍâ
dumb-init»¹¿ÉÒÔʵÏÖÐźŵÄÖØÐ´¡£±ÈÈçÓÐЩӦÓÃÊÇÐèÒª½ÓÊÕһЩÐźţ¬±ÈÈç ctrl+C²ÅÄܽáÊøµÄ£¬ÎªÁËÏìÓ¦
SIGINTÐźţ¬¿ÉÒÔͨ¹ý dumb-init½øÐÐת·¢¡£
µÚÈý£¬ÔÚÓ¦ÓòãµÄ Dockerfile»á·Ç³£¼òµ¥£¬Ñ¡ÔñÒ»¸öÕýÈ·µÄ»ù´¡¾µÏñ£¬È»ºó°Ñ°ü´ò½øÈ¥¾Í¿ÉÒÔÁË¡£

»ùÓÚ Gitflow´úÂë¹ÜÀíºÍÐ×÷Á÷³Ì
GitflowÊÇÒ»¸ö´úÂë¹ÜÀíµÄÁ÷³Ì£¬ÎÒÃÇ»ùÓÚËüʵÏÖÁËÒ»¸öÐ×÷µÄÁ÷³Ì¡£Õâ¸öÐ×÷µÄÁ÷³ÌÌåÏÖÔÚÎÒÃÇÈçºÎÈ¥·¢²¼ÎÒÃǵÄа汾£¬Èç¹ûÐÞ¸ÄÏßÉϵÄ
Bug£¬Èç¹û½øÐпª·¢£¬Ôõô¼¯³É²âÊÔ£¬×îÖØÒªµÄÊÇÔõôȥÑéÖ¤£¬Ñé֤ʲô¶«Î÷¡£Õû¸ö¹ý³Ì¶¼ÐèÒª×Ô¶¯»¯£¬ÇÒ¶¼ÊÇͨ¹ý
gitlab-ceÌṩµÄ½çÃæ¡£×îÖØÒªµÄÁ½¸ö½çÃæÊÇ Merge RequestºÍ×Ô¶¯»¯ PipelineÀ´×öµÄ¡£
ËùÓеÄÎÊÌâÐ޸ģ¬ËùÓеÄÌá²â£¬¶¼ÊÇͨ¹ý gitlab-ceµÄ Merge Request½çÃæ½øÐвÙ×÷µÄ¡£Ò»µ©
Merge Request½ÓÊÜÖ®ºó£¬¶¼»áÓÐÒ»¸ö¸úÔÚºóÃæµÄ Pipeline£¬Ò»¸ö³ÖÐø¼¯³É»òÕß³ÖÐø·¢²¼µÄÈÎÎñÀ´Íê³ÉºóÐø¹¤×÷£¬ÕâЩºóÐø¹¤×÷¾ÍÊÇÎÒÃǽ»¸¶µÄÁ÷³Ì¡£
ÎÒÃÇʹÓ÷䳲µÄÁ½¸ö»·¾³£¬À´×÷Ϊ¿ª·¢ºÍ²âÊÔ»·¾³ÒÔ¼°ÏßÉÏ»·¾³¡£¶ÔÓÚÌØ¶¨µÄ»·¾³£¬ÎÒÃÇ×Ô¶¯¹¹½¨ºÍ·¢²¼Ö®ºó£¬»á×Ô¶¯µØ½øÐв¿Ê𣬶ÔÓÚ¿ª·¢ÈËÔ±£¬QAÈËÔ±£¬ÉõÖÁÏßÉÏÔ¤·¢»·¾³µÄÔËάÈËÔ±À´Ëµ£¬ËûÃÇÖ»ÐèÒªÔÚ
GitlabÀïÃæ²Ù×÷ÍêÁË£¬ÏàÓ¦µÄ°æ±¾¾Í¹¹½¨ÉÏÈ¥ÁË£¬ÕâЩ°æ±¾¶¼»áÔÚ¾µÏñ²Ö¿âÖУ¬»á¶ÔÓ¦ÎÒÃǵķÖÖ§£¬»áÓжÀÁ¢µÄ°æ±¾¡£ÎÒÃÇ»¹¿ÉÒÔ°´ÐèÈ¥²¿Êð¸ü¶àµÄ»·¾³£¬È¥½øÐмìÑ飬±ÈÈçÏßÉϵÄÀ©Õ¹ÑéÖ¤¡£

ÈçͼËùʾ£¬×óÉϽÇΪÌá½»µÄ Merge Request£¬ÓÒÃæÎª Merge RequestµÄÏêÇ飬Èç¹ûµã»÷
Accept Merge Request¾Í»á´¥·¢×óÏÂ½ÇµÄ Pipeline½øÐÐÕû¸Ä·¢²¼Á÷³Ì¡£
Õû¸ö½»¸¶Á÷³ÌÈçͼËùʾ£º

1. ¿ª·¢ÓÐÒ»¸öÖ÷·ÖÖ§³ÆÎª develop£¬µ«ÊÇËùÓй¦ÄܵĿª·¢¶¼²»ÔÚ developÉÏ¿ª·¢£¬¶øÊÇпª·ÖÖ§½øÐпª·¢£¬¿ÉÒÔ¸ù¾Ý·¢²¼µÄʱ¼äµãÈ·¶¨Ä³¸ö¹¦ÄÜÊDz»ÊÇÒªÉÏÏߣ¬ÀýÈçͼÖÐÔÚÕâÒ»°æÖУ¬feature
x, y¿ÉÒÔÉÏÏߣ¬ÓÚÊÇ Mergeµ½ develop·ÖÖ§£¬¶ø feature z¸Ï²»ÉÏÕâÒ»°æ£¬»áÔÚÒÔºóµÄ°æ±¾ÉÏÏߣ¬ËùÒÔÔÝÇÒ²»
Mergeµ½ develop·ÖÖ§¡£
2. Feature x,yºÏ²¢ develop·ÖÖ§ÐèÒª¾¹ý Code Review£¬Ò»µ©ºÏ²¢ºó£¬»á´¥·¢×Ô¶¯¹¹½¨¾µÏñµÄ
Pipeline£¬È»ºó×Ô¶¯²¿Êð develop»·¾³¡£¿ª·¢ÐèÒªÔÚÕâ¸ö»·¾³ÀïÃæ×ö¼¯³ÉºÍ»ù±¾µÄ²âÊÔ£¬°üº¬µ¥Ôª²âÊÔºÍðÑ̲âÊÔ£¬µ±¼¯³ÉºÍ»ù±¾µÄ²âÊÔÓöµ½È±ÏݵÄʱºò£¬ÐèÒª»Øµ½
featureËùÔڵķÖÖ§½øÐÐȱÏÝÐÞ¸´£¬ÐÞ¸´ºóÖØÐ Mergeµ½ develop£¬´Ó¶øÖØÐ²¿Êð develop»·¾³¡£µ±¿ª·¢ÈÎÎñ´úÂëÖÊÁ¿¿ÉÒÔ´ïµ½µÄʱºò£¬·½²ÅÌá²âµ½
QA¡£
3. ÓÐÒ»¸ö Release·ÖÖ§ÓÃÓÚ×ö²âÊÔÑéÖ¤£¬Ìá²âµÄ·¢ÆðÊÇÓÉ develop·ÖÖ§ Mergeµ½
release°æ±¾ÊµÏֵġ£Ã¿´Î×ö releaseµÄʱºò£¬Ê×ÏÈ»á´Ó Master·Ö³öÒ»¸ö°æ±¾µ½ release£¬Master·ÖÖ§µÄ°æ±¾Êǵ±Ç°µÄÏßÉϰ汾£¬Ôò
Develop Mergeµ½ release£¬ÆäʵÊǺÍÏßÉϰ汾µÄÒ»¸öºÏ²¢£¬±£Ö¤µ±Ç°µÄ¿ª·¢°æ±¾ºÍÏßÉϰ汾¿ÉÒÔ¼æÈÝ¡£Õâ´Î
Merge»á´¥·¢ Pipeline¹¹½¨¾µÏñ£¬²¢ÇÒ×Ô¶¯·¢²¼ release»·¾³£¬ QA¿ÉÒÔ¶ÔÕâ¸ö»·¾³½øÐÐ×Ô¶¯»¯²âÊÔ£¬»òÕßÊÖ¹¤²âÊÔ£¬±£Ö¤´úÂë¿ÉÒÔ´ïµ½·¢²¼µÄÖÊÁ¿¡£Èç¹û²âÊÔ³öÏÖȱÏÝ£¬ÔòÐèÒª»Øµ½
featureËùÔڵķÖÖ§½øÐÐȱÏÝÐÞ¸´£¬ÐÞ¸´ºóÖØÐ Mergeµ½ develop£¬´Ó¶øÖØÐ²¿Êð develop»·¾³£¬ÔÚ
develop»·¾³²âÊÔÍê±Ïºó£¬ÔÙ´Î Mergeµ½ release£¬È»ºó QAÔÙ²âÊÔ£¬Èç´Ë·´¸´£¬Ö±µ½¿ÉÒÔ´ïµ½ÉÏÏß±ê×¼¡£
4. Ò»¸ö release·ÖÖ§¿ÉÒÔ´ïµ½ÉÏÏß±ê×¼£¬Ôò½« release·ÖÖ§ºÏ²¢»Ø master·ÖÖ§£¬Õâ´Î
Merge»á´¥·¢ Pipeline×Ô¶¯¹¹½¨¾µÏñ£¬×Ô¶¯²¿ÊðÔ¤·¢»·¾³¡£ÏßÉÏÔËάÈËÔ±¿ÉÒÔ¶ÔÔ¤·¢»·¾³½øÐвâÊÔ¡£
5. Èç¹ûÔ¤·¢»·¾³Ã»ÓÐÎÊÌ⣬ÏßÉÏÔËάÈËÔ±¿ÉÒÔ´Ó¾µÏñÊÖ¹¤²¿ÊðÁ½Ì×ÏßÉÏ»·¾³ÖеÄÒ»Ì×£¬ÈçͼÖÐ Online
AºÍ Online B£¬×ö»Ò¶È·¢²¼£¬ÐÂÀϰ汾ÏȸüÐÂÆäÖÐÒ»Ì×»·¾³£¬È»ºóǰ¶Ëͨ¹ý¸ºÔؾùºâÆ÷½«ÇëÇ󲻶ϵĴÓÀϰ滷¾³Çл»µ½Ð°滷¾³¡£
6. Èç¹ûÐèÒªÐÔÄܲâÊÔ£¬ÐÔÄܲâÊÔÈËÔ±¿ÉÒÔÊÖ¹¤´Ó¾µÏñ²¿ÊðÒ»Ì×ÐÔÄܲâÊÔ»·¾³½øÐвâÊÔ¡£
7. Èç¹ûÏßÉÏ·¢ÏÖȱÏÝ£¬ÔòÐèÒª´Ó MasterÉÏ·Ö³öÒ»¸ö·ÖÖ§µ½ hotfix£¬hotfixÐÞ¸´Íê±Ï½øÐвâÊÔºóÐèÒªºÏ²¢µ½
Master·ÖÖ§£¬Í¬Ê±ÐèÒªºÏ²¢´úÂëµ½ develop·ÖÖ§¡£
ÅäÖùÜÀí

ÈçͼÊÇÒ»¸öÅäÖùÜÀíµÄÁ÷³Ì¡£
ËùÓеÄÅäÖÃÎļþ¶¼·ÅÔÚ´úÂë²Ö¿â GitlabÀïÃæ£¬½øÐдúÂë¼¶±ðµÄ¹ÜÀí¡£
±à¼ÅäÖÃÎļþ app.propertiesºÍ app-A.properties£¬È»ºóÌá½»£¬Í¨¹ý Merge
RequestÌá½»µ½ GitlabÀïÃæ¡£
ÔÚ Gitlab½çÃæÀïÃæ£¬µã»÷ accept½øÐдúÂëºÏ²¢£¬ºÏ²¢ºó´¥·¢ webhook£¬µ÷ÓÃÅäÖÃÖÐÐÄ¡£
Git2Consul´Ó GitlibÖÐ pullËùÓеÄÅäÖÃÎļþ£¬²¢ÇÒ½«ÅäÖÃÎļþµÄÄÚÈÝͨ¹ý consulµÄ¿Í»§¶Ëͬ²½µ½
consulÖС£
Profile=AµÄ appºÍ Profile=BµÄ appͨ¹ý consulµÄ¿Í»§¶Ë½«ÅäÖÃ´Ó consulÖÐÅäÖõ½·þÎñÖУ¬Íê³ÉÅäÖõĹÜÀí¡£
×ܽá
×îºó×ܽáһϾÍÊÇ£º
Ê×ÏÈ£¬×î´ó»¯ÀûÓÿªÔ´¹¤¾ßºÍÔÆ¶Ë¼¼Êõ½¨Á¢Î¢·þÎñºÍÃô½Ý»ù´¡ÉèÊ©£¬¹¹½¨ Cloud Native Ó¦Ó㬳ä·ÖÊÍ·ÅÔÆµÄDZÁ¦¡£
Æä´Î£¬»ùÓÚÈÝÆ÷¼¼Êõ×Ô¶¯»¯¹¹½¨¡¢·¢²¼ºÍÅäÖÃÁ÷³Ì£¬¸Ä½øÃô½Ý½»¸¶»·¾³ºÍ²úÆ·¿ìËÙµü´úÄÜÁ¦£¬¼°Ê±ÓÐÁ¦Ö§³ÅÒµÎñ¡£Ä¿Ç°ÈýʰÖÚ³ï»ùÓÚÍøÒ׷䳲ƽ̨£¬´ÓÐÂϵͳÉè¼Æµ½ÉÏÏß½öÐè1
~ 3ÖÜ£»
×îºó£¬Í¨¹ýʵ¼ù´òÄ¥µÄ·½°¸²ÅÄÜÊʺÏ×Ô¼º£¬¿ª·ÅÐÔÊÇÑ¡ÔñÔÆÆ½Ì¨¹Ø¼üÆÀ¹ÀÒòËØ
|