站在 Consumer 视角(即 Consumer 侧的 Envoy 进行升级,Consumer 代表流量调用的发起方)所观测到的热升级流程是怎样的?
当 Envoy 有一个新版本需要升级时(图中标识为 v2),通过运维控制台可以设置这个新版本的镜像信 息,通过 OpenKruise 的 SidecarSet 可以拉到这一镜像并将镜像中的新版本 Envoy 二进制程序拉起。 随后,新版本 Envoy 会向老版本 Envoy(路中标识为 v1)发起热升级流程。热升级大致包含如下几个流程:老版本进程中所有的侦听 fd 通过进程间通讯的方式交给新版本进程(消 息 5.1),由新版本进程继续在之上进行侦听(消息 5.1.1),换句话说,之后所有在这些被侦听端口上 新建的连接都会发生在新版本进程中;老版本进程调用 RPC SDK 的优雅关闭接口(消息 5.3),告诉 RPC SDK 不要再已建立的连接上发起新的调用,如果要发起新调用则必须重新建立连接,显然新连接将与新版本进程建立,随后的调用流量将全部进到新版本进程;老版本进程向 RPC SDK 发起优雅关闭接口调用的同时会建立一个时延 15 秒的定时器,确保与 RPC SDK 所建立的连接在这 15 秒中都处理完,定时器到期后关闭这一连接并退出老版本进程(消息 5.4),从而结束整个热升级流程。
答复内容摘自《云原生技术与架构实践年货小红书》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1127
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。