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