云栖问答

找不到答案?去提问题

2016-07-20 20:41:25

关于发布思想


来源: [直播] 基于Java容器的多应用部署技术实践

多线程思想去做发布?

1个回答

1

weipeng2k 已采纳

没有多线程的发布,而是选择将批次发布转化成一个批次去做不同阶段的事情,以此提升效率。

以往的发布是:

     ┌──────┐          ┌──────┐            
     │Batch1│          │Batch2│            
     └──┬───┘          └──┬───┘            
        │────┐            │                
        │    │ stop       │                
        │<───┘            │                
        │                 │                
        │────┐            │                
        │    │ deploy_new │                
        │<───┘            │                
        │                 │                
        │────┐            │                
        │    │ start_new  │                
        │<───┘            │                
        │                 │                
        │────┐            │                
        │    │ check      │                
        │<───┘            │                
        │                 │                
        │       pass      │                
        │ ────────────────>                
        │                 │                
        │                 │────┐           
        │                 │    │ stop      
        │                 │<───┘           
        │                 │                
        │                 │────┐           
        │                 │    │ deploy_new
        │                 │<───┘           
        │                 │                
        │                 │────┐           
        │                 │    │ start_new 
        │                 │<───┘           
        │                 │                
        │                 │────┐           
        │                 │    │ check     
        │                 │<───┘           
     ┌──┴───┐          ┌──┴───┐            
     │Batch1│          │Batch2│            
     └──────┘          └──────┘            

而多版本发布的方式是,将新版本部署到所有的容器中,完成最耗时的启动部分,后续进行批次切流,将流量从旧有版本切换到新版本上。

     ┌───┐            ┌──────┐          ┌──────┐          ┌──────┐
     │All│            │Batch1│          │Batch2│          │batch2│
     └─┬─┘            └──┬───┘          └──┬───┘          └──┬───┘
       ────┐             │                 │                 │    
           │ deploy_new  │                 │                 │    
       <───┘             │                 │                 │    
       │                 │                 │                 │    
       │start_switch_flow│                 │                 │    
       │ ─ ─ ─ ─ ─ ─ ─ ─ >                 │                 │    
       │                 │                 │                 │    
       │                 │────┐            │                 │    
       │                 │    │ switch_flow│                 │    
       │                 │<───┘            │                 │    
       │                 │                 │                 │    
       │                 │────┐            │                 │    
       │                 │    │ check      │                 │    
       │                 │<───┘            │                 │    
       │                 │                 │                 │    
       │                 │       pass      │                 │    
       │                 │ ────────────────>                 │    
       │                 │                 │                 │    
       │                 │                 │────┐            │    
       │                 │                 │    │ switch_flow│    
       │                 │                 │<───┘            │    
       │                 │                 │                 │    
       │                 │                 │       pass      │    
       │                 │                 │ ────────────────>    
     ┌─┴─┐            ┌──┴───┐          ┌──┴───┐          ┌──┴───┐
     │All│            │Batch1│          │Batch2│          │batch2│
     └───┘            └──────┘          └──────┘          └──────┘

可以看到以往多个批次启动的耗时被一次批量的动作完成了,而后续只是做流量的切换,代价就很低了,效率得到提升。

1
GO
1732
浏览
0
收藏
邀请他人回答