究竟为啥总在凌晨上线,如何进行无损发布

为什么很多互联网公司升级系统,选择在晚上上线?
美名其曰,晚上上线,对用户影响最小。
 
为什么会对用户产生影响?
很多人认为,系统升级往往需要重启,重启的过程中,正在访问的用户会访问失败
 
例如,如果升级的是web-server:
究竟为啥总在凌晨上线,如何进行无损发布
如上图,重启ip1上的tomcat时,tomcat上或许有1000个http请求正在处理,这些请求就会失败。
 
又例如,如果升级的是service:

 

究竟为啥总在凌晨上线,如何进行无损发布
如上图,重启ip1的service时,service上或许有2000个请求正在处理,这些请求就会失败。
 
web-server升级能否不影响正在处理的请求?
可以,需要nginx和web-server配合
 
(1)给nginx发指令,将ip1上的流量切走;
究竟为啥总在凌晨上线,如何进行无损发布
 
(2)nginx不会将新流量放给ip1,旧流量会很快处理完成;
究竟为啥总在凌晨上线,如何进行无损发布
 
(3)旧流量完成后,升级web-server;
究竟为啥总在凌晨上线,如何进行无损发布
此时,ip1上的web-server处于没有流量的状况,可以随便玩:
- 停服务备份
- 升级(粉色代表升级后的节点)
- 服务重启
- 测试工程师直连ip1进行验证
- 验证完毕
 
(4)给nginx发指令,将流量切回ip1;
究竟为啥总在凌晨上线,如何进行无损发布
 
(5)流量切回ip1,单节点上线成功;

 

究竟为啥总在凌晨上线,如何进行无损发布
一个节点升级完成之后,其他节点可以依次逐台升级。
 
service升级能否不影响正在处理的请求?
可以,需要RPC-client和RPC-server配合
 
(1)向准备升级的service节点ip1发送切流量指令;

 

究竟为啥总在凌晨上线,如何进行无损发布
这里和web-service不同:
- web-service是向上游nginx发指令切流量;
- service是通过下游server发指令切流量;
 
(2)RPC-server通过tcp长连接将切流量的指令通知RPC-client;

 

究竟为啥总在凌晨上线,如何进行无损发布
执行切流量指令的组件最终是RPC-client上的tcp连接池。
 
(3)RPC-client不再将新流量放给ip1,旧流量逐步处理完成;

 

究竟为啥总在凌晨上线,如何进行无损发布
为啥不能像web-server一样,直接给上游nginx发指令呢,因为service有太多的上游。
 
(4)旧流量逐步迁移完成,RPC-client会间歇性重连;

 

究竟为啥总在凌晨上线,如何进行无损发布
此时,ip1上的service处于没有流量的状况,可以随便玩:
  • 停服务备份
  • 升级(粉色代表升级后的节点)
  • 服务重启
 
这个过程中,RPC-client会间歇性尝试重连(例如每分钟重试一次),直至ip1节点恢复;
 
(5)流量切回ip1,单节点上线成功;

 

究竟为啥总在凌晨上线,如何进行无损发布
一个节点升级完成之后,其他节点可以依次逐台升级。
 
是否还有其他注意事项?
(1)如果没有实现服务自动发现,服务治理,早期可以这么玩;
(2)web-server无损升级,强烈建议脚本化;
(3)service无损升级,需要服务框架支持;
 

发布者:糖太宗,转载请注明出处:https://www.qztxs.com/archives/science/technology/6768

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年5月15日 下午9:25
下一篇 2022年5月15日 下午9:27

相关推荐

  • Linux基础

    看到什么记什么,没有顺序   Linux各个目录的作用及内容 / /处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下。 /bin 该目录存放着系统最常用的最重要的命令,相当于DOS下的内部命令,只不过它们是以独立的文件形式存在。比如:ls、cp、mkdir等命令。这个目录中的文件都是可执行的并且...

    技术 2022年5月27日
    3600
  • 我C,MySQL双主架构,原来能这么玩

    经常有朋友问,MySQL双主的一致性问题,今天简单聊一聊。   MySQL为什么要使用双主架构? MySQL最常见的集群架构,是一主多从,主从同步,读写分离的架构。通过这种方式,能够扩充数据库的读性能,保证读库的高可用,但此时写库仍然是单点。   为了保证MySQL写库的高可用,可以在一个MySQL数据库集群中可以设置两个主库,并设置双向同步,以冗余写库的方...

    2022年5月14日
    1800
  • 我们从来都反对“大中台,小前台”的架构设计!

    在2020全球敏捷架构峰会上,快狗打车的架构师李洪英,分享了快狗打车业务中台的一些经验与思考。 画外音:PPT见文末。   问题一:什么是平台? 定义:一种基于外部供应商和顾客之间的价值创造互动的商业模式;它是规则和标准的制定者。   问题二:平台分为哪几类? (1)应用平台; (2)业务平台; (3)技术平台;   问题三:平台的价值在哪里? 于他:为所有...

    2022年5月15日
    2300
  • 无锁缓存,每秒10万并发,究竟如何实现?

    有一类业务场景: (1)超高吞吐量,每秒要处理海量请求; (2)写多读少,大部分请求是对数据进行修改,少部分请求对数据进行读取; 这类业务,有什么实现技巧么?   接下来,一起听我从案例入手,娓娓道来。   快狗打车,场景举例: (1)司机地理位置信息会随时变化,可能每几秒钟地理位置要修改一次; (2)用户打车的时候查看某个司机的地理位置,查询地理位置的频率...

    2022年5月14日
    6000
  • Linux后门入侵检测工具使用

    0x00 描述 当我们的应用系统被入侵后,系统是否已被黑客上传webshell甚至植入木马后门程序。如果依靠人工排查,一是工作量大,二是需要一定程度的技术知识和业务知识才能判断什么是正常什么是异常。工作量大决定排查工作不可能由个别具有技术知识和业务知识的人来完成工作而需要其他人员参与,而如果这些没有“一定程度的技术知识和业务知识”的人员参与基本必然后导致大量...

    2022年6月2日
    8600

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信