左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家
180930 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 119 讲
左耳听风
15
15
1.0x
00:00/00:00
登录|注册

57 | 管理设计:部署升级策略

问题:与灰度发布功能重叠
优势:功能测试,科学实验设计
问题:对新版本质量缺乏信心
优势:逐步切换流量,可用于多租户平台
问题:新老版本同时在线,回滚麻烦,运维工作繁琐
优势:逐个替换,有状态服务友好
问题:资源浪费,有状态服务问题
优势:无需停机
问题:停机影响用户
优势:一致性
缓存
AB测试
灰度部署
滚动部署
蓝绿部署
停机部署
性能设计篇
管理设计篇之“部署升级策略”
分布式系统设计模式

该思维导图由 AI 生成,仅供参考

你好,我是陈皓,网名左耳朵耗子。
在分布式系统的世界里,一个服务有多个实例,所以部署或是升级一个服务也会变得比较麻烦。今天我们讨论服务部署的模式。一般来说,有如下几种:
停机部署(Big Bang / Recreate): 把现有版本的服务停机,然后部署新的版本。
蓝绿部署(Blue/Green /Stage):部署好新版本后,把流量从老服务那边切过来。
滚动部署(Rolling Update / Ramped): 一点一点地升级现有的服务。
灰度部署(Canary):把一部分用户切到新版本上来,然后看一下有没有问题。如果没有问题就继续扩大升级,直到全部升级完成。
AB 测试(A/B Testing):同时上线两个版本,然后做相关的比较。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式系统设计模式中的部署升级策略是关键议题。本文详细介绍了停机部署、蓝绿部署、滚动部署、灰度部署和AB测试等常见部署方式,以及它们各自的优缺点和适用场景。停机部署简单直接,但对用户影响大;蓝绿部署避免停机,但可能浪费资源;滚动部署逐个替换应用实例,对有状态服务友好;灰度部署逐渐切换流量,适用于新版本稳定性缺乏信心的情况;AB测试用于功能测试。通过生动的比喻和实际案例,读者能深入了解各种部署方式的特点和适用场景。文章还提到了在不同环境下选择合适的部署方式的建议,以及对于特定用户测试的AB测试技术。总之,本文为读者提供了深入浅出的分布式系统设计模式知识,对于系统部署和升级具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(25)

  • 最新
  • 精选
  • 画圈圈
    太笼统了,关键是实现细节。
    2018-05-12
    6
    30
  • shufang
    滚动部署:逐个上;灰度部署:全上,逐步切换;蓝绿部署:全上,预发生产切换;AB测试:全上,同时存在。不知道理解的对不对?
    2018-05-25
    14
  • 约书亚
    我觉得现在很多方案混合了蓝绿和灰度,这二者不会细分了。首先微服务架构下,单个服务的部署带来的冗余成本很低。同时也通过网关做流量的逐步迁移。发现问题回滚很快。尤其是基有了容器编排之后就更方便了
    2018-05-08
    8
  • FuriousEric
    很多同学说没有实现,我教大家一个方法,极客时间里搜一下蓝绿部署啊,极客时间的搜索功能要多用,例如redis分布式锁,有个专栏作者写的我完全看不懂,搜索了一下,发现耗子写的最好,秒懂。马上就找到另外一个专栏写的实践操作了,负载均衡里把蓝色集群全部删除掉,切换到绿色集群(例如阿里云的负载均衡配置),实际上那个专栏里叫做红黑部署,蓝绿部署是另外一种意思
    2020-10-13
    3
  • Geek_CK2020
    第一次意识到灰度部署和AB部署的本质区别是,前者是因为质量,后者是因为功能。
    2020-04-27
    3
  • 国诚
    要是有点能落地的东西就好了
    2018-11-17
    3
  • 独白
    对于有修改数据结构,新老版本不兼容,除了停机部署,其他几种部署有没有好的方案?
    2018-10-30
    3
  • 先立个flag,完成才改名的咸鱼
    蓝绿和灰度有什么区别?
    2019-09-27
    1
    2
  • 我们有J-ONE,测试通过,预发布通过,线上一般使用滚动部署的方式发布。
    2019-02-10
    1
    2
  • Goal
    打卡:57 | 管理设计篇之“部署升级策略” 针对本节课的内容,让我想起了之前做 k8s里面的 Deploy升级的场景,但是遇到一个问题始终无法解释? 默认k8s中升级新版本的策略是滚动更新,这个意思的话,就是服务不会中断的, 但是在我测试中发现并非如此,具体如下: 假设,我Deploy 的副本是3个,现在有版本是2的镜像要上线,通过 kubectl images修改 Deploy镜像版本为新的版本2,这时,我在另外一台机器上一直curl接口,发现当有第一个版本2的节点加入到 Deploy对应的 Service的 endpoint上时候,curl会显示 请求被拒绝响应的情况。
    2020-01-13
    2
    1
收起评论
显示
设置
留言
25
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部