Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Discussion] gRPC transport protocol between OpenSergo SDK and operator | 传输链路协议设计 #22

Open
sczyh30 opened this issue Aug 4, 2022 · 0 comments
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

Comments

@sczyh30
Copy link
Member

sczyh30 commented Aug 4, 2022

Two kinds of design:

  • A customized gRPC service: the OpenSergo universal transport service (OUTS)
  • Transport on xDS v3 (ECDS)

(English version TBD...)


在 issue #17 中,社区初步对 OpenSergo operator 及 SDK 的结构及通信链路进行了设计,其中 operator 与 SDK 之间的链路由 gRPC 承接。这里面一个关键的设计点是 OpenSergo low-level config 如何在 gRPC 链路上传输,即其传输格式与通信机制。

社区提出了一种朴素的设计 (OpenSergo universal transport service),将流程划分为发起订阅 (SubscribeConfig) 及 配置推送 (PushConfig) 两个流程,流程图如下:

image

该协议通过一套 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) 的方案进行探讨,如果有更好的设计也欢迎提出。

@sczyh30 sczyh30 added 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 labels Aug 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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
Projects
None yet
Development

No branches or pull requests

1 participant