trpc-cpp流式服务

  • 大规模数据包。 比如,有一个大文件需要传输。 使用流式 RPC 时,客户端分片读出文件内容后直接写入到流中,服务端可以按客户端写入顺序读取到文件分片内容,然后执行业务逻辑。 如果使用单次 RPC,需要多次调用RPC方法,会遇到分包、组包、乱序、业务逻辑上下文切换等问题。
  • 实时场景。 比如,股票行情走势,资讯 Feeds 流。 服务端接收到消息后,需要往多个客户端进行实时消息推送,流式 RPC 可以在一次 RPC 调用过程中,推送完整的消息列表。
  • Istio、Envoy、Nacos 等项目,内部都是用 gRPC 作为通信协议来实现控制平面

tRPC 协议的流式 RPC 分为三种类型:

C++协程介绍

N:1 协程。

协程是语言级别的特性(C++20 原生支持),由编译器生成状态机逻辑,通过 co_awaitco_yield 等关键字实现隐式挂起和恢复,无需直接操作底层上下文。

Higress 的 OCI 扩展插件

OCI(Open Container Initiative,开放容器倡议)是一个轻量级、开放的治理组织,在 Linux 基金会的支持下成立,致力于围绕容器格式和运行时创建开放的行业标准。OCI 项目由 Docker、CoreOS(后被 Red Hat 收购,相应席位由 Red Hat 继承)以及容器行业的其他领导者于 2015 年 6 月启动。其技术委员会(Technical Oversight Board,TOB)成员随时间有所更迭,历史上曾包括 Red Hat、Microsoft、Docker、IBM、Google、SUSE 等,具体成员可查阅 OCI Technical Oversight Board

Envoy xDS 协议介绍

xDS(Extensible Discovery Service,可扩展发现服务)是 Envoy 代理用来从控制面(Control Plane)获取动态配置的一组 gRPC/REST API 的统称。这里的 “x” 代表具体的资源类型,例如 Listener、Route、Cluster、Endpoint,分别对应 LDS、RDS、CDS、EDS。借助 xDS,Envoy 能够在不停机、不 reload 的情况下热更新监听器、路由表、上游集群、证书等几乎所有运行期配置,这正是 Istio、Higress 等服务网格与云原生网关实现毫秒级配置生效的底层基础。