云原生分布式应用治理综述

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
可观测监控 Prometheus 版,每月50GB免费额度
云原生网关 MSE Higress,422元/月
简介: 分布式应用治理是微服务进行到一定程度之后的必经之路,也是在分布式基础架构之上构建的更高级特性。

云原生分布式应用治理综述

——张乎兴

阿里云高级技术专家

image.png

分布式应用治理是微服务进行到一定程度之后的必经之路,也是在分布式基础架构之上构建的更高级特性。


分布式应用治理主要经历了以下几个阶段发展而来:


云上部署阶段:将业务和应用从自建机房部署到云上,主要面向机器通过云计算来释放计算红利。


云原生部署阶段:期望应用更加云原生化,因此以容器化为核心,将应用架构通过容器化云原生做一定的改造。


微服务化:业务发展达到一定规模达后,需要做微服拆分和改造,目标是以应用为核心,让应用开发更敏捷。


分布式应用治理:微服务化演进到一定阶段之后,需要进行微服务治理。此时的依赖关系更复杂,会面临一系列困难。进行分布式应用治理,目标是将业务核心侧重在研发提效以及稳定性保障上,让业务更加稳定安全,迭代更加高效。

image.png

中间件开源项目可以划分为两个部分,分别是分布式应用架构和分布式应用治理。


分布式应用架构提供了分布式微服务应用场景下所需的基础能力,包括以下几部分:


   ①微服务 RPC 框架:比如Dubbo Spring Cloud Alibaba ,主要解决微服务框架构建的基础问题。


   ②消息平台:负责异步调用的 RocketMQ


   ③注册中心和配置管理;


   ④分布式事务:Seata 负责解决分布式事务方面的问题;


   ⑤应用诊断:由 Arthas 负责应用诊断,快速诊断问题。


基础应用架构之上还需要服务治理,主要包括以下几部分:


①微服务治理:阿里巴巴的开源项目 OpenSergo用于解决跨微服务系统的不同微服务框架之间统一管控、统一调用、统一服务发现、统一微服务治理开源规范以及标准的实现;


②应用多活架构:AppActive


③应用流量管控:Sentinel


④混沌工程:ChaosBlade

image.png

分布式应用架构提供了应用分布式拆分过程中依赖的基础组件,解决分布式应用落地的问题(0-1);而分布式应用治理提供了分布式应用规模化过程中需要的治理能力和解决方案,解决了用好、管好分布式应用的问题(1-100)。

image.png

上图展示了阿里微服务治理的演进路线。


微服务起始阶段主要做微服务拆分,产生了 RBC 框架、消息系统以及分库分表三个组件。自研的微服务中间件通过 SDK 方式依赖,但是每个微服务都要进行一次依赖,升级和管理成本非常高。


2013年,阿里推出了基于隔离容器的方案,将所有中间件能力打包成整体提供给业务方,内部代号是潘多拉。通过这种方式使各个中间件单独升级变为整体升级,服务治理与业务解耦,中间件和业务运维治理效率也得到了非常大的提升。


但是这种形态下的升级成本依然非常高,中间件发布稳定版本往往需要经过一年甚至更久才能完全在整个集团内部推广。


19 年,我们希望能够通过更精良的方式将微服务治理与业务解耦,因此推出了 Java Agent 方案。Agent 升级可以做到业务无感知、无侵入,没有任何升级成本,提供了非常好的用户体验。


然而,一些非 Java 体系的微服务依然无法享受到 Agent 带来的便利,因此我们也在推动通过 mesh 方式针对多元实现无侵入的微服务治理能力。


从以上进程可知,微服务一直朝着无侵入、零升级成本的方向演进。微服务治理能力针对不同框架,依然存在非常高的知识成本。虽然在阿里内部已经基本统一了微服务框架,但很多云上客户依旧依赖各种框架,框架之间如何统一实现微服务治理能力,也是非常棘手的问题。因此,我们将 OpenSergo 项目进行开源。


