系列文章:


总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 邀约

3 Envoy 线程模型

4 监听器连接负载均衡


1 前言

        如果你对博客有任何疑问,请告诉我。

第四十七章 九析带你轻松完爆 Istio - Envoy 线程模型_Envoy thread


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

第四十七章 九析带你轻松完爆 Istio - Envoy 线程模型_k8s 视频_02


3 Envoy 线程模型

        Envoy 是单进程内包含多线程的架构设计。单进程内部包含两种线程-主线程(master thread)和工作线程(worker thread)。主线程的作用是控制、协调任务;工作线程的作用是执行监听、过滤和转发。如下图所示:

第四十七章 九析带你轻松完爆 Istio - Envoy 线程模型_Envoy 线程_03

        Envoy 进程启动时会开启监听端口(listener),一旦监听器接受了客户端的连接,此连接的生命周期就会绑定到 Envoy 内的一个工作线程上。由此可知,Envoy 被设计成多个单线程并行,100% 无阻塞的模式。对于大多数工作负载,我们建议将工作线程的数量配置为等于计算机上硬件线程的数量。查看 Linux 操作系统最大进程数命令为:

sysctl kernel.pid_max 或 cat /proc/sys/kernel/pid_max


4 监听器连接负载均衡

        默认情况下,Envoy 工作线程之间相互独立且并无联系,这意味着所有工作线程都独立尝试在监听器上接受连接,并依靠内核在线程之间做负载均衡。对于大多数工作负载,内核对这些连接的负载均衡处理会非常出色。但是,对于某些工作负载(例如,服务网格 HTTP2 / gRPC 出口),必须强制 Envoy 在工作线程和连接之间负载均衡,为了支持上述特性,Envoy 允许在其监听端口上针对连接设置不同种类的负载均衡策略。