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

本文涉及的产品
云原生网关 MSE Higress,422元/月
应用实时监控服务-用户体验监控,每月100OCU免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 分布式应用治理是微服务进行到一定程度之后的必经之路,也是在分布式基础架构之上构建的更高级特性。

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

——张乎兴

阿里云高级技术专家

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 四个开源组件共同构成了分布式应用治理的核心能力。

相关文章
|
2月前
|
Cloud Native 安全 物联网
云原生技术在现代软件开发中的应用与挑战####
云原生,这一词汇如同一股强劲的科技风暴,席卷了整个信息技术领域,它不仅重塑了软件的开发模式,还引领了一场关于效率、可扩展性和弹性的深刻变革。本文旨在深入探讨云原生技术的核心概念,分析其在现代软件开发中的广泛应用,并直面伴随其发展而来的挑战,为读者勾勒出一幅既充满机遇又不乏考验的云原生技术图景。 ####
|
12天前
|
监控 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
本文将深入探讨云原生技术如何改变现代企业的运作模式,提升业务灵活性和创新能力。通过实际案例分析,我们将揭示云原生架构的关键要素、实施步骤以及面临的挑战,为读者提供一套清晰的云原生转型指南。
|
18天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代软件开发中的应用与挑战
【10月更文挑战第37天】随着云计算技术的不断演进,云原生技术已经成为推动软件开发现代化的重要力量。本文将深入探讨云原生技术的核心概念、优势以及面临的挑战,并通过一个实际的代码示例,展示如何在云原生环境中部署一个简单的应用。我们将从云原生的基础架构出发,逐步引导读者理解其在现代软件开发中的关键作用。
28 1
|
1月前
|
敏捷开发 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
【10月更文挑战第23天】本文将深入探讨云原生技术在现代企业中的广泛应用,并结合具体案例分析其对企业数字化转型的推动作用。我们将从云原生技术的基本原理出发,逐步揭示其在提高业务敏捷性、降低成本和增强系统可靠性方面的优势。同时,文章还将分享一系列成功实施云原生技术的企业案例,为读者提供实践中的参考和启示。最后,我们将讨论云原生技术面临的挑战及未来的发展趋势,为企业在这一领域的进一步探索提供指导。
|
1月前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
34 2
|
2月前
|
运维 Cloud Native 持续交付
云原生技术在现代IT架构中的深度应用与挑战####
【10月更文挑战第17天】 本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的核心作用与面临的挑战。云原生不仅是一种技术实现,更是企业数字化转型的重要推手,通过容器化、微服务、持续集成/持续部署(CI/CD)等关键要素,重塑软件开发、部署与运维模式。文章首先概述了云原生的基本原则与核心组件,随后分析了其如何促进企业敏捷性、可扩展性和资源利用率的提升,同时也指出了在安全性、复杂性管理及人才技能匹配等方面存在的挑战,并提出了相应的对策建议。 ####
68 6
|
2月前
|
运维 监控 Cloud Native
云原生技术在现代企业中的应用与挑战####
【10月更文挑战第15天】 本文深入探讨了云原生技术如何重塑企业的IT架构,并分析了其带来的机遇与面临的挑战。通过案例分析,揭示了云原生技术在提升业务敏捷性、降低运维成本方面的显著优势,同时也指出了在安全性、多云管理等方面的潜在难题,为企业决策者提供了有价值的参考。 ####
27 3
|
2月前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
27天前
|
Cloud Native 安全 持续交付
云原生技术在现代软件开发中的应用与挑战####
本文深入探讨了云原生技术在现代软件开发中的广泛应用及其面临的主要挑战,旨在为开发者和企业提供实用的指导和策略。云原生技术通过其独特的架构和方法论,极大地提升了软件的可扩展性、弹性和敏捷性。然而,随着技术的不断演进,如何有效应对其在安全性、复杂性和成本控制等方面的挑战,成为了业界关注的焦点。本文将详细阐述云原生技术的核心概念、实际应用案例,并针对当前面临的主要挑战提出相应的解决策略。 ####
|
2月前
|
Cloud Native Devops 云计算
云原生技术:构建现代应用的新基石
【10月更文挑战第12天】 本文深入探讨了云原生技术的核心理念、关键技术和实践方法,揭示了其在现代应用开发和运维中的重要地位。通过分析云原生技术的发展趋势和面临的挑战,本文为读者提供了全面而深入的理解,旨在帮助读者更好地利用云原生技术构建高效、灵活和可扩展的现代应用。
37 0