04
夏天过后,开源的热度仍在延续
Aliware
效率的好处在于,我们可以把自己的注意力和时间聚焦在更需要创造力的事情上,做更有成就感的事情。对于工作在工程领域的开发者们而言,他们的效率意识更强。
2018 年 9 月,阿里将内部广泛使用的 Java 线上诊断工具进行开源,取名 Arthas (阿尔萨斯)。也许是击中了开发者线上排查问题的痛点,Arthas 在距离开源后的第一个 Release 版发布仅 147 天,就获得了超过 1w 的 star 数,并有 40 多位 Contributors 参与开源贡献。
Arthas Contributors
从中,我们不仅看到 Arthas 这类工具型开源项目在开发者群体中的受欢迎程度,也发现越来越多的国内开发者开始参与开源贡献,并视为一种社区荣誉。技术领域,一切里程碑的达成,都源于一份技术情怀。截止目前,Arthas 已有接近 3w star 和 146 位 Contributors,这对一款线上诊断工具而言,是一份不错的答卷。
时间来到 2019 年。
如果把生产阶段比作高考,那么 Sentinel 解决的是事中的稳定性问题,一旦出现流量徒增,可以通过限流和降级来应对,而 2019 年开源的 Chaosblade 则是更多从事前的方式来提高架构的高可用性,通过建立故障演练机制,把各类可以预见的故障提前演练出来,例如随机杀节点、延时响应,甚至中断机房。
Chaosblade 和 Sentinel 师出同门,源自阿里在全链路压测、线上流量管控、故障演练上沉淀的这一套高可用核心技术。阿里云资深技术专家中亭说道:“阿里因其多元化的业务场景和日益复杂的技术架构,会遇到各式各样的故障,故障治理的难度增量了几个台阶。Chaosblade 从 2011 年开始,经历了强弱依赖的治理和建设、同城容灾演练、在交易和中间件链路尝试演练三个阶段,经过 6 年多的打磨,最终将最佳实践和工具框架形成统一的标准,对外进行开源,帮助 DevOps 人员缩短构建混沌工程的路径。”
在微服务架构普遍落地的今天,分布式事务带来的数据一致性问题、性能问题越来越绕不开。分布式事务理解起来有点门槛,但却无处不在,他是相对本地事务而言的,服务和服务之间不需要跨网络就能完成的,称之为本地事务,需要跨网络才能完成的,称之为分布式事务,例如金融行业银行之间的转账业务需要跨网络才能完成,电商行业交易下单调用外部库存系统、物流系统需要跨网络才能完成等。
虽然业内有一些分布式事务开源的解决方案,但要么是性能差、要么是数据一致性不够、要么是侵入性高,不容易落地。总之,是有点“不爽”。
宣布 Seata 开源的 Meetup 现场
而这种“不爽”集中反映在了分布式事务开源中间件 Seata 上,清铭在 2019 年 1 月中间件开发者 Meetup 上宣布分布式事务中间件 Seata 正式开源后的一周内,Seata 便收获了 3000+ star,社区讨论的 issue 达 58 个。
阿里巴巴是国内最早一批进行应用分布式(微服务化)改造的企业,所以很早就遇到微服务架构下的分布式事务问题。2014 年发布 TXC,开始为集团内应用提供分布式事务服务。2016 年,TXC 经过产品化改造,以 GTS 的身份上线阿里云,成为当时业界唯一一款云上提供分布式事务的商业化产品。2019 年,基于 TXC 和 GTS 的技术积累,开源了 Seata,和社区一起共建分布式事务解决方案。2022 年,经过多年的打磨,Seata 发布了 1.5.0 里程碑版本,该版本共有 61 名 contributor 贡献了近 7w+代码,同时也推出 Seata 企业版,并在微服务引擎 MSE 上提供商业化服务。企业版相比开源版内核 RT 降低 20% 以上,TPS 性能提升 30%,并且解决了高并发场景下的事务处理“毛刺”问题。
TXC/GTS/Seata/MSE 一脉相承,其愿景是让分布式事务的使用像本地事务的使用一样,简单和高效。
05
从分布式应用架构到分布式应用治理
Aliware
治理不仅是架构的延续,更是下一代应用中间件技术的演进方向。
分布式应用架构的需求包括 RPC 框架、消息队列、服务发现、配置中心、网关、分布式事务等,解决的是分布式应用落地的问题,但随着服务数量的增加、服务之间的依赖更加复杂,分布式应用治理成为更加迫切的需求,包括流量治理、开发测试治理、数据库治理、混沌工程、多活,解决的是用好、管好分布式应用的问题。
但显然,仅仅是 Sentinel、Chaoblade 还无法满足开发者对于用好、管好分布式应用的开源诉求,于是阿里云再一次开源了两款面向分布式应用治理领域的项目,Appactive 和 OpenSergo。
在 2022 年 1 月的云原生实战峰会上,云原生应用平台负责人叔同宣布应用多活 Appactive 正式开源。由此,Sentinel、Chaosblade 和 AppActive 形成了高可用的三架马车,帮助企业构建稳定可靠的企业级生产系统,提高企业面对容灾、容错、容量管控等的稳态系统建设能力。
2013 年,当时淘宝完成去 O 没多久,双十一的规模较上年进一步飞增。阿里的工程师正面临以下两大难题,一方面是机房资源非常紧张,容量不足,另一方面是杭州出现罕见的高温天气,机房面临断电的风险,异地多活架构就是在这个背景下孵化出来的。后来,随着淘宝的业务规模演进,异地多活也从近距离同城双机房到远距离异地双活,再到三地四单元、多地多活,沉淀了丰富的机房级应用多活经验。
AppActive 的开源,一是希望给多活提供一个统一的规范和定义,在这个基础上,大家才能共享成熟的实践经验,以避免因认知偏差带来的企业在基础设施成本、应用改造成本、运维成本等成本面的投入,从而让“多活”成为一项事实意义的普惠技术;二是基于标准,提供各个层次多活能力的实现。
在应用多活的规范中,定义了 LRA(同城多活)、UDA(异地多活)、HCA(混合云多活)和 BFA(业务流量多活)4 层能力。在 AppActive 发布的第一个版本里,提供了 BFA 和 UDA 的基础能力,BFA 和 UDA 的加强能力、LRA 和 HCA 的能力将成为后续的演进方向。
借助以上能力,企业可以实现:
- 分钟级 RTO:恢复时间快,阿里内部生产级别恢复时间平均在 30s 以内,外部客户生产系统恢复时间平均在 1 分钟。
- 资源充分利用:资源不存在闲置的问题,多机房多资源充分利用,避免资源浪费。
- 切换成功率高:依托于成熟的多活技术架构和可视化运维平台,相较于现有容灾架构,切换成功率高,阿里内部年切流数千次的成功率高达 99.9% 以上。
- 流量精准控制:应用多活支持流量自顶到底封闭,依托精准引流能力将特定业务流量打入对应机房,企业可基于此优势能力孵化全域灰度、重点流量保障等特性。
分布式应用治理领域的开源,不仅是能力的开源,更重要的是规范和定义的统一,AppActive 如此,OpenSergo 亦是。
在阿里云首届中间件开发者大会的会前问卷中,采用多种微服务框架或 RPC 框架混用的开发者比例达 24%。“语言和服务框架的异构会使得服务治理的成本呈现指数级的增加,一是因为每个开源框架和协议针对微服务治理的定义概念和能力都不一致,二是大家的治理模型和治理规则也是不同的,三是多云趋势下,不同云厂商提供的服务治理相关的 PaaS 服务(例如阿里云的 Serverless 应用引擎 SAE)也不同,这就会使得开发者无论是在认知还是技术迭代上都会存在非常大的限制。”OpenSergo 创始人望陶在接受 InfoQ 的采访时提到。
2022 年 4 月,OpenSergo 对外开源,该项目由阿里云、bilibili、字节,以及 Spring Cloud Alibaba、Nacos、Apache Dubbo、Sentinel、Sofa 社区共同维护,旨在构建一个和语言无关、和技术形态无关,但贴近业务的统一服务治理规范和实现。他的定位和能力就像项目的命名一样,Open 是开放的意思,Sergo 则是取了服务治理两个英文单词 Service Governance 的前部分字母 Ser 和 Go,合起来即是一个开放的服务治理项目。
OpenSergo 包含了以下三部分内容:
- 控制面:开发者可以通过 CRD 或者 Dashboard 的方式查看、修改服务治理配置,并将这些管控信息下发到数据面,从而 统一了服务治理的规则,开发者不必再绑定到某个开源方案、某个云厂商提供的服务上。
- 数据面:JavaAgent、Servcie Mesh、各个接入 OpenSergo 的微服务框架都能够接收到服务治理配置,并应用到当前的业务流量中。各个数据面都能够认可 OpenSergo 规定的服务治理配置、流量标签等信息,确保降低开发者理解成本。
- OpenSergo Spec:Spec 规定了控制面和数据面的通信约定,确保用户使用一种 Spec 即可描述不同框架、不同协议、不同语言的微服务架构,让开发者不再需要关注底层差异。
在此基础之上,再逐步将全链路灰度、无损上下线、流量打标等能力融合进来,提供一套完整的服务治理规范和实现的方案。
至此,10 个开源项目,覆盖架构到治理,将阿里云在应用中间件领域沉淀的技术倾囊而出。始于架构,精于治理。他们既是独立运行的开源项目,开发者可以搭配其他开源组件形成一套自己的开源技术栈,也是一套完整的分布式应用的开源解决方案,同时使用多个开源项目实现应用的快速交付。
开源的故事并没有就此结束,云原生对中间件游戏规则的重塑仍在持续。应用中间件的开源范畴已随容器和 Serverless 技术的普及升级到了应用云原生,他们和 Koordinator、KubeVela、OpenYurt、sealer、OpenKurise、Serverless Devs 等共同构成了阿里云在应用云原生领域的开源全景图。