其中应用进程中包含了 RPC SDK 而没有区分表达,Traffic Interceptor、Pilot Agent 和 Envoy 三个组件在同一个容器中,所有组件共享同一个Pod。OneOps Core 是基于 K8s 所构建的中心化 mesh 运维 Operator,收到控制台(图中标识为小人的 Operator 指代)调用开启或关闭流量透明拦截的接口后,通过调用 Pilot Agent 所提供的接口完成对Pod 中应用流量的操作。为了保证打开和关闭透明拦截功能时无业务流量的调用损失,请注意图中红色标识出的二大块流程。开启流量拦截时:Pilot Agent 将调用 RPC SDK 的 offline 接口(消息 2.1.1),间接完成从服务注册中心对本机做去注册摘除流量;然后调用 Traffic Interceptor 组件所提供的接口开启流量拦截功能(消息2.1.2);最后再调用 RPC SDK 的 online 接口将本机注册到服务注册中心(消息 2.1.3)。 关闭流量拦截时:Pilot Agent 将调用 Envoy 的优雅关闭接口(消息 4.1.1),Envoy 会在 RPC SDK 与 Envoy 建立的连接上透传这一消息(即 Envoy 会调用 RPC SDK 的优雅关闭接口,上图并没有表达出), 告诉 RPC SDK 不要再向已建立的这一长连接上发送任何 RPC 请求;随后 Pilot Agent 调用 Traffic Interceptor 接口关闭流量拦截功能(消息 4.1.2);最后,Envoy 的优雅关闭接口被调用时会启动一个 延时 15 秒的定时器,确保 RPC SDK 与 Envoy 间已建立的长连接上还没有完成处理的请求有足够的时间 处理完以免出现流量有损,当定时器到期后 Envoy 会主动关闭与 RPC SDK 所建立的连接(消息 6)。
答复内容摘自《云原生技术与架构实践年货小红书》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/topic/download?id=1127
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。