云原生微服务技术趋势解读
- 4月,Linux 下一代架构基金会下成立了微服务技术组 SIG(Special Interest Group),共同探讨微服务治理标准化的解决方案
- 4月,跨不同开发语言和技术框架,微服务治理规范 OpenSergo 开源
- 5月,Envoy 社区推出 Envoy Gateway 产品,加入下一代网关角逐
- 6月,腾讯正式开源 Spring Cloud Tencent,打造一站式微服务解决方案
- 7月,Ingress Nginx 项目暂停接收新功能,将专注于稳定性提升
- 8月,CloudWeGo 正式发布 Rust RPC 开源框架 Volo
- 8月,直流科技发布服务网格项目(GA 版本)
- 11月,Apache Dubbo 首个 Rust 语言版本正式发布
- 11月,阿里巴巴开源下一代云原生网关 Higress,基于 Envoy,支持 Nginx Ingress 零成本快速迁移
- 12月,字节跳动开源 kube-apiserver 高可用方案 KubeGateway
- 12月,中国开源云联盟发布第二批开源成熟度评估结果,10个项目中微服务领域的开源项目有4个
- 12月,《微服务治理白皮书》荣获阿里云开发者社区年度最受欢迎电子书TOP1
- 此外,腾讯云&华为云在今年先后提供了面向 Nacos 的商业版
微服务发展的行业趋势
- Apache Dubbo:4.3w,YoY 12%
- Istio: 3.3w, YoY 11%
- Nacos:2.6w,YoY 23%
- Spring Cloud Alibaba:2.5w,YoY 15%
- Seata:2.4w,YoY 10%
- Envoy: 2.2w, YoY 16%
- SkyWalking:2.2w,YoY 14%
- Sentinel:2.0w,YoY 13%
此外,在 “谁在 使用 Nacos ”的征集中,我们也看到了越来越传统企业的身影。
微服务发展的技术趋势
事实标准和行业标准并行发展,标准化有利于降低技术的选型和使用门槛,也是技术成熟度的一种体现,微服务领域开源领域呈现出比较明显的头部效应,大部分开发者倾向选择主流方案,以下数据来自我们自行举办的开发者沙龙或线上直播的调研数据,仅供参考。
-
微服务或 RPC 框架:以 Spring 为主,Apache Dubbo 有20%+的市场份额,在强调国产自主可控的行业,Dubbo 占比会更多些,grpc 以及一些多语言的框架也一些忠实的拥趸。
-
注册和配置:Nacos 占比最高,Eureka/Consul/Apollo 各有一些市场份额,目前这个领域未看到有的开源项目。
-
限流降级:Sentinel 占比更高,虽然也有 Hystrix 等一些海外的开源解决方案,但由于本地化的文档和支持比较受限,开发者会更倾向于选择 Sentinel。
-
分布式事务:分布式事务主要应用于对数据一致性有较强需求的行业,且具有较高的技术门槛,开源选项并不多,目前是 Seata 更受开发者的欢迎。
-
云原生网关:主要分为 Nginx/Envoy 两大技术流派,APISIX 起步比较早,在国内的开源工作推进更快些,国外的开源项目有很多,例如 Kong/Emissary/Gloo 等,我们今年也开源了基于 Ingress 标准的云原生网关 Higress。
-
微服务治理规范和实现:相比以上的开源项目,这是一个相对较新的领域,开源选项主要是 OpenSergo 和 Polaris。
微服务开源领域的上下游关系
微服务开源虽然趋于标准化,但从不绑定,各个开源项目之间都是解耦和开放的。这时候开发者选型会侧重在高可用上。例如开源项目本身是否经历过大量的生产实践,并且是自主可控,避免一些不可控的风险;二是开源方是否会提供一些云上的商业版。因为当云成为基础设施的时候,开发者会关注开源项目在云上的稳定性、性能、易用性,这些往往是开源版所不具备的。例如面对流量有损的情况,或是版本发布时,没有做全链路灰度,一个线上故障引发全量业务受影响,没有控制爆炸半径,其实,这些场景都是可以通过商业版来避免的,例如 MSE 的微服务治理便可以有效降低客户发版过程中的故障风险。从技术优劣势上看,传统网关架构 API 定义不一致、多层网关运维代价大、扩展性弱、规则变更连接抖动,越来越不能满足视频/IOT/海外弱网的需求,不能适应云原生时代快速迭代、弹性带来的稳定性挑战。而云原生网关将多层网关进行统一架构和建设,不仅降低了网关架构的复杂度,也提升了缩短了网关的转发链路、提升网关的性能 。 国内最早开源的 APISIX 已经拥有 1w+ star,并且被 vivo/雪球/众安保险/有赞云应用于生产业务。
我们今年也顺势将在集团已经服务生产业务两年之久的 云原生网关 Higress 对外进行开源,他具备标准化、高集成、易扩展、热更新的优势,目的是加速云原生网关在国内的落地。不同于传统的先开源后提供商业服务的路径,MSE 云原生网关和 Higress 则是尝试了先提供稳定商业服务、后开源核心能力的方式,让开发者自由选择。
-
在企业内部,往往存在着不同语言、不同通信协议的微服务,这会导致治理微服务的过程中,给业务开发者、架构师平添很多的认知负担,而这类异构会衍生出更多的痛点。
-
业内对服务治理的能力和边界没有明确的认识,每个企业所定义的服务治理概念不一致,造成很高的理解和沟通成本。
-
开源微服务框架众多,对于服务治理缺乏一些标准化的约定。例如,Spring Cloud 中定义的微服务接口和 Dubbo 中定义的接口就没有办法互通,通过 Dubbo 和 Istio 管理的微服务也没有办法进行统一治理。
-
缺少真正面向业务、能够减轻认知负担的抽象和标准。开发者真正想要的可能是简单的、指定服务间的调用关系和配置规则。但现在对于业务开发者来说,不仅需要了解不同微服务框架的部署架构,也要了解不同服务治理方式的概念和能力区别,认知成本很大。
此时,控制面的统一能很好的解决以上困扰。因此我们今年和 bilibili、SphereEx、中国移动等企业,以及 Kratos、CloudWeGo、ShardingSphere、Nacos、Spring Cloud Alibaba、Dubbo 等社区联合发起并开源 OpenSergo 项目,目的就是构建一个和语言无关、和技术形态无关,但贴近业务的统一服务治理规范和实现。 另外,Linux 下一代架构基金会也正在致力于服务治理标准的制定。 但控制面的统一并非一朝一夕,需要参与方在实践中不断对标准进行磨合、逐步达成共识。
多语言 :Java 作为国内微服务开发最主流的语言,正在加速云原生化演进,通过 Spring 6.0 / Spring Boot 3.0 / GraalVM 让 Java 能在容器和 Serverless 时代更轻量、更快速运行。随着传统客户数字化的升级,之前 C++/C/Python/PHP 研发正在加速向 Go / Rust 演进,目前 Go 微服务生态逐步完善,前端 Node.js 跨语言调用后端服务场景也越来越多,Rust 微服务生态开始起步, Dubbo、CloudWeGo、Nacos 都在今年发布了 Rust 的版本,相信后续会有更多开源项目跟进。
国产化
:
核心技术自主可控越加重要,整个软件行业都在加速国产化进程,微服务开源项目需要投入资源,支持 ARM/IPv6/Dragonwell/PolorDB/OceanBase 等国产化的上下游生态,才能获得更多开发中的青睐。
总结
阿里云微服务也在这一年收获了许多,要感谢客户、开发者、上下游生态伙伴、技术媒体和社区、评测机构等,继续 平衡好眼前商业利益和长期理想主义,引导整个行业走向远方。
由阿里云云原生 应用平台出品的《微服务治理技术白皮书》,获得了阿里云开发者社区年度最受欢迎电子书TOP1,下载量超2.2w,这是微服务领域开发者群体大、增速快的最佳作证,欢迎点击“阅读原文”免费下载阅读(推荐PC端打开、下载,提供电子书版和音频版)。