【摘要】 本文描述了使用CSE开发应用系统如何实施升级零中断以及如何评估效果。

升级零中断存在的问题

要实现升级零中断,通常需要解决如下问题:

1.       停止服务的时候,可能引起业务中断。在停止服务的过程中,可能服务正在处理请求,新的请求可能持续的发送到该服务。

2.       在微服务架构下,一般都会通过注册中心进行服务发现,客户端会缓存实例地址。停止服务的时候,使用者可能无法及时感知实例下线,并继续使用错误的实例进行访问,导致失败。

3.       新服务启动起来后,会存在灰度状态,出现多个版本并存,如果新服务新增加了接口,新升级的服务需要正确的将流量发送到包含新接口的服务。

4.       成本:实现升级零中断,可以先准备大量的备份机器,将新服务启动起来。然后对用户的请求进行引流,待老服务没有流量后,停止老服务。这需要运维人员准备额外的集群资源并开发强大的运维监控系统来完成。

使用CSE框架,可以以极低的成本,不借助运维工具,就能够轻松的实现升级零中断。

使用CSE进行滚动升级的实践和评估

在讨论零中断的时候,需要先设计一个测试评估模型。为了简单,采用下面测试场景来进行评估。调用者通过网关来访问应用实例1和应用实例2,现在要对应用实例进行升级。升级的过程中,调用者会启动N个线程,以Mtps的流量来请求。我们可以以整个升级过程出现的失败次数来评估系统对于零中断升级的支持好坏。为了节省资源,我们采用先停止1.0版本的实例1,然后部署2.0版本的实例1;再停止1.0版本的实例2,最后部署2.0版本的实例2. 另外,我们还需要构造服务端处理时延T,模拟请求正在处理的情况。

在这个过程中,使用CSE测试的数据如下:

实现原理

实现零中断的核心机制包括如下几个:

1.       优雅停机。服务停止的时候,需要等待请求完成,并拒绝新请求;

2.       重试:客户端对于网络连接错误,以及拒绝请求错误,需要选择新服务器进行重试。

3.       隔离:对于失败超过一定次数的服务实例,进行隔离。

在上面的测试数据中,重试策略配置为:

servicecomb:loadbalance:retryEnabled: trueretryOnNext: 1retryOnSame: 0

隔离策略配置为:

servicecomb:loadbalance:myservice:isolation:enabled: trueenableRequestThreshold: 5singleTestTime: 10000continuousFailureThreshold: 2

测试过程中,在停止1.0版本实例2的时候,需要确保2.0版本实例1已经正确处理请求,否则可能出现无实例可用,出现升级中断。

商业工具

上面描述了仅仅借助SDK就实现升级零中断。通过配合CSE的灰度发布、部署工具等,可以实现更加可靠的升级零中断和更好的体验。

来源:华为云社区  作者:liubao68

使用CSE实现滚动升级零中断相关推荐

  1. 华为云FusionInsight MRS:千余节点滚动升级业务无中断

    本文分享自华为云社区<华为云FusionInsight MRS如何实现千余节点滚动升级无业务中断升级>,原文作者:沙漏. 华为开发者大会2021(Cloud)大会期间,由华为技术专家天团打 ...

  2. 14天1000+大集群滚动升级,银行柜台竟然毫无感觉

    摘要:中国工商银行联合华为完成了金融行业首家规模超千台的Hadoop集群大版本滚动升级,为期两周的升级过程突破了传统的离线升级模式,真正实现了业务无感的平滑滚动升级. 2020年8月27日,中国工商银 ...

  3. Oracle 19C新特性测试之滚动升级

    从Oracle的12.1或12.2版本升级到最新的19c版本,目前可供选择的几种升级方案有: 1.插拔式升级,通用性好,属于数据迁移式的升级方式,不能整库进行升级,数据量越大耗时越长,业务中断时间长. ...

  4. oracle18c升级19,Oracle 18C新特性测试之滚动升级

    原标题:Oracle 18C新特性测试之滚动升级 7月24日Oracle 18c通用版本正式对外发布后,三墩IT人在第一时间选取了Oracle 18c PDB在数据同步.迁移.切换方面的三项新功能的测 ...

  5. 微软S2D2016滚动升级2019

    Storage Space Direct(简称S2D)是微软在Windows Server 2016数据中心版集成的第三代软件定义存储技术,S2D技术能够将工业标准X86服务器的本地磁盘汇总构建出具备 ...

  6. Docker Swarm mode与滚动升级

    Swarm mode与滚动升级 Swarm里面有个很好的姿势,就是可以动态的更新某个服务对应的镜像,已达到滚动升级的目的,而不是重新制作这个服务,并且重新制作的话不光麻烦,还不好管理,swarm的这个 ...

  7. 图解Oracle 11g physical standby Rolling Upgrade物理备库滚动升级特性

    图解Oracle 11g physical standby Rolling Upgrade物理备库滚动升级特性 11g Rolling Database Upgrades Using Transien ...

  8. 汇编语言重写除零中断

    最近因为有个大作业要写计算器,故考虑重写除零中断给予提示 DATA SEGMENT BUFFER1 DB 20 DUP(?) B1N DB 0 BUFFER2 DB 20 DUP(?) B2N DB ...

  9. linux 不识别 svg,manjaro/archlinux用yaourt -Syu滚动升级后大量图标主题不能用svg图标不能识别...

    系统版本: manjaro linux 2016.10 升级日期: 2017.03.12 故障描述: 所有svg图标均不能识别.像maia.flattr这样的svg图标主题全都不能用,全都fallba ...

最新文章

  1. android 弹出fragment,Android中ViewPager获取当前显示的Fragment
  2. asp.net数据绑定之Eval和Bind区别
  3. OSPF Router-ID的选择
  4. [白领会]在职场高级技能
  5. Python多线程threading和多进程multiprocessing的区别及代码实现
  6. java util包类_java.util包下的类及常用方法
  7. eclipse 导入项目_JAVA编程实战:坦克大战系列2-坦克如何在eclipse中编写
  8. rehl7安装mysql5.7_Linux RPM包安装总结
  9. python读取文件并存入mysql_1.python读取txt文件并插入到mysql数据库以及将py脚本文件打包成独立的exe程序...
  10. 【原】数据分析/数据挖掘 入门级选手建议
  11. 清空所有textbox
  12. 在Java中将字符串转换为char数组,将char数组转换为String
  13. Server.Variables属性大全(转载)
  14. 架构之重构的12条军规(上)
  15. java 临时文件 删除_Java临时文件何时被删除?
  16. 基础算法练习200题07、编框
  17. 柱状图表制作如此简单,比阿里云DataV更好用的数据可视化平台
  18. 矩阵乘法计算量估算/华为机试(C/C++)
  19. 微信公众号开发踩坑指南(1)——服务器验证与Token获取失败原因
  20. shiro ajax 验证码,关于Shiro登录报验证码错误的问题

热门文章

  1. android 通过图片url获取宽高_通过 URL 获取图片宽高优化
  2. 未来教育计算机二级第一套ppt解析,计算机二级未来教育PPT部分答案
  3. 2019.01.21 bzoj2441: [中山市选2011]小W的问题(树状数组+权值线段树)
  4. python - 代码练习 - 差异备份/同步更新
  5. Luogu 3267 [JLOI2016/SHOI2016]侦察守卫
  6. 总结—angularjs项目
  7. PHP文件上传 (以上传txt文件为例)
  8. 领会CSS,实际中的研究
  9. [容易]在二叉查找树中插入节点
  10. C#调用SQL Server参数过程传参