惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
M
MIT News - Artificial intelligence
量子位
N
Netflix TechBlog - Medium
The Cloudflare Blog
The GitHub Blog
The GitHub Blog
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
B
Blog
博客园_首页
博客园 - Franky
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
爱范儿
爱范儿
H
Help Net Security
Y
Y Combinator Blog
Stack Overflow Blog
Stack Overflow Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - toong

envoy离线编译方法 Kubernetes AI Gateway Kind 归属地图 kubuntu通过flatpak安装软件 ai-gateway 安装记录 家用台式工作站软件配置 envoy DDOS HTTP/2 Bomb CVE-2026-47774 安全漏洞分析 envoy源码分析(十四)-- XDS的启动流程 P2P与FRP与websocket ros2入门(零)-- 难点与挑战 ros2入门(二)-- 基本概念 envoy源码分析(十三)-- WASM python运行虚拟化环境 大模型从0到1 envoy源码分析(十二)-- XDS/GRPC 绑定网卡中断后是否需要设置RFS linux socket reuse port 小测试 envoy源码分析(十一)--性能分析 envoy源码分析(八)--main线程专项分析 envoy源码分析(九) -- circuit breakers 现代C++ envoy timeout 说明 观察中断的脚本 /proc/interrupts openssl查看编译时选项设置的方法 内核ipsec转发优化方法 提高ipsec多核并行能力的优化方法之一 tc qdisc 的burst如何设置 bash模拟netstat取值的脚本 linux内核对MSI网卡队列的smp_affinity亲和CPU选择 bash多并发--进程池数量控制 bash单例模式
envoy源码分析(十)--事件机制专项分析
toong · 2025-12-26 · via 博客园 - toong

简述

envoy 是异步事件驱动的。使用了libevent库来实现。

libevent开启了多线程支持,evthread_use_pthreads(),这个API会打开线程锁。允许跨线程的事件操作。

envoy 有一个master线程,多个worker线程。每个线程有自己的event_fd。

在各线程,event_fd,由 dispatcher 封装。  master 和  worker 之间会相互调用对方的 dispatcher, 所以,libevent需要线程锁。

envoy代码实现在目录: envoy/source/common/event/

libevent代码实现在:https://github.com/libevent/libevent/blob/release-2.1.12-stable/event.c#L1923 

类图

image

简要流程图

image

更多

envoy 1.34 之后就支持了 io_uring, 可以将主要网络IO模型中的 libevent去掉,也就同时去掉了锁。

不过现在还在迭代中,不是个稳定功能

https://www.envoyproxy.io/docs/envoy/latest/configuration/other_features/io_uring.html

https://arthurchiao.art/blog/intro-to-io-uring-zh/

内核需要5.11版本。