阿里云中间件发展历程和开源现状
——胡伟琪
阿里云智能资深技术专家、云原生中间件技术负责人
中间件已经发展多年,其目的主要为通过标准接口和协议解决异构网络环境下分布式应用软件互联和互操作问题。近几年,随着云原生技术的高速发展,云时代对中间件的定义又进行了扩充。
2020 年由信通院牵头组织的云原生中间件白皮书对于云原生中间件又提出了 10 项新要求,主要分为底层资源、设计原则、运行时和呈现状态四个维度。
阿里巴巴中间件已经有 15 年的发展历史,它与阿里业务一起成长,也是阿里巴巴云原生实践 15 年全程见证者。
阿里巴巴中间件的发展可以分为四个阶段:
中间件 1.0 时代:阿里巴巴彻底放弃IOE 并启动自研中间件。此阶段发布了HFS 做分布式 RPC 调用、Notify 做消息推送以及 TTL 做自研数据库分库分表等。这一系列中间件的发布,象征着阿里巴巴的技术已经具备了支持业务高速发展能力,同时期也开始对外孵化阿里云飞天操作系统。
中间件 2.0 时代:随着阿里巴巴内部业务规模不断扩展,对于稳定性和高可用的建设也提上日程。此阶段主要以中间件为核心,在阿里巴巴集团内推出了单元化、异地多活等高可用架构的设计和落地,并且实现了阿里整体应用架构 stable by default 模型落地。
中间件 3.0 时代:此阶段,阿里巴巴开始意识到技术输出的重要性,因此启动了中间件上云,借助阿里资深的技术优势,在云上推出了EDAS、MQ、DRDS 等一系列商业化产品,将阿里巴巴内部积累多年的分布式、微服务领域产品对外输出,普惠大量外部企业客户,也为阿里云带来了巨大的差异化竞争力。除了商业化输出,阿里也开始投入资源和精力做开源,比如 Apache、RocketMQ、Apache Dubbo、Nacos 等等都在 3.0 时代对外进行开源。
中间件 4.0 时代:推行三位一体技术发展策略,要求集团内使用的技术、阿里云上使用的技术以及开源技术三位一体,让技术和架构形成协同发展,能够更好地赋能给企业客户。在这一阶段,我们借助云帮助企业充分构建弹性、韧性、安全、易用性、高 SLA 的云原生应用,支持企业快速进行数字化转型。
经过四个阶段的发展,阿里巴巴形成了有别于其他企业或传统定义的中间件体系。阿里巴巴中间件是根据自身业务发展出来互联网中间件体系,每一款中间件都体现了互联网和云的价值,比如弹性能力、分布式能力、容灾能力等。
阿里巴巴中间件将企业云原生化和分布式化落地过程中所需基础设施一一进行了分布,主要包含架构&监控服务领域、研发框架&消息&工具领域、微服务托管领域以及基础产品领域,其中很大一部分都进行了开源,普惠了数万外部企业和百万开发者。
过去十年,中间件开源项目主要集中在分布式应用架构领域,解决使用者在企业内推行分布式从 0 到 1 过程中需要依赖的基础中间件。这些中间件的落地可以大幅度加快企业分布式或者微服务化进程,也可以让架构韧性和稳定性得到更大提升。包括 Apache Dubbo、RocketMQ、Java 领域诊断神器 Arthas、微服务注册和配置管理Nacos 、分布式事务Seata以及与Spring Cloud 合作共建的Spring Cloud Alibaba。
当前,越来越多客户完成了微服务化和分布式应用落地。随着分布式应用和微服务规模越来越大,如何管好和用好微服务应用被提上日程,这也成为越来越多客户发展中的痛点。因此,我们开始定义分布式应用治理领域,后续也会在此领域不断推进开源项目、技术以及技术产品输出。
分布式应用治理领域主要解决用户完成 0 到 1 分布式和微服务落地之后,期望进一步扩大规模时,如何保证大量微服务应用和分布式应用能够运行在一个可靠、稳定、高效的环境中,能够在出现问题时快速容错,没有出现问题时快速预警等,这些对于企业未来的高速发展至关重要。
今年,分布式应用治理领域推出了两个新的开源项目,其中OpenSergo主要做微服务治理,AppActive 主要做应用多活架构。此外,还有已经开源很久的做应用流量管控的 Sentinel ,以及前年开源的ChaosBlade(目前已经捐给CNCF 成为CNCF 沙箱项目),主要做混沌工程、故障演练、依赖注入等。
以上四个项目共同组成了当前分布式应用治理领域的完整配套解决方案。相信客户和使用者能够基于这四个开源项目构建出强大的分布式应用治理相关能力。
很长一段时间内,微服务领域的治理都没有统一标准,使用不同框架的企业、个人和开发者对应用和流量做管理非常困难,再加上没有统一规范,迁移和跨平台使用能力也受到约束。
因此,2021年阿里开始构思开源项目,并与业内同行,包括字节跳动、B站、快手等其他伙伴一起制定标准,于今年 4 月正式对外推出了OpenSergo 项目。
OpenSergo 项目是一套开放的、面向应用的、贴近业务语义的服务治理规范和参考实现,能够帮助企业快速构建面向海量微服务场景下服务治理的相关能力,主要包含三个方面:
① 规范:定义了流量治理、流量防护、可观测、服务发现、数据库治理等一系列规范,能够让微服务在全生命周期内都具备很好的治理能力。
② SDK:基于上面的规范,提供了多语言参考实现,包括 Java、Go、C++、 Ruby 等。
③ 接入&集成:SDK 要适配目前业界市面上的常用框架,包含微服框架、网关、注册中心、配置中心、消息队列等一系列微服务所依赖的框架或微服本身实现的框架,能够实现现有存量用户也能快速遵循相关规范,让应用具备无缝迁移或更好的治理能力。
在项目推行之初,我们就设计了四条原则:
标准化:希望通过一致、标准的微服务治理模型和规范,降低用户微服化成本。企业开源项目侵入到研发架构和用户开发流程中,接入成本过高。因此我们希望通过标准化规范,降低用户接入系统和实现微服务治理能力的成本,提高效率。
开放:作为开源项目,始终要保持自己的开放定位。支持多语言框架,提供多种治理模式,包括现在发展较快的 service mesh 以及一些比较新的领域比如Proxyless mesh 等。另外,我们也会持续与业界伙伴共建开放规范。
价值:减少微服务开发者心智负担,屏蔽底层差异,让开发者能够更专注在业务价值开发上。
全方位、全生命周期:覆盖微服务应用全生命周期,让整个微服务从部署、交付、运行、监控、故障排查等全生命周期都具备可治理的能力。
随着互联网应用分布越来越广泛,出现了很多与国际、民生息息相关的应用,这对应用的稳定性和容灾能力也提出了更高要求。过去十年,阿里巴巴在容灾领域有了非常深厚的积累,作为单元化、同城双活、异地多活等架构的提出者,我们也在自己的业务中做了很好的践行。
今年 1 月,我们将中间件在异地多活容灾的技术和经验积累,以开源的形式对外提出,也希望能够借助项目帮企业构建以应用为中心、面向未来容灾的架构。
要实现容灾架构,不管从流量层、接入层、数据层、传输层还是应用层,都需要具备良好的容灾能力,才能认为架构上具备了容灾能力。基于此,我们设计了四条原则:
分层的设计标准:定义了接入层、服务层、消息层、数据层的应用多活标准规范。基于规范使用开源项目,即可使IT 架构具备端到端的多活能力。
精简的接入规范:提供了丰富的样例,应用只需进行少量改造即具备应用多活的能力。此前,很多客户认为实现多活需要极大的改造成本,但精简的接入规范使用户可以以比较低的成本实现自己的多活能力。
广泛的开源支持:想要端到端地实现多活,必须有丰富的生态作支撑,因此,我们在设计之初就将开源支持作为核心能力,包含了策略开放、核心技术无差别开源、生态开放以及兼容主流开源技术和标准。
多样的实践案例:提供面向多云、多行业典型场景的最佳实践和方法论。企业构建无论是构建异地多活、多云多活还是云和非云多活,亦或不同场景再结合自身行业属性做多活等,都可以基于项目找到适合的方案。
今年年初,开源社发布的 2021 年中国开源年度报告显示,阿里巴巴蝉联中国企业开源活跃度第一,体现了阿里在开源的投入情况。此外,中国开源十年洞察报告显示,过去十年阿里巴巴始终排名第一,这也很好地体现了阿里巴巴持续做开源的决心。
在中国活跃开源项目 top 30 榜单中,阿里巴巴共有 10 个项目上榜,其中中间件团队上榜4 个项目,分别为 Apache Dubbo、Apache RocketMQ、Nacos、Seata,这也意味着中间件团队一直都是阿里巴巴开源力量中的核心部分。
除了开源投入,阿里巴巴还积极参与到许多顶级基金会,比如Linux 基金会、云原生基金会、Apache 基金会等,贡献的诸多项目也已遍布主流开源社区。后续,阿里巴巴会持续参与到基金会建设以及基金会项目建设里,为中国开源技术发展贡献更多力量。