背景
不同语言、不同协议的开发的微服务框架,对于各自的能力和模型都有不同的抽象,例如有的微服务框架是接口级别进行服务注册和发现,有的微服务框架是通过应用级别进行注册和发现,造成对异构微服务系统间互联互通,并且进行统一的治理变得非常困难。
OpenSergo 试图解决这个问题,通过概念标准化,定义微服务组件,服务注册发现,服务元信息格式,服务可观测等基础能力,打通各个微服务框架构建的应用;同时通过协议标准化,明确数据面和控制面通信方式、确定服务治理规则的标准格式,实现异构微服务系统的统一治理。
概念
OpenSergo 是一套开放的、语言无关的、贴近业务语义的云原生服务治理规范。面向异构微服务体系的场景,让企业能够以一种统一的规范来管理不同语言、不同协议的服务。尚在持续迭代中,当前不建议用于生产。
OpenSergo的范围
1. 服务注册发现:定义服务之间的服务注册和发现能力,使得异构微服务体系可以互联互通。
2. 服务治理:定义服务元信息格式,以及服务治理具体能力,描述这些能力所要达到的效果。
3. 服务可观测性:定义服务可观测性的数据格式,为链路追踪,服务治理能力可视化等做好基础。
OpenSergo的架构
1. 控制面(负责接收上报的元数据,下发服务治理规则):最终用户通过管控端来查看、修改服务治理配置。
2. 通信协议:控制面和数据面之间,通过 OpenSergo 协议来通信。
3. 数据面(负责接收并应用服务治理配置):一般是指各个微服务框架,主要形态可以分为三类,SDK、Java Agent、Sidecar。
OpenSergo协议
- 服务注册和发现协议:定义服务之间的服务注册和发现通讯协议,使得异构微服务体系可以互联互通。
- 服务元数据协议:对于服务而言,需要上报服务契约信息,用于进行服务调试,服务路由等服务治理场景,以及心跳信息,用于确保服务元数据的时效性。
- 服务治理规则协议:定义服务治理规则如何下发、数据面如何监听服务治理的配置信息。
- 服务可观测协议(OpenTelemetry):定义服务可观测性的数据格式,为链路追踪,服务治理能力可视化等做好基础。