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

推荐订阅源

博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
博客园 - Franky
IT之家
IT之家
V
Visual Studio Blog
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
宝玉的分享
宝玉的分享
博客园 - 叶小钗
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
罗磊的独立博客
小众软件
小众软件
Jina AI
Jina AI

博客园 - 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 绑定网卡中断后是否需要设置RFS linux socket reuse port 小测试 envoy源码分析(十一)--性能分析 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源码分析(十二)-- XDS/GRPC
toong · 2026-01-15 · via 博客园 - toong

XDS

XDS 现在是cncf的一个标准了。

它是由envoy的xds接口演化出来的 数据面 接口,并且现在还在持续演化中。

https://github.com/cncf/xds

现在它的定义,一部分在 cncf/xds 里,一部分在envoy里,未来会弄到一起。

image

XDS由grpc承载。

GRPC

GRPC是通信协议(通信机制), 由http2承载。

grpc传输的是straem,stream里是序列化好的结构化数据。

其序列化与反序列化,支持多种工具,json等。默认是protobuf。

扫盲看这里:https://grpc.io/docs/what-is-grpc/

入门实践(C++):https://grpc.io/docs/languages/cpp/quickstart/

先用 bazel 编译一下grpc库。再用bazel编译里边的example,就可以实验了。

最简用法的代码:

https://github.com/grpc/grpc/blob/master/examples/cpp/helloworld/greeter_client.cc

message的定义,用过protobuf的都比较熟悉了。除此之外,接口的定义也在protobuf里,如下:

叫service:https://github.com/grpc/grpc/blob/master/examples/protos/helloworld.proto#L25

image

分别在代码里,实现这两个函数就可以了: SayHello(), 

client实现这个函数的调用逻辑:

image

 server实现这个函数的运行逻辑:

image

只需要上述三步,就完成了一个RPC接口的实现。

envoy

envoy是client,以ads接口举例,它的实现如下:

定义:envoy/api/envoy/service/discovery/v3/ads.proto

接口名是:StreamAggregatedResources

image

接口的调用在这里:

image

envoy/api/envoy/service/discovery/v3/google_async_client_impl.cc

image

envoy 有两个grpc实现,一个是envoy自己开发的轻量的,一个是google的库(即上图)。