技术趋势推进行业变革,行业趋势反哺技术价值,两者相互促进,才能持续保持技术的生命力。我们先来看看这一年国内的一些重要事件,这些事件也恰恰揭示并加速着行业和技术趋势:
- 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月,电子标准院发布国内首个面向微服务开源项目的成熟度评测规范和第一批评估项目
- 此外,腾讯云&华为云先后提供了面向 Nacos 的商业版本
微服务发展的行业趋势
微服务仍在持续高速增长,关注度从开发效率转向交付效率
开源项目 Star 在一定程度上反应了一个项目的热度和生命力,从 Star 的增长上看,目前主流微服务开源项目每年以平均10%以上的速度在增长,数字上呈现的是不仅是行业规模,也折射了每年新晋微服务开发者的水位。
- 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%
数据统计自2022年12月25日,计算主子仓库的累加数据。
微服务的持续高速发展,使得他已经和计算、存储、网络、数据库、安全一样成为云计算的基础设施。只不过在每个不同的发展阶段,微服务面临的挑战并不相同。云原生普及之前,微服务开发者专注的是微服务的架构、迭代、交付和运维。随着云原生技术的成熟,微服务也在被云原生化,这时候,开发者和架构师更关心的是如何借助云的优势,简化微服务的运维问题,并更专注在业务的交付效率上。
微服务价值愈加凸显,侧重点转向降本增效
若干年前,阿里巴巴在做微服务转型的时候,看重的是微服务的可扩展性,因为要去快速应对庞大且日益增长的用户体量。但如今,随着人力成本的不断上升,以及云的算力成本的不断下降,微服务在帮助企业提高研发效率、落地敏捷开发的过程中,其发挥的降本增效价值已经越来越明显,这时候,微服务的价值侧重点是发生了变化的。过去的一年,我们看到大量的中小型企业开始采用微服务,快速上量、高效迭代,并将微服务应用建立在云上,加速迈入云原生时代。
此外,云拓宽了微服务的价值边界,其价值不仅体现在开发态的效率提升,也体现在了运维态上的价值。以 Nacos 为例,注册配置中心是一个旁路应用,但却承载着高频服务任务,一旦遇到可用性问题,会大面积影响线上业务,通过云厂商提供的 Nacos 商业版,可以极大的提高微服务在运维态上的价值,提升性能、提高可用性,阿里云的微服务引擎 MSE,以及腾讯云和华为云都提供了面向 Nacos/ZooKeeper/Eureka 的商业化服务。
从互联网走向各行各业,技术成熟度获得业内公认
这一趋势并不是只在2022年才出现,提出中台概念的那时候,很多传统企业就已经通过微服务的拆分来构建中台架构了。近一年,随着各行各业数字化进程的加速,微服务不仅出现在直面线上用户的客户服务、市场营销等领域,也在帮助重构设计研发、生产制造、企业内销售财务协作、公司治理等领域,以便企业在市场竞争中保持先发优势。例如禾连健康帮助全国2000家医院构建在线体检服务,致景科技构建微服务体系打通全国纺织行业信息流、物流和资金流,实现数智化的综合平台,龙湖千丁借助微服务支撑全国1000+的智慧停车业务,波司登全面推动各项业务容器化、微服务化,建立立体的在线销售体系,提升羽绒服销量。
不仅其他行业在快速落地微服务架构,对技术引入相当严苛的金融行业也正积极拥抱微服务。
随着金融科技的快速发展,市场对金融服务的需求日趋多样化和个性化,对场景金融服务创新、新业务需求敏态响应等提出诸多挑战,这些正不断加速金融企业的微服务架构转型。但是在传统金融领域,微服务架构的落地并没有像互联网企业那么迅速,这主要是金融行业对系统可用性和稳定性的要求非常高。
然而在过去的几年,随着微服务产品的成熟和技术的标准化,这一现状得到了极大地改变,我们看到越来越多的金融企业使用微服务产品改造其核心系统。工商银行通过 Dubbo 将基于 JEE 的单体架构改造成微服务架构,中信、光大、广发银行基于 Seata 的分布式事务能力,来解决交易数据间要求极高的数据一致性难题,中原银行的微服务平台以开源项目SkyWalking(APM应用性能管理)为基础,建立了分布式链路追踪系统,为微服务提供分布式追踪、度量聚合和可视化等一体化解决方案。微服务在金融这类严苛的行业下的实践,也充分证明其技术的成熟度和标准化。
微服务发展的技术趋势
标准化,呈现更多市场机遇
事实标准和行业标准并行发展,标准化有利于降低技术的选型和使用门槛,也是技术成熟度的一种体现,微服务领域开源领域呈现出比较明显的头部效应,大部分开发者倾向选择主流方案,以下数据来自我们自行举办的开发者沙龙或线上直播的调研数据,仅供参考。
- 微服务或 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。
微服务开源领域的上下游关系
微服务开源虽然趋于标准化,但从不绑定,各个开源项目之间都是解耦和开放的。这时候开发者选型会侧重在高可用上。例如开源项目本身是否经历过大量的生产实践,并且是自主可控,避免一些不可控的风险;二是开源方是否会提供一些云上的商业版。因为当云成为基础设施的时候,开发者会关注开源项目在云上的稳定性、性能、易用性,这些往往是开源版所不具备的。例如面对流量有损的情况,或是版本发布时,没有做全链路灰度,一个线上故障引发全量业务受影响,没有控制爆炸半径,其实,这些场景都是可以通过商业版来避免的。越是主流的开源项目,越是有可能联合云厂商来提供公共云上的商业版。
因此,当微服务的各个领域的开源选型趋于标准化,开发者们将不再过多纠结在选型上,而是在交付效率和稳定性上时,将给围绕微服务提供培训、产品服务的企业呈现出更多的市场机遇,这也会反哺整个行业的良性发展。
DevSecOps,入口安全关注度提升
在过去的一年里,RPC 和注册&配置中心帮助开发者解决研发效率和性能问题,领域趋于稳定;服务网格和服务治理通过流量控制提升高可用能力,领域快速演进;网关帮助企业在数字化入口建立安全和高可用防线,领域处于兴起阶段,开发者关注各种方案的最佳实践和客户案例。
从这些微服务中间件的发展过程中我们发现,以围绕开发者为核心,提升微服务开发效率,保障生产运维高可用的 DevOps 实践越来越多,并且正在向 DevSecOps 快速演进。以云原生网关为例,在流量转发等基础运维(Ops)能力之上,企业和开发者愈加重视作为微服务网关的定制开发(Dev)能力,以及作为统一流量入口的安全(Sec)防线能力。
云原生网关,玩家众多、活跃度高
云原生网关领域,新晋的竞争者数量是去年同期的一倍,正在加速云原生网关的标准化。
技术趋势离不开内外因的合力作用。微服务的技术趋势之所以要单列一项云原生网关,外因是 K8s 逐步成为云计算的新界面,而 Ingress 作为 K8s 的网络通信的标准规范,定义了外部流量进入集群内部的规则描述。而内因则是网关领域长期面临着入口网管零散、诉求各不相同的情况,例如 Nginx 发挥流量访问的网关作用,微服务网关发挥微服务体系下服务和服务之间网络访问的作用,API 网关则实现了不同应用或系统之间的互访。当 Ingress 统一网络互访协议后,就催生了云原生网关的出现。
从技术优劣势上看,传统网关架构 API 定义不一致、多层网关运维代价大、扩展性弱、规则变更连接抖动,越来越不能满足视频/IOT/海外弱网的需求,不能适应云原生时代快速迭代、弹性带来的稳定性挑战。而云原生网关将多层网关进行统一架构和建设,不仅降低了网关架构的复杂度,也提升了缩短了网关的转发链路、提升网关的性能。国内最早开源的 APISIX 已经拥有1w+ star,并且被 vivo/雪球/众安保险/有赞云应用于生产业务。
我们今年也顺势将在集团已经服务生产业务两年之久的云原生网关 Higress 对外进行开源,他具备标准化、高集成、易扩展、热更新的优势,目的是加速云原生网关在国内的落地。
数据面和控制面解耦,控制面重要性提升、但短期内较难标准化
随着 xDS 协议成事实标准,数据面和控制面解耦,控制面作为数据面和治理平面的连接越来越重要。微服务生态可以有很多灵活集成模式,简单的场景注册&配置中心可以直接通过 xDS 协议将服务推到数据面,复杂的场景控制面可以聚合服务和规则推送到控制面,做更灵活、更复杂的治理能力扩展。
控制面的统一将带来诸多好处。
微服务已经从架构演进到治理,从解决如何用好微服务演进到如何管好微服务。管好微服务非常依赖微服务治理,而微服务治理是通过无损上线下、全链路灰度、流量防护等技术手段来减少、甚至避免发布和管理大规模应用过程中遇到的稳定性问题,但微服务治理在落地过程中会遇到各种难题。例如:
- 在企业内部,往往存在着不同语言、不同通信协议的微服务,这会导致治理微服务的过程中,给业务开发者、架构师平添很多的认知负担,而这类异构会衍生出更多的痛点。
- 业内对服务治理的能力和边界没有明确的认识,每个企业所定义的服务治理概念不一致,造成很高的理解和沟通成本。
- 开源微服务框架众多,对于服务治理缺乏一些标准化的约定。例如,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 等国产化的上下游生态,才能获得更多开发中的青睐。。
Proxyless:xDS 协议成为事实标准,从 Lib 包依赖模式到 Sidecar 模式到 Proxyless 模式,Sidecar 模式无侵入带来一些运维复杂度,Lib 包模式有侵入但易运维、性能好,社区尝试 Node 级 Proxy 方式,介于两者之间,但目前处于前期状态;从当前的开发者体量看,Lib 包依赖是主流,Mesh 是补充。
总结
标准化、国产化、DevSecOps、云原生网关、Proxyless、统一控制面和多语言,给微服务带来的新的市场机遇。近一两年,国内出现了很多围绕这些领域的初创公司,也给很多成熟企业带来的新的商业方向,两股力量的相互交融延续着微服务的生命力。