云原生微服务趋势
——李艳林
Nacos 联合创始人& MSE 创始人
一、行业趋势
微服务行业报告显示,2018-2023 之间微服务增速为 22.4% ,占据亚太地区35% 的市场份额。阿里微服务 DNS 最佳组合的 star 数高速增长,基本突破 2 万,意味着每年有数万家企业进行微服务架构改造。2020年,27% 用户正在采用服务网格技术,与微服务整体增速相当,逐渐回归理性;37% Ingress 实现选择 Envoy,相较于 2019 年增加 116%。此外,Envoy社区于 2022 年 5 月推出 Gateway 子产品,通过 Gateway API 推进Ingress 标准化与网关标准化,非常值得关注。
上图横坐标代表应用复杂度与人数,纵坐标代表研发效率、生产效率与运维效率。应用体量较小的时候,采用单体应用效率较高;随着业务规模和复杂度提升,单体应用效率和生产力大幅下降,微服务的效率优势逐渐显现。
为什么微服务行业能有如此快速的发展?
第一,数字化进程让 IT 系统更复杂。
现如今,达到上图中拐点的企业越来越多,用户群体蓄水池越来越大。数字化进程使 IT系统变得复杂,比如最早采用微服务的互联网行业,已经从十年前的 web 1.0 演进到 web 3.0,架构变得非常复杂,阿里巴巴有数万个应用在这十年间产生,也助力了互联网的蓬勃发展。
微服务已经从互联网行业渗透到各个其他行业,比如房地产领域,最早只支持简单的网站页面,如今已经发展至 web 3.0 的数字化深度,比如贝壳找房,IT系统复杂度大幅提升。
此外,很多 IT 企业有诸多新老系统或ISV 系统,无法很好地应对如今的快速迭代需求。
而采用微服务系统能将复杂度隔离开,通过网关将新老系统进行集成,从而快速迭代新系统,直接在微服务架构上演进。
第二,云与开源大幅降低了微服务使用门槛。
阿里最早采用微服务架构时,投入了数十人和数百万。而如今随着开源的推进,技术门槛大幅下降。
云计算通过集中化的模式,将之前微服务的使用门槛成本从百万级下降到万级,大幅降低微服务使用的边际成本。
随着原生 2.0 的推进,其架构理念已经得到行业的广泛认可,并且通过互联网第一代的发展,在此领域积累了大量人才,大量人才又反过来推动了各行各业的微服务发展。
第三,采用微服务投入产出比大幅提升。
对于当前已经处于微服务架构的公司而言,后续开发新系统也一定会采用微服务,而且会有更高的投入产出。因为随着云计算的推进,算力成本在不断下降,但人力成本在不断地提升。微服务作为应用架构,能大幅地提升研发效率和迭代效率,让企业在竞争中保持先发优势。
另外,随着微服务推进,业务部署块从大块变小块,能提高灵活调度能力,充分享受云计算的红利,充分利用云的弹性能力,降低资源成本。
以上三点说明了微服务行业为何能够保持高速蓬勃发展,我们也有理由相信,在未来的十年微服务会依然持续保持 20%以上增长。
开源加速了微服务标准化。从微服务趋势上来看,微服务和容器构成了云原生应用架构的基础思想。微服务偏向于解决Dev 问题,容器偏向于ops 问题。云原生领域从 DevOps到 DevSecOps方向演进的过程中,开发者需要关心效率、可用、性能和安全四个领域。
在项目开展初期,开发人员需要快速高效地交付、解决研发问题;项目上线后,会遇到性能稳定性的挑战,需要解决性能与可用性相关问题;最后用户规模变大,出现黑产,则需要关心安全问题。
微服务也是针对上述过程,围绕开发者做领域布局。从上图可以看到,注册中心、配置中心处于微服务的最早阶段,主要解决效率与性能扩展性的问题,已经进入相对成熟、标准的阶段;服务网格负责解决流量控制标准化、服务治理相关问题,核心是解决高可用问题,目前正在成为主流;未来,安全作为一个重要需求,从网关入口解决安全问题是性价比最高的一种模式。
上图左上角可见, API Gateway 已有大量新产品开源,这也意味着将网关作为安全入口的理念得到了非常蓬勃的发展,安全得到越来越多开发者和公司的重视。
二、技术趋势
微服务架构的核心是围绕开发者解决研发效率,使其聚焦于业务开发,其纵向分层已逐渐成型,可分为三层:
最下层是后端 BaaS化,提供开箱即用的后端服务,解决高可用问题;中间层主要解决客户端轻量化问题,业务侵入越小,启动越快,冲突越小,也方便多语言集成以及流量控制、高可用的增强;最上层是业务侧 ServerLess 化,No Server,让业务更聚焦业务开发,提高研发效率,无须关心复杂的底层细节。
与此同时,微服务技术标准也在逐步形成,可以理解为横向分工,如上图:
最左侧是数据面,中间是控制面,右侧是治理面。数据面核心解决流量连接问题,控制面解决控制流量的标准问题,治理面解决基于流量控制的标准,提升微服务的高可用、个人安全问题。
未来微服务演进的趋势是提升服务治理能力,从而形成差异化竞争力,过程中,从网关从到控制面再到服务治理的每个子领域也在发生着变化。
网关是容器与微服务的连接点,容器通过 k8s 将网关标准化,网关又作为微服务流量的入口,通过 Ingress标准化之后统一数据面,通过 Istio统一控制面,再通过服务网格技术将东西向流量标准化控制。最终,基于 Istio向上统一了东西南北流量控制,对下屏蔽了k8s、Nacos等不同注册中心的服务来源,从而实现标准化控制东西南北流量的能力,这也意味着网关标准正在逐步成型。
将安全网关、流量网关、微服务网关三位一体,在入口统一提高安全和高可用,是我们认为符合下一代云原生标准的网关。
首先,云原生网关要在入口建立安全防线,需要将证书管理、登录认证机制、鉴权加密与 WAF 网关高度集成,提升网站入口的安全能力,解决证书过期、服务安全泄露等风险问题。
其次,需要集成微服务网关流量的控制能力。云原生网关要统一控制东西南北流量,需要集成微服务领域里限流、降级熔断与流量灰度的能力,从入口建立高可用防线。云原生网关向下需要支持多种 workload ,最传统的单体应用、微服务应用、服务网格、Serverless 等各种域后端 workload 都可以将流量路由负载到下端统一的流量入口。面对东西向不同业务域、不同安全域和不同 region 在微服务连接上的问题,也可以通过云原生网关统一控制,最终提升流量控制的安全性与稳定性。
东西向流量属于 RPC 领域,是SidecarProxy与 Proxyless两个模式的融合发展,两个模式各有优劣。
SidecarProxy模式更能无侵入地做流量控制,但是存在复杂的链路定位问题,成本较高,稳定性和运维成本高,RT 和性能消耗也会增加;Proxyless模式是 gRPC和 Dubbo 直接对接 xDS 协议,与控制面打通,其优点在于可定位性、易用性都较好,弱点在于因其需要依赖 SDK,升级时存在侵入性。
我们倾向于未来将会往 Proxyless模式演进,目前阿里在 Dubbo 3.1 的实践上也加强了对 xDS 协议的支持。
今年开源的OpenSergo服务治理项目的本质是解决数据面与控制面标准化控制的问题。在阿里 Java 微服务开源体系里,有一套完整的微服务治理体系。并基于开源的解决方案抽象出服务治理产品,从开发态到运行态实现了完整的流量控制定义。
从能力上来看,微服务治理主要解决高可用与安全治理,我们将其做成了完备的布局,与字节跳动一起贡献的标准已经发布。服务治理标准化之后,基于服务治理能力的构建,就是未来关键的发展和布局思路。
目前,Seata已经成为分布式事务的事实标准,在 AT和 XD 业务无侵入的事务模式也得到广泛使用,多语言诉求和 SidecarProxy模式也得到非常好的发展,未来的Seata 2.X 规划中会持续加强此方面的布局。
随着收购的公司越来越多,阿里巴巴陆续针对 Java 、 C++ 、Node.js等前端应用都做了完整支持,几乎支持所有主流语言。目前来看, Java 依然是微服务最主要的语言;其次是Go 语言,它在过去两三年得到了蓬勃发展,Node.js 作为前端主流框架也得到非常好普及。
支持多语言的方式有 lab 包模式,也可通过与 runtime 集成,提供无侵入的运行时解决方案。此方案已十分成熟,并在阿里巴巴落地非常多的应用。
三、开源&产品规划
阿里巴巴的微服务开源重点是服务治理,提升系统高可用,主要分为三层:
中间层是微服务消息,是阿里的主导领域,今年会与阿里 JDK DragonWell 进行融合。目前从企业级测试上来看,阿里Java 中间件在 DragonWell下的性能可以提升近一倍,有助于中间件发挥更好的性能表现。
在服务层,过去 10 年开源的很多产品是为了解决微服务从 0 到 1 的拆分问题,包括一些基础的配置管理、服务发现以及分布式组件;而未来十年,侧重点在于解决从 1 到 100 的服务治理能力,会基于 OpenSergo (蓝色部分)的标准,通过 Sentinel做服务治理、流量治理,以及通过 AppActive做容灾演练,通过 ChaosBlade 混沌工程支撑服务治理的高可用。
在消息领域,今年 RocketMQ 5.0 基于消息事件流一体将在流方面进行开源, 通过 RocketMQ Stream 项目布局流领域。
过去三年,阿里已经基于阿里云打造了MSE微服务引擎,提供了开源的微服务体系企业级解决方案,几乎支持所有主流微服务框架,并提供默认高可用的竞争力,进行了大量调优,相较于用户自建系统性能有 50% 的提升。其次,在可用性上,得益于 Backend 服务,比自建系统高 1 个 9 ;产品化方面,大幅提升安全集成与易用性,提供了开箱即用的服务。
产品规划方面,我们将不断加强入口网关的安全与高可用防线,目前已经完成 WAF 集成、三方认证相关工作,完成了与 Sentinel 的整合,从入口建立安全与高可用防线,保证系统稳定性。
针对治理平面,会基于 OpenSergo开源标准继续全面升级服务治理能力,包括优雅上线、全链路灰度、限流、降级熔断、高可用等能力。
最后,会提供分布式事务解决方案,Seata 目前已经开始免费公测,欢迎大家使用。
阿里期望通过产品化的方式,结合云模式,将微服务成本从百万级降至万元级,大范围推广微服务,降低使用微服务的边际成本,加速业务迭代,使企业用户在竞争中保持先机。