OpenSergo 项目主要针对跨微服务框架、异构微服务框架以及异构语言之间能够进行统一管理、统一治理,能够将服务发现、流量治理、可观测领域完全拉通。

image.png

上图为 OpernSergo 开源架构大图。


   最上层为管控面,通过kubernetes 云原生的方式和 CRD 方式描述微服务治理的能力,并通过云原生的方式下发。同时也提供控制台针对不同服务进行管理。另外,还能够支持第三方企业通过自建标准实现自己的控制台。


OpernSergo-spec层规定了微服务治理领域的概念,将其标准化。


实现层分为多个领域,有服务发现、分布式事务、任务调度、流量治理、可观测等,每个领域都有规范的 spec 以及实现。比如在流量治理阶段,会有针对不同语言的实现,包括JavaGo 语言等。通过统一的标准,不同框即可以不同的形态接入到规范中,并被统一管理。


框架和基础设层也提供了很多微服框架供对接,比如 Spring CloudApache DubboBilibili 开源的 Kratos字节跳动开源的CloudWeGo

image.png

 后续 OpenSergo Spec 制定、数据面建设、管控面建设三个层面持续发展,未来一年的阶段性目标分为四个大层面,分别是流量治理、服务发现、可观测性以及互联互通。


2022 Q2 季度将发布 Spec 0.2 版本,同时支持全程灰度流量打标,进行灰度能力标准化建设。在此基础上,还会将KratosCloudWeGo以及Spring CloudAlibaba MySQL 进行对接。


2022 Q3 季度 ,计划对服务发现和注册发现领域完成标准化,发布 Spec 0.5 版本 ,并支持服务发现、无损上线等能力,同时会与DubboEnvoy 以及 Mosn 社区对接。


2022 Q4 季度,将进行可观测领域建设,发布真实版本的 Spec 1.0  加入可观测性的标准,与更多社区对接。


最终,我们期望实现各个框架互联互通。

image.png

未来,Sentinel 会重点投入流量治理领域,与 OpenSergo 进行全面整合。 OpenSergo 是服务治理领域的规范,而Sentinel 2.0 就是流量治理层面的标准实现。因此,我们将升级为流量治理品牌,提供各种流量调度、流量控制以及隔离自愈等流量治理里关键手段的标准实现。


此外,我们会提供各种各样的形态,包括 SDK 方式、Agent 方式等,同时继续扩大多语言能力的建设,探索数据库治理,与其他社区联联动,将流量治理能力全方位覆盖到云原生生态。


在数据库治理领域,Sentinel 将与OpenSergo 结合,将流量治理技术真正标准化,提供通用的 CRD 供社区使用。

image.png

微服务治理的主要趋势是数据面多样化,控制面板标准化。


微服务治理的实现非常复杂,因此更需要统一控制面,控制面必须进行标准化,我们将以OpenSergo 为规范进行标准化动作。此外,因为不同框架、不同语言的实现不一样,我们将提供多种多样的数据面,包括 SDK 方式、Java Agent 方式以及 Service Mesh 方式,甚至将来也许会探索通过eBPF 来进行微服务治理的实现等,不同的数据面针对不同场景都有其存在价值。


服务治理可以细分为几个子领域,主要包括开发态、测试态、发布态、高可用以及安全态。

image.png

阿里云发布的微服治理技术白皮书,是阿里云微服治理团队经过半年多的总结,整理出来的一本非常有价值的书。微服务治理背景、解决方案原理、场景化解决方案以及最佳实践都囊括在这本书里。目前此书已在阿里云开发者社区上线,提供免费下载。

image.png

应用多活容灾是分布式应用治理领域非常重要的一个模块。灾难往往是常态化发生的,灾难出现时,在短时间内将应用业务迅速切换到另外机房,从而避免因为单个机房灾难造成整个业务宕机,是非常重要的能力。


阿里经历了历年双 11 大促,孵化出非常多多活容灾理念架构以及实践,并通过 AppActive 开源项目将最佳实践通过开源项目的形式释放。


项目涵盖了多活容灾里非常重要的几个组件,比如入口层能够实现非常精准的流量切换以及流量隔离,能够根据不同的切分原则,将不同流量引入到不同机房。


应用层也提供了多切流方案,灾难发生时,通过中心化控制台将流量切流指令下发,同机房内部可以迅速将流量从 A 机房切换到 B 机房,此时,在应用内部也需要做快速流量收敛。因此我们针对不同框架做了实现支持,包括微服务框架常见的 DubboSpring Cloud、消息、数据库等,帮助更快收敛流量。


底层主要负责支持数据库之间的同步。


从网关入口到中间层再到最后数据层,AppActive 都做了非常多实践,希望将能力开放出来后能够帮助企业更好地构建业务稳定性。

image.png

ChaosBlade 是故障演练开源项目,于 2019 年开主要解决在不稳定环境下,如何通过一些方式提前发现问题,即通过混沌工程的技术理念,常态化地构建出未来可能会出现的问题。


比如每年双 11 大促备战时,我们都会进行故障演练,模拟一些场景,观察系统是否存在问题,能否正确地应对故障。


项目面向多集群、多语言( JavaGonode.js )、多环境(虚拟机、kubernetes等),能够非常方便地进行故障演练,也可以通过简单命令行实现故障模拟。将混沌工程理念与多开源生态做了结合,使分布式应用治理领域更加丰富。


OpenSergoSentinelAppActiveChaosBlade 四个开源组件共同构成了分布式应用治理的核心能力。

相关文章
|
7月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
5月前
|
安全 JavaScript 前端开发
HarmonyOS NEXT~HarmonyOS 语言仓颉:下一代分布式开发语言的技术解析与应用实践
HarmonyOS语言仓颉是华为专为HarmonyOS生态系统设计的新型编程语言,旨在解决分布式环境下的开发挑战。它以“编码创造”为理念,具备分布式原生、高性能与高效率、安全可靠三大核心特性。仓颉语言通过内置分布式能力简化跨设备开发,提供统一的编程模型和开发体验。文章从语言基础、关键特性、开发实践及未来展望四个方面剖析其技术优势,助力开发者掌握这一新兴工具,构建全场景分布式应用。
496 35
|
10月前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
221 13
|
10月前
|
运维 Cloud Native 安全
云原生技术在现代企业中的应用与挑战####
本文探讨了云原生技术在现代企业IT架构中的关键作用,分析了其带来的优势和面临的主要挑战。通过实际案例分析,揭示了如何有效应对这些挑战,以实现业务敏捷性和技术创新的平衡。 ####
|
4月前
|
分布式计算 Java 大数据
Java 大视界 —— 基于 Java 的大数据分布式计算在气象数据处理与天气预报中的应用进展(176)
本文围绕基于 Java 的大数据分布式计算在气象数据处理与天气预报中的应用展开,剖析行业现状与挑战,阐释技术原理,介绍其在数据处理及天气预报中的具体应用,并结合实际案例展示实施效果。
|
6月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
10月前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
Java 大视界 -- 基于 Java 的大数据分布式存储在视频监控数据管理中的应用优化(170)
本文围绕基于 Java 的大数据分布式存储在视频监控数据管理中的应用展开,分析管理现状与挑战,阐述技术应用,结合案例和代码给出实操方案。
|
6月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
353 12
|
10月前
|
Kubernetes Cloud Native 物联网
云原生技术在现代软件开发中的应用与挑战####
本文探讨了云原生技术的兴起背景、核心理念及其在现代软件开发中的广泛应用。通过具体案例分析,揭示了云原生架构如何促进企业数字化转型,并指出了在实施过程中面临的主要挑战及应对策略。 ####