跳到主要内容

赵奕豪

本次(2022/11/23)OpenSergo 与 Sentinel 社区会议合并进行,议程如下:

  • 同步上一周期的进展,包括微服务治理 spec 建设、Control Plane && SDK 进展、社区生态接入,以及 Sentinel 社区进展。
  • 社区分享与讨论,包括 Sentinel 2.0 新模型及流量治理骨架设计讨论、OpenSergo 与 Istio 生态结合的方案讨论等。

会议纪要:

议题讨论

  1. 社区分享了 Sentinel 2.0 新模型及流量治理骨架设计。Sentinel 2.0 将升级为流量治理组件并作为 OpenSergo 流量治理能力与标准实现,其中重点设计包括:

欢迎大家一起参与 Sentinel 2.0 Java/Go 版本的共建~

  1. 社区分享了 OpenSergo 与 Istio 生态结合的方案,同时分享了 OpenSergo 流量路由 spec 订正思路。
  • 关于 OpenSergo 与 Istio 生态结合的方案,有两种情况(1)OpenSergo 控制平面具备 CRD 转换的能力,支持将 OpenSergo 流量路由/染色 CRD 受限转换为 Istio VirtualService/DestinationRule 以及 EnvoyFilter(按需)。这样可以做到开箱即用,但 CRD 转换受限于 Istio/Envoy 本身的能力,只能配置最基本的 OpenSergo 治理能力(2)OpenSergo 控制面将 CRD 转为 low-level config 后由 OpenSergo 自身的链路进行配置下发,通过 Envoy WASM plugin 或 SDK 生效(后者即框架本身支持 OpenSergo),这种场景支持全部的 OpenSergo 治理能力。
  • 基于通用性、理解成本等考虑,社区提出了 OpenSergo 流量路由 spec 的另一种思路:直接基于 Istio VirtualService/DestinationRule 进行字段扩展,重新定义了 TrafficRouterVirtualWorkload。稍后社区将提交新的 PR 来进行详细描述。
  • 基于以上两点,全链路灰度在 OpenSergo 生态中的实现方式:TrafficLane CRD 按需生成 TrafficRouter/VirtualWorkload CRD(OpenSergo 体系,走 OpenSergo 链路下发与生效)或 VirtualService/DestinationRule + EnvoyFilter(纯 Istio+xDS 体系)。

image

同时社区针对 Istio 控制平面存在的问题进行了讨论。

其它社区进展同步

OpenSergo 社区关键进展:

Sentinel 社区关键进展:


社区会议参与方式

OpenSergo 社区会议每两周开展一次(一般是每两周的周三晚),时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 钉钉会议入会口令:244 801 51010

欢迎社区同学参与讨论与分享。

赵奕豪

为什么需要微服务治理与 OpenSergo?

在经典微服务架构中,我们通常将服务调用中各角色划分为三部分:服务提供者、服务消费者、注册中心。经典的微服务架构可以解决微服务能调通、可以运行起来的问题。随着分布式服务架构的不断演进、业务规模的扩张,诸多复杂的稳定性与易用性问题显现出来,这时候就需要一些手段来针对日益复杂的微服务架构进行“治理”。微服务治理就是通过流量治理、服务容错、安全治理等技术手段来减少甚至避免发布和管理大规模应用过程中遇到的稳定性问题,对微服务领域中的各个组件进行治理。服务提供者、消费者、注册中心、服务治理,构成现代微服务架构中重要的几环。

image

微服务治理是把微服务做稳做好的关键一环。但是,业界微服务治理存在概念不统一、配置形式不统一、能力不统一、多框架统一管控较为复杂等问题。比如我们希望配置流量灰度规则,在 Spring Cloud Alibaba 中可能需要通过 YAML 方式配置,在 Dubbo 中需要通过另一种配置格式进行配置,在 Istio 体系内中可能又需要通过 Istio CRD 的方式进行配置。不同框架治理配置方式的不一致使得微服务统一治理管控的复杂度相当高。另外,业界的各种框架支持的服务治理能力都不统一,且通常比较基础,很多时候无法覆盖生产级的场景。

background

基于上面这些痛点,阿里巴巴在2022年1月开始和 bilibili、字节等企业讨论服务治理如何规范化和更加普及,从而共同发起了 OpenSergo 项目OpenSergo 是开放通用的,覆盖微服务及上下游关联组件的微服务治理项目,从微服务的角度出发,涵盖流量治理、服务容错、服务元信息治理、安全治理等关键治理领域,提供一系列的治理能力与标准、生态适配与最佳实践,支持 Java, Go, Rust 等多语言生态。OpenSergo 的最大特点就是以统一的一套配置/DSL/协议定义服务治理规则,面向多语言异构化架构,覆盖微服务框架及上下游关联组件。无论微服务的语言是 Java, Go, Node.js 还是其它语言,无论是标准微服务还是 Mesh 接入,从网关到微服务调用,再到微服务对数据库/缓存的访问,开发者都可以通过同一套 OpenSergo CRD 标准配置进行统一的治理管控,而无需关注各框架、语言的差异点,降低异构化、全链路微服务治理管控的复杂度。

overview

OpenSergo 提供 Java、Go 等多语言的 SDK,各个框架生态可以非常方便地通过 OpenSergo SDK 来对接 OpenSergo 标准配置,接入到 OpenSergo 生态中,通过 OpenSergo 控制平面 (Control Plane) 统一管理服务治理规则。

微服务视角的数据库治理是保障服务稳定性的关键一环

提到“微服务治理”,很多开发者会首先想到针对微服务之间的调用流量进行治理,但很多时候大家容易忽视掉微服务访问存储与其它中间件的这部分流量。在一个真实的业务生产环境中,流量首先先进入入口网关(如 Nginx、Envoy),再流转到后端 Web Server,再流转到微服务之间的 RPC 调用,再流转到针对数据库、缓存、消息等存储/中间件的访问。在这样一个全链路的架构中,仅仅关注微服务之间的调用是不够的,我们需要针对链路中的每一环分别进行针对性的治理。其中微服务对数据库的访问是非常普遍的,也是容易出现稳定性问题的一环。比如:

  • 某个应用某类报表 SQL 访问量非常大,且查询非常消耗性能,把数据库 CPU 打满
  • 慢 SQL 访问非常多,占满连接池/业务线程池,导致服务无法处理正常请求,甚至导致级联雪崩
  • 连接池参数配置不合理,导致大量 SQL 写操作时无法有效获取连接,业务大量报错
  • 数据库访问需要按环境标进行隔离,比如灰度数据写入到灰度表中

db-gov-bg

对于大多数的后端应用来讲,系统性能扩展的瓶颈主要受限于数据库。尤其在微服务的环境下,数据库的性能治理问题往往也是团队优先级最高的几类工作之一,数据库治理自然也成为微服务治理中必不可少的一环。我们期望开发者可以结合数据库治理能力,来保障微服务访问数据库的稳定性(保护微服务自身不被拖垮),同时也保障数据库的稳定性。

OpenSergo 联合 ShardingSphere 社区共建数据库治理标准

基于以上背景,OpenSergo 社区期望结合企业与开源社区的经验,抽出一套通用的、从微服务视角出发的数据库治理标准规范。ShardingSphere 作为数据库治理领域的标杆项目,沉淀了非常丰富的最佳实践与技术经验,可以很好地为 OpenSergo 补充数据库治理领域的空缺。因此 OpenSergo 社区联合 ShardingSphere 社区共建微服务视角的数据库治理标准,扩充治理边界,让社区能够以标准化的方式针对不同数据层框架与流量进行统一治理管控,共同推进治理领域技术与生态演进。

opensergo-db-governance-overview

对于此次 OpenSergo 与 ShardingSphere 社区之间的合作,双方社区负责人都对此次合作表达了自己的观点:

Apache ShardingSphere PMC Chair 张亮: 在微服务领域,服务间的交互与协作已日臻完善,而服务对数据库的访问却依然缺失行之有效的标准。ShardingSphere 自开源以来,一直持续不断的践行着“连接、增强、可插拔”的设计哲学。其中,“连接”则是希望提供标准化的协议和接口,打破开发语言访问异构数据库的壁垒。OpenSergo 提出了微服务治理的标准,并首次将数据库的访问放在了标准中,非常具备前瞻性。作为访问数据库重要入口的微服务,我非常希望 ShardingSphere 和 OpenSergo 共建标准。

OpenSergo && Sentinel 社区负责人 赵奕豪(宿何):在微服务治理领域中,除了微服务本身的治理之外,针对数据库访问的治理也是保障业务可靠性与连续性的关键一环。ShardingSphere 作为数据库治理领域的标杆项目,沉淀了非常丰富的最佳实践与技术经验,可以很好地为 OpenSergo 补充数据库治理领域的空缺。因此我们联合 ShardingSphere 社区共建微服务视角的数据库治理标准,扩充治理边界,期待让社区能够以标准化的方式针对不同数据层框架与流量进行统一治理管控,共同推进治理领域技术与生态演进。

OpenSergo 微服务视角的数据库治理标准主要包括以下几部分:

对数据库 workload 及访问对象的抽象

在治理规则中,我们通常需要指定规则作用的数据库实例(或实例组),或者满足的 SQL 条件。针对这一部分,我们在 OpenSergo 数据库治理标准中针对数据库 target workload 及访问对象进行了一些抽象。

  • 虚拟数据库 (VirtualDatabase):在数据库治理中,不管是读写分离、分库分表、影子库,还是加密、审计和访问控制等,都需要作用在一个具体的数据库之上。在这里将这样的一个逻辑的数据库称为虚拟数据库,即 VirtualDatabase。VirtualDatabase 在应用看来是一组特定的数据库访问信息,并通过绑定特定的治理策略实现相应的治理能力
  • 数据库端点 (DatabaseEndpoint):在数据库治理中,通过 VirtualDatabase 向应用声明了可以使用的逻辑数据库,而数据的真实存储则依赖于这样的一个物理的数据库,这里称为数据库访问端点,即 DatabaseEndpoint。DatabaseEndpoint 对应用无感知,它只能被 VirtualDatabase 通过特定治理策略所绑定然后连接和使用。

针对访问对象的条件抽象:

  • 数据库访问对象 (DatabaseAccessTarget):定义一组匹配条件,如针对某个实例/库/表的访问、针对某类 SQL 性质(读/写操作)、按 SQL pattern 匹配、按 SQL 参数匹配等。将 DatabaseAccessTarget 与具体的治理规则结合,我们可以实现细粒度的数据库流量治理。

流量治理在数据库访问的体现

在微服务对数据库的访问中,流量路由、流量隔离、流控降级与容错等相关流量治理能力是数据库治理中非常重要的一块。

在流控降级与容错领域,我们复用了 OpenSergo 流控降级与容错标准。OpenSergo 流控降级与容错 spec 定义了三要素:Target(针对怎样的流量)、Strategy(对应怎样的流量治理策略)、FallbackAction(触发策略之后的行为)。在针对数据库访问的治理中,我们将流量条件抽象为 DatabaseAccessTarget,结合 OpenSergo 自有的流控、并发控制、熔断等策略,即可以实现细粒度的流控降级与容错。

db-ft

同时数据库流量治理体系中还有一些关键的、数据库领域特有的治理能力:

  • 读写流量路由 (ReadWriteSplitting):读写分离是常用的数据库扩展方式之一,主库用于事务性的读写操作,从库主要用于查询等操作。读写流量路由规则可以指定将读 SQL 路由到读库,事务性的读写操作路由到主库。
  • 分库分表路由 (Sharding):数据分片路由是基于数据属性一种扩展策略,对数据属性进行计算后将请求路由到特定的数据后端,目前分为分片键分片和自动分片。其中分片键分片中需要指明需要分片的表、列、以及进行分片的算法。
  • 数据流量隔离 (影子库表 Shadow):影子库表可以帮助在灰度环境或者测试环境中,接收灰度流量或者测试数据请求,结合影子算法等灵活配置多种路由方式。
  • 数据加密 (Encryption):企业往往因为安全审计和合规的要求,需要对数据存储提供多种安全加固措施,比如数据加密。 数据加密通过对用户输入的 SQL 进行解析,并依据用户提供的加密规则对 SQL 进行改写,从而实现对原文数据进行加密,并将原文数据(可选)及密文数据同时存储到底层数据库。在用户查询数据时,它仅从数据库中取出密文数据,并对其解密,最终将解密后的原始数据返回给用户。

db-gov-feature-intro-1

以下是一个读写流量路由规则的示例:

# 虚拟数据库配置
apiVersion: database.opensergo.io/v1alpha1
kind: VirtualDatabase
metadata:
name: readwrite_splitting_db
spec:
services:
- name: readwrite_splitting_db
databaseMySQL:
db: readwrite_splitting_db
host: localhost
port: 3306
user: root
password: root
readWriteSplitting: "readwrite" # 声明所需要的读写分离策略
---
# 写数据源的数据库端点配置
apiVersion: database.opensergo.io/v1alpha1
kind: DatabaseEndpoint
metadata:
name: write_ds
spec:
database:
MySQL: # 声明后端数据源的类型及相关信息
url: jdbc:mysql://192.168.1.110:3306/demo_write_ds?serverTimezone=UTC&useSSL=false
username: root
password: root
connectionTimeout: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
---
# 第一个读数据源的数据库端点配置
apiVersion: database.opensergo.io/v1alpha1
kind: DatabaseEndpoint
metadata:
name: read_ds_0
spec:
database:
MySQL: # 声明后端数据源的类型及相关信息
url: jdbc:mysql://192.168.1.110:3306/demo_read_ds_0?serverTimezone=UTC&useSSL=false
username: root
password: root
connectionTimeout: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
---
# 第二个读数据源的数据库端点配置
apiVersion: database.opensergo.io/v1alpha1
kind: DatabaseEndpoint
metadata:
name: read_ds_1
spec:
database:
MySQL: # 声明后端数据源的类型及相关信息
url: jdbc:mysql://192.168.1.110:3306/demo_read_ds_1?serverTimezone=UTC&useSSL=false
username: root
password: root
connectionTimeout: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
---
# 静态读写分离配置
apiVersion: database.opensergo.io/v1alpha1
kind: ReadWriteSplitting
metadata:
name: readwrite
spec:
rules:
staticStrategy:
writeDataSourceName: "write_ds"
readDataSourceNames:
- "read_ds_0"
- "read_ds_1"
loadBalancerName: "random"
loadBalancers:
- loadBalancerName: "random"
type: "RANDOM"

以下是一个针对某个 SQL 进行并发控制的示例。这个规则会针对 foo 应用针对 SELECT * FROM users WHERE id = ? 的 SQL 访问进行并发控制,单机并发数不超过 8。

apiVersion: traffic.opensergo.io/v1alpha1
kind: DatabaseAccessTarget
metadata:
name: target-foo-user-select-sql
spec:
sqlMatch:
- exactMatch: "SELECT * FROM users WHERE id = ?"
---
apiVersion: fault-tolerance.opensergo.io/v1alpha1
kind: ConcurrencyLimitStrategy
metadata:
name: concurrency-limit-foo
spec:
maxConcurrency: 8
limitMode: 'Local'
---
apiVersion: fault-tolerance.opensergo.io/v1alpha1
kind: FaultToleranceRule
metadata:
name: my-sql-conc-limit-rule
spec:
selector:
app: foo
targets:
- targetRef: target-foo-user-select-sql
strategies:
- name: concurrency-limit-foo

其它数据库治理能力

  • 数据库发现 (DatabaseDiscovery):数据库自动发现指的是根据数据库高可用配置,通过探测的方式感知数据源状态变化,并对流量策略做出相应的调整。比如后端数据源为 MySQL MGR,那么可以配置数据库发现类型为 MYSQL.MGR,指定 group-name,并配置相应的探测心跳节律。
  • 分布式事务配置 (DistributedTransaction):声明分布式事务相关的配置,目前支持声明事务的类型。

展望

微服务视角的数据库治理是保障微服务稳定性的重要一环。OpenSergo 社区将持续与 ShardingSphere 及 Database Mesh 社区进行合作,不断完善与丰富数据库治理标准及场景。接下来社区会开展 ShardingSphere 与 OpenSergo 的集成工作,将数据库治理 spec 落地到社区实现。

微服务治理是微服务改造深入到一定阶段之后的必经之路,是将微服务做稳做好的关键。OpenSergo 社区持续与 ShardingSphere、Database Mesh、CloudWeGo、Kratos、Spring Cloud Alibaba、Dubbo 等社区共同建设 OpenSergo 微服务治理标准,将企业与社区中微服务治理的场景与最佳实践共同提取成标准规范,也欢迎更多社区与企业一起参与 OpenSergo 微服务治理标准的共建。

OpenSergo 社区现在处于高速发展阶段,从微服务治理标准定义,到 Control Plane 的实现,再到 Java/Go/C++/Rust 等多语言 SDK 与治理功能的实现,再到各个微服务生态的整合与落地,都还有大量的演进工作,欢迎社区一起参与标准完善与代码贡献。

OpenSergo 开源贡献小组正在火热招募贡献者。如果您有时间,有热情,有意愿,欢迎联系社区加入开源贡献小组,一起共同完善 OpenSergo 和 Sentinel,一起主导微服务治理技术与标准演进。Now let's start hacking!

欢迎关注 OpenSergo 社区微信公众号,了解微服务治理社区最新动态:OpenSergo

赵奕豪

本次 OpenSergo 社区双周会(2022/11/09)的议程:

  • 同步上一周期的进展,包括 spec 建设、Control Plane && SDK 进展、社区生态接入等进展
  • 社区分享与讨论,包括 Spring Cloud Alibaba 流量染色 Demo 演示、OpenSergo 控制面设计优化讨论、开源贡献小组任务梳理与讲解等

本次 OpenSergo 社区双周会纪要:

  1. @十眠 演示了 Spring Cloud Alibaba 集成 OpenSergo 流量染色 spec 的 demo,适配模块的代码预计近期提交 PR。流量染色是流量治理领域非常重要的能力,欢迎社区一起来 review 与完善流量染色 spec: https://github.com/opensergo/opensergo-specification/pull/52

  2. 社区针对 OpenSergo 控制平面 (Control Plane) 现有的设计与问题进行了讨论。其中包括:

近期社区整理了很多 OpenSergo 控制平面相关的 good first issue,欢迎社区同学参与贡献:https://github.com/opensergo/opensergo-control-plane/issues

  1. Committer @贾江南 分享了如何快速参与到 OpenSergo 社区贡献中,并进行操作演示。大家也可以参考社区贡献指南进行入门:

GitHub discussions: https://github.com/opensergo/opensergo-specification/discussions/55


OpenSergo 社区会议每两周开展一次(一般是每两周的周三晚),时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 钉钉会议入会口令:244 801 51010

欢迎社区同学参与讨论与分享。

赵奕豪

OpenSergo 是开放通用的,覆盖微服务及上下游关联组件的微服务治理项目。OpenSergo 从微服务的角度出发,涵盖流量治理、服务容错、服务元信息治理、安全治理等关键治理领域,提供一系列的治理能力与标准、生态适配与最佳实践,支持 Java, Go, Rust 等多语言生态。

Go 生态支持、流量染色最佳实践、流控降级与容错 spec 落地... OpenSergo 微服务治理社区 10月最新动态来啦,欢迎了解~

微服务治理 Spec 演进

  • 流量染色领域的最佳实践及 spec 设计正式透出。流量染色,顾名思义将请求流量进行颜色标记,并且将标记跟随着链路一直传递下去。结合流量路由与流量染色能力,我们可以实现全链路灰度、多环境隔离等场景,实现“流量泳道”的能力。流量染色是流量治理领域非常重要的能力,期待大家一起来完善场景以及实现相关能力,后续社区公众号会出专题文章解析这一块的场景与技术原理。

SDK/Control Plane 演进

  • OpenSergo Java SDK 迎来了首个发布版本 0.1.0-beta1。
  • 由社区主导贡献的 OpenSergo Go SDK 初版已形成,目前已初步具备流控降级与容错 spec 的对接能力。相关 PR: https://github.com/opensergo/opensergo-go-sdk/pull/2
  • OpenSergo Rust SDK 也在与社区规划中,欢迎 Rust 大佬一起参与贡献~
  • 性能与稳定性优化:社区针对同个应用多个框架分别对接了 OpenSergo SDK 的情况下,gRPC client 的复用机制进行了一些讨论与设计,预计会在11月对 Java/Go SDK 的实现进行完善。相关讨论可见:https://github.com/opensergo/opensergo-java-sdk/issues/8

社区生态演进

  • 社区完成 Spring Cloud Alibaba 流量路由能力与 OpenSergo 流量路由 spec 的初步对接,集成模块预计11月发布正式版;后续 Dubbo, Kratos, CloudWeGo 等社区也会一起参与到流量路由能力建设及 spec 对接中。
  • 随着流量治理组件 Sentinel Java 1.8.6 版本正式发布,Sentinel OpenSergo 流量治理数据源也迎来了首个版本。借助 sentinel-datasource-opensergo 数据源模块,开发者可以很方便地将 Kubernetes 集群下的应用通过 Sentinel 接入到 OpenSergo 控制面,然后通过统一的 OpenSergo CRD 对异构化的服务进行统一的流控降级与容错治理,原生支持 20+ 框架集成。文档可以参考:https://sentinelguard.io/zh-cn/docs/opensergo-data-source.html
  • 随着 OpenSergo Go SDK 初版成形,Sentinel Go 集成 OpenSergo 的数据源模块也已形成初版,目前支持流控、熔断、并发控制等规则 spec。该集成模块可作为 Go 框架对接 OpenSergo Go SDK 的指导示例,相关 PR 见:https://github.com/alibaba/sentinel-golang/pull/489

社区开发者

  • 本月 OpenSergo 社区迎来了新的一位 committer 贾江南(GitHub ID: @jnan806)。贾江南同学在过去的一段时间,积极、活跃地参与到 OpenSergo 社区讨论与贡献中,从0到1完成了 OpenSergo Go SDK 的初版实现,并且在 Go 生态适配、proto 管理、Java SDK 等方面都有着不少贡献,符合社区对 committer 持续贡献的期望。恭喜江南,期待未来持续贡献!

OpenSergo 开源贡献小组正在火热招募贡献者。如果您有时间,有热情,有意愿,欢迎联系社区加入开源贡献小组,一起共同完善 OpenSergo 和 Sentinel;对于核心贡献者,我们会提名为 committer,一起主导微服务治理技术与标准演进,并且有持续的激励机制。Now let's start hacking!

赵奕豪

本次 OpenSergo 社区双周会(2022/10/26)的议程:

  • 同步上一周期的进展,包括 spec 建设、Control Plane && SDK 进展、社区生态接入等进展
  • 宣布 Committer 晋升动态
  • 社区分享与讨论,包括流量染色 spec 与实践分享、Sentinel+OpenSergo 展望、多语言生态讨论等

本周 OpenSergo 社区双周会纪要:

  1. 经过全体 committer 提名与讨论,社区很高兴地宣布,贾江南(GitHub ID: @jnan806)正式晋升为 OpenSergo 社区 committer。贾江南同学在过去的一段时间,积极、活跃地参与到 OpenSergo 社区讨论与贡献中,从0到1完成了 OpenSergo Go SDK 的初版实现,并且在 Go 生态适配、proto 管理、Java SDK 等方面都有着不少贡献,符合社区对 committer 持续贡献的期望。恭喜江南,期待未来持续贡献!

  2. @宿何 分享 Sentinel 近期社区动态及 Sentinel 2.0+OpenSergo 的演进。本周随着 Sentinel 1.8.6 版本正式发布,Sentinel OpenSergo 流量治理数据源也迎来了首个版本。借助 sentinel-datasource-opensergo 数据源模块,开发者可以很方便地将 Kubernetes 集群下的应用通过 Sentinel 接入到 OpenSergo 控制面,然后通过统一的 OpenSergo CRD 对异构化的服务进行统一的治理规则管控。后续社区会出专题教程来指导大家接入,简短文档可以参考:https://sentinelguard.io/zh-cn/docs/opensergo-data-source.html

  3. OpenSergo Java SDK 也迎来了首个发布版本 0.1.0-beta1: https://github.com/opensergo/opensergo-java-sdk/releases/tag/v0.1.0-beta1

  4. @十眠 分享了流量染色这一块领域的最佳实践及 spec 设计。流量染色,顾名思义将请求流量进行颜色标记,并且将标记跟随着链路一直传递下去。结合流量路由与流量染色能力,我们可以实现全链路灰度、多环境隔离等场景,实现“流量泳道”的能力。流量染色是流量治理领域非常重要的能力,社区正在形成初版文档,稍后会提交 PR 请大家一起进行完善。

  5. 社区对 OpenSergo 多语言生态进行简短的讨论。除了 Java 和 Go 生态之外,Rust 生态也是社区未来期望建设的重要生态,期待大家一起共建 Rust SDK。

GitHub discussions: https://github.com/opensergo/opensergo-specification/discussions/50


OpenSergo 社区会议每两周开展一次,时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 钉钉会议入会口令:244 801 51010

欢迎社区同学参与讨论与分享。

赵奕豪

经过全体 committer 提名与讨论,社区很高兴地宣布,贾江南(GitHub ID: @jnan806)正式晋升为 OpenSergo 社区 committer。贾江南同学在过去的一段时间,积极、活跃地参与到 OpenSergo 社区讨论与贡献中,从0到1完成了 OpenSergo Go SDK 的初版实现,并且在 Go 生态适配、proto 管理、Java SDK 等方面都有着不少贡献,符合社区对 committer 持续贡献的期望。恭喜江南!

贾江南的主要贡献:

Committer 证书:

committer-sign

新晋 Committer 寄语:

很荣幸加入到 OpenSergo 社区的 Commiter 队伍,在以后我将和大家一起来共同建设 OpenSergo。我在希望的同时也非常相信 OpenSergo 未来会在微服务治理的领域中拥有举足轻重的影响力。这里可以交流答疑、可以提升技术、可以挑战技术难点,无论你是新手还是大牛,只要你有时间,有热情,有意愿,欢迎加入社区、参与贡献、拥抱 OpenSergo ~~~


OpenSergo 自项目发起开始就是开放共建的开源项目,微服务治理标准、最佳实践与生态的演进离不开各个企业与社区的共建。社区也在与 bilibili、中国移动、SphereEx 等企业以及 Kratos, CloudWeGo, ShardingSphere, Database Mesh, Apache APISIX, Dubbo, Spring Cloud Alibaba 等社区一起合作,共同完善微服务治理标准与实现。

OpenSergo 社区现在处于高速发展阶段,从微服务治理标准定义,到 Control Plane 的实现,再到 Java/Go/C++/Rust 等多语言 SDK 与治理功能的实现,再到各个微服务生态的整合与落地,都还有大量的演进工作,欢迎社区一起参与标准完善与代码贡献。

image

OpenSergo 开源贡献小组正在火热招募贡献者。如果您有时间,有热情,有意愿,欢迎联系社区加入开源贡献小组,一起共同完善 OpenSergo 和 Sentinel;对于核心贡献者,我们会提名为 committer,一起主导微服务治理技术与标准演进,并且有持续的激励机制。Now let's start hacking!

赵奕豪

本次 OpenSergo 社区双周会(2022/10/12)的议程:

  • 同步上一周期的进展,包括 spec 建设、Control Plane && SDK 进展、社区生态接入等进展
  • 社区分享与讨论,包括 OpenSergo Go SDK 设计与实现讨论、Spring Cloud Alibaba + OpenSergo 流量路由 Demo 演示等

本周 OpenSergo 社区双周会纪要:

  1. 社区同学 @贾江南 分享了近期贡献的 OpenSergo Go SDK 的设计与实现,并讨论了同个应用多个框架分别对接了 OpenSergo SDK 的情况下,client 的复用机制(issue 见此处)。SDK 的很多细节实现以及可靠性设计还需要社区来完善,欢迎社区一起来 review 与完善。同时 Sentinel Go 社区也开始开展与 OpenSergo 流控降级与容错 spec 的对接,作为 Go 社区对接的范例,也欢迎更多的 Go 社区一起参与到对接与贡献中。

相关 issue/PR:

  1. 社区演示了 Spring Cloud Alibaba 流量路由能力对接 OpenSergo 流量路由 spec 的设计与 demo,相关代码还在整理中,这部分对接模块预计11月初发布正式版;后续 Dubbo, Kratos, CloudWeGo 等社区也可以参考这一部分,一起参与到流量路由能力建设及 spec 对接中。

GitHub discussions: https://github.com/opensergo/opensergo-specification/discussions/47


OpenSergo 社区会议每两周开展一次,时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 钉钉会议入会口令:244 801 51010

欢迎社区同学参与讨论与分享。

泮圣伟

本次 OpenSergo 社区双周会(2022/09/28)的议程:

  • 同步上一周期的进展,包括 spec 建设、Control Plane && SDK 进展、社区生态接入等进展
  • 社区分享与讨论
    • OpenSergo Spec 配置接入流程介绍与演示
    • SLS iLogtail 社区分享日志实践

本周 OpenSergo 社区双周会纪要:

  1. 社区分享并演示了 OpenSergo 的 Spec 如何从定义 CRD、proto 到下发给 OpenSergo SDK 的整个流程。
  2. iLogtail 社区的 @迅飞 同学进行了日志采集、收集等实践的分享,也提出了在云原生场景下 iLogtail 的实践,对日志生产与采集的治理进行的一些展望,同时 @十眠 提出了日志治理与微服务治理结合的可能性,表示后续可以从微服务打印日志的场景入手,进行这一领域标准的抽象。欢迎社区一起思考未来对微服务日志治理的 ideas。
  3. 社区针对 OpenSergo proto 文件及多语言 gRPC stub code 的管理方式进行了进一步的讨论,贾江南 在上周的基础上(issue 见此处)分享了 proto 文件的管理的统一的思考与看法,针对社区提出的三个解决方案进行了对应的实现,推荐了按照原生 protoc 方案管理 proto 的最佳实践,并建议将方案三利用 buf.build 的代码生成功能的方案作为可能的后续发展方向。

最后 @杨博源 提出并与社区探讨 OpenSergo 在服务跨集群,跨云场景下应用和配置等方面可能出现的问题,社区后续可以进行进一步的讨论。

GitHub discussion 记录:https://github.com/opensergo/opensergo-specification/discussions/44


OpenSergo 社区会议每两周开展一次,时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 钉钉会议入会口令:244 801 51010

欢迎社区同学参与讨论与分享。

赵奕豪

本次 OpenSergo 社区双周会(2022/09/15)的议程:

  • 同步上一周期的进展,包括 spec 建设、Control Plane && SDK 进展、社区生态接入等进展
  • 社区分享与讨论
    • OpenSergo Control Plane 讨论
    • proto 文件及 stub code 的管理方式讨论
    • 数据库治理 spec 正式发布
    • 开源贡献流程与协作讨论

本周 OpenSergo 社区双周会纪要:

  1. OpenSergo Control Plane POC 版本正式对外透出,社区简单介绍了 OpenSergo 控制面的核心设计与代码结构,目前 OpenSergo 控制面项目还处于初期阶段,有非常多的完善与优化的空间,欢迎大家一起来 review 及贡献代码。相关 PR: https://github.com/opensergo/opensergo-control-plane/pull/5
  2. 社区很高兴地宣布,OpenSergo 社区与 ShardingSphere、Database Mesh 社区合作共建的数据库治理 spec v1alpha1 版本已正式发布,后续社区会进一步开展 spec 的对接以及在 ShardingSphere 社区的落地。感谢 ShardingSphere、Database Mesh 社区同学的支持与合作,也欢迎社区同学积极参与到数据库治理 spec 及实现的贡献。
  3. 社区针对 opensergo-proto 项目及多语言 gRPC stub code 的管理方式进行了讨论,@jnan806 同学在 issue 里面提供了自动CI、submodule 等思路,同时 Kratos 社区的同学也分享了 bilibili 的一些最佳实践(结合 bufbuild/buf 项目),后续社区会参考这几种思路来优化 proto 的管理方式。
  4. 关于流量路由 spec 的落地,目前社区还需要设计流量路由规则对应的 proto 形态;接下来社区会完成流量路由 spec 在 Java SDK 的对接,并与 Spring Cloud Alibaba、Dubbo 等社区进行对接落地。
  5. 向社区介绍了如何快速参与到 OpenSergo 项目中,后续社区也会整理一些指南。

GitHub discussion 记录:https://github.com/opensergo/opensergo-specification/discussions/41


OpenSergo 社区会议每两周开展一次,时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 钉钉会议入会口令:244 801 51010
  • 电话呼入:+862281944261(中国大陆)+867388953916(中国大陆)
  • 钉钉入会链接:dingtalk://dingtalkclient/action/open_mini_app?miniAppId=2018112162280005&ddMode=push&mainTask=true&keepAlive=false&newCalendar=1&page=pages%2Fdetail%2Findex%3FuniqueId%3DYU1YbnpXaFZaVXo2TUd4QXRoVUNIQT09%26recurrenceId%3D1653478200000%26inviter%3D181693639&fallback_url=dingtalk%3A%2F%2Fdingtalkclient%2Fpage%2Fcalendar_detail%3Fid%3D0%26uniqueId%3DYU1YbnpXaFZaVXo2TUd4QXRoVUNIQT09%26recurrenceId%3D1653478200000%26inviter%3D181693639

欢迎社区同学参与讨论与分享。

赵奕豪

OpenSergo 社区会议每两周开展一次,时间为1小时左右。入会方式:

  • 会议形式:钉钉会议
  • OpenSergo 社区交流群(钉钉群):34826335
  • 电话呼入:+862281944261(中国大陆)+867388953916(中国大陆)
  • 钉钉入会链接:dingtalk://dingtalkclient/action/open_mini_app?miniAppId=2018112162280005&ddMode=push&mainTask=true&keepAlive=false&newCalendar=1&page=pages%2Fdetail%2Findex%3FuniqueId%3DYU1YbnpXaFZaVXo2TUd4QXRoVUNIQT09%26recurrenceId%3D1653478200000%26inviter%3D181693639&fallback_url=dingtalk%3A%2F%2Fdingtalkclient%2Fpage%2Fcalendar_detail%3Fid%3D0%26uniqueId%3DYU1YbnpXaFZaVXo2TUd4QXRoVUNIQT09%26recurrenceId%3D1653478200000%26inviter%3D181693639

本次社区双周会(2022/08/31)的议程:

  • 同步上一周期的进展,包括 spec 建设、Control Plane && SDK 进展、社区生态接入等进展
  • 社区分享与讨论
    • OpenSergo Control Plane 及 SDK 整体方案介绍
    • OpenSergo + Sentinel Java 演示
    • 其它社区分享讨论

本周 OpenSergo 社区双周会纪要:

  1. 社区同学 @xzd1621 分享了 OpenSergo Control Plane、SDK 的整体设计,并分享了控制面与数据面之间 gRPC 协议的详细设计。Control Plane 的初版代码还在整理中,整理完成后将正式开源透出。

cp

  1. 社区通过 Sentinel (Java) + OpenSergo 的示例,演示了从拉起控制面,到应用通过 Sentinel 数据源接入 OpenSergo 控制面,再到通过控制面配置流控降级与容错 CRD 使得接入应用可以生效限流 整个流程。目前 OpenSergo Java SDK 及 Sentinel 数据源均已完成初版,可以作为社区接入的参考,欢迎社区一起来 review。

image

  1. 社区进行了一些细节的讨论,包括 spec 的扩展性、控制面与数据面之间通信协议的扩展性,以及未来可以落地的生态。社区欢迎各个开发者、社区与企业一起来完善 OpenSergo spec,共同扩充微服务治理标准与场景;同时对于 SDK 及 Control Plane 的扩展性,欢迎社区一起参与设计和代码贡献。
  2. 数据库治理 spec 方面,ShardingSphere && Database Mesh 社区同学正在进行最终的整理,预计下周形成终稿,作为 v1alpha1 版本正式对外发布。

GitHub discussion 记录:https://github.com/opensergo/opensergo-specification/discussions/36

欢迎社区同学参与讨论与分享。