[Discussion] gRPC transport protocol between OpenSergo SDK and operator | 传输链路协议设计 #22
Labels
area/control-plane
Category issues or PRs related to OpenSergo control plane
area/data-plane
Category issues or PRs related to OpenSergo SDK or adapters
Two kinds of design:
(English version TBD...)
在 issue #17 中,社区初步对 OpenSergo operator 及 SDK 的结构及通信链路进行了设计,其中 operator 与 SDK 之间的链路由 gRPC 承接。这里面一个关键的设计点是 OpenSergo low-level config 如何在 gRPC 链路上传输,即其传输格式与通信机制。
社区提出了一种朴素的设计 (OpenSergo universal transport service),将流程划分为发起订阅 (SubscribeConfig) 及 配置推送 (PushConfig) 两个流程,流程图如下:
该协议通过一套 service 来传输所有类型的 OpenSergo config。该设计具备简单的 request/response ACK 机制,但这里面其实还会有比较多的考虑点,包括 ACK/NACK 机制的保证、资源版本、请求顺序与一致性、链路承载的复杂度、增量/全量模型等。目前社区已经对该方案进行初步 POC,还在进行更多场景的验证探索。
社区的另一种思路是借助 xDS 协议中的 ECDS service 链路,这个链路具备携带任意类型 data 的能力,从而也可以具备承载 OpenSergo low-level config 订阅及传输的能力,同时 xDS 协议本身在容错、稳定性、性能模型相关的设计都逐步成熟。这个方式的优势是控制面的传输部分(ECDS server)可以借助 go-control-plane 这个项目来实现,但是在 SDK 侧可能需要社区进行比较多的开发适配(各个生态比较欠缺完备的 xDS client 的实现)。
欢迎社区针对 OpenSergo universal transport service 或 OpenSergo on xDS (ECDS) 的方案进行探讨,如果有更好的设计也欢迎提出。
The text was updated successfully, but these errors were encountered: