OpenSergo,Open 是开放的意思,Sergo 则是取了服务治理两个英文单词 Service Governance 的前部分字母 Ser 和 Go,合起来即是一个开放的服务治理项目。该项目由阿里云、bilibili、字节跳动,以及 Spring Cloud Alibaba、Nacos、Apache Dubbo 社区共同维护,旨在构建一个和语言无关、和技术形态无关,但贴近业务的统一服务治理规范和实现,欢迎大家加入共建。
软件架构的核心挑战是解决业务快速增长带来的系统复杂性问题。系统越复杂,对服务治理诉求越强烈,小的技术问题越可能被放大,从而造成大的线上故障。而微服务治理就是通过无损上下线、全链路灰度、流量防护等技术手段来减少、甚至避免发布和管理大规模应用过程中遇到的稳定性问题。
虽然大家都认为微服务治理很重要,但在落地过程中会遇到各种难题。
例如,在企业内部,往往存在着不同语言、不同通信协议的微服务,这会导致治理微服务的过程中,给业务开发者、架构师平添很多的认知负担,而这类异构会衍生出更多的痛点。
阿里巴巴的微服务实践
在阿里巴巴内部,服务治理体系从形态上经历了从 SDK 方式、到 Fat-SDK 方式、再到 JAVA Agent/Sidecar 化的演进历程。具体而言,阿里巴巴从 2008 年就开始了微服务的改造,诞生了服务框架 HSF 及配套的服务治理能力;2012 年,Dubbo 框架开源,提供了非常优秀的服务治理能力,这个阶段的服务治理能力是以 SDK 的方式和服务框架进行一体化演进的;2013 年开始,为了解决 SDK 升级成本高的问题,中间件团队推出轻量级隔离容器 Pandora,将服务治理能力通过 Fat-SDK 的方式从业务中剥离出来,大幅度提升了升级效率。
然而这种方式仍然面临较高的升级成本。为了将服务治理体系和业务彻底解耦,阿里巴巴从 2019 年开始,通过将服务治理能力下沉到 JavaAgent,实现了完全无需对业务做任何改造、就能接入服务治理的能力。后来,我们将这个技术方案进行产品化,通过阿里云微服务引擎 MSE 这款产品服务云上的企业客户。
同一时期,随着业务发展的多样化,多语言构建的业务在集团内部逐渐流行起来,阿里巴巴内部开始探索多语言的治理方案,采用了基于 Istio + Envoy 的 Sidecar 方式为异构语言服务,提供基础的服务治理能力。
在这个过程中我们逐渐发现,异构微服务框架之间有不同的体系和认知,在很多概念上无法完全对齐,用一套标准的服务治理方案治理各种微服务体系变得愈发困难。因此,迫切需要一个和语言无关、和技术形态无关,但贴近业务的统一服务治理规范,使得异构微服务体系能够互联互通以及进行统一治理。
总结下来,阿里巴巴内部的服务治理经历了从基础数据面建设、到治理能力探索、再到能力标准化建设三个阶段。
bilibili 的微服务实践
从 2016 年开始,bilibili 经历了巨石架构到微服务的完整转型,整个过程中,面临了很多服务治理问题,从单体到微服务整个部署和管理模式开始进行转变,为了提高研发效率和稳定性拆分了不同粒度的服务。bilibili 于 2017 年开始思考如何管理微服务,通过容器部署和隔离在管理方面极大地解决了问题,同时也建设了统一的注册中心和配置中心基础中间件,整个微服务也围绕这两个基础中间件做了很多服务治理的探索。
在早期,bilibili 的语言还是比较统一的,基本上是以 Go 语言为主,有统一的 Kratos 框架,所以服务治理也是优先选择了 SDK 方式进行管控。随着这几年的业务快速发展,内部出现 Java、C++ 等一些语言,尝试了 Service Mesh 通过 Sidecar 方式进行管理,在这个过程中逐渐发现整个维护成本其实是不小的,并且性能损耗在降本增效的这个大环境下也有比较大的挑战。所以,bilibili 也非常期待有一套服务治理标准,可以在 Kratos 框架、Java Agent、Istio 等体系中使用。
微服务治理的发展趋势,是让业务迭代更加高效、业务和治理更加透明和解耦:
基于此,阿里巴巴在2022年1月开始和 bilibili、字节跳动等厂商讨论服务治理如何规范化和更加普及,从而共同发起了 OpenSergo 项目。
目前,不同框架、不同语言在微服务治理上的概念碎片化、无法互通。所以,OpenSergo 致力于在不同的微服务框架、通信协议之间达成共识,形成服务治理规范。
OpenSergo 总览
OpenSergo 主要包含三大部分:
对于控制面,OpenSergo 统一了治理规则,用户不必再绑定到某个开源方案、某个云厂商提供的服务上。不同的数据面、控制面只要对接 OpenSergo 规范,即可无缝对接现有的服务治理体系。
对于数据面,OpenSergo 提供了不同的接入方式:
从阿里巴巴集团内部和阿里云提供的服务治理经验来看,结合各个开源微服务框架、各公司内部的治理经验,从服务治理功能层面来说,目前业界认可的主要分为上图中的开发态、测试态、发布态、高可用、安全态五个部分:
从更大的角度来看,除了微服务框架、Service Mesh、Java Agent 方式的治理之外,服务治理还会关注网关、存储等完整的调用链路;在实现上,也会包括微服务的服务发现、配置管理、分布式事务等微服务基础组件的治理和接入。
在图中的子领域中,OpenSergo 会采纳现有的规范、提出落地新的规范,来给业务开发者提供一套标准界面,能够对业务开发者、架构师屏蔽底层差异,让他们专注于核心业务价值,从而真正兑现云原生微服务的价值。
OpenSergo 减少实施微服务治理时的阻力
OpenSergo 致力于提供统一的服务治理能力,让业务开发者、架构师能够以云原生的方式来定义自己的微服务架构,来满足自己的业务发展,从而减少实施微服务治理时的阻力。
在以往,架构师在设计架构时,总是要考虑各种微服务框架的能力、各种通信协议的差异、各种服务治理带来的能力差异,导致设计时要考虑很多底层的实现,极大地增加了认知负担。业务开发者还要关注当前的微服务框架如何才能满足自己的治理要求、当前的通信协议如何灰度、如何调试、如何限流等。可以预见,业务开发者将耗费很大一部分的精力在微服务框架、服务治理上,在核心业务价值上的投入却少了很多。
OpenSergo 将对底层能力标准化,对架构师、对业务开发者屏蔽底层差异,用更加云原生的方式来治理微服务。架构师只需要用统一的能力模型设计业务架构,而业务开发者也只需要利用统一的能力模型来专注于业务开发。
此外,对于企业而言,现有的微服务治理体系,严重特化于现有框架,阻碍了微服务框架的选型,也阻碍了新技术、新业务的发展。所以 OpenSergo 的另一个重点,是帮助开源微服务框架在企业顺利落地。
OpenSergo 提升开源微服务框架的落地速度
对于各类微服务框架,在企业中落地的一个重要难点就是与现有的服务治理体系相结合。借助 OpenSergo 标准化的服务治理能力,开源微服务框架可以通过标准化的服务治理能力与企业现有的基础设施结合,迅速在企业落地,兑现业务价值。
微服务框架对接 OpenSergo 后,业务开发者只需要修改环境变量来接入,即可和现有的服务治理系统相结合,提供上述的服务治理能力。而此前,每个企业都要对接各自的微服务治理体系,OpenSergo 能够提升企业接入新框架、新技术的速度,也能减少服务框架开发者的服务治理对接成本,扩大微服务框架的采纳率、影响力。
让异构微服务能够统一治理、让更多微服务能够互联互通,塑造更加云原生的微服务,是 OpenSergo 建立之初就树立的长期发展目标。
业内首本《微服务治理技术白皮书》正式上线,点击 阅读原文 下载。