托管式服务网络:云原生时代的应用体系架构进化

背景

回顾下应用服务架构体系的演进。从服务调用方与提供方的处理方式来看, 可以分为 3 个阶段。

第一个阶段是集中式负载均衡, 也就是说服务调用方是通过一个外部的负载均衡路由到对应的服务提供方。其优势显而易见, 对应用本身无侵入, 可以支持多语言多框架来开发实现应用本身, 负载均衡统一集中管理, 整个部署简单。但劣势也非常显著, 因为是集中式所以导致伸缩性受限, 同时这种集中式负载均衡的服务治理能力相对都较弱。

第二阶段是指微服务的分布式治理, 即服务调用方内置治理能力, 以 SDK 库的方式集成到应用中。带来的优势是整个伸缩性较好, 服务治理能力强, 但同时会注意到它的劣势, 包括对应用本身的侵入、因为依赖于 SDK 所以导致对多语言支持比较困难、分布式管理部署带来的复杂性等。

第三阶段就是现在的服务网格技术。通过把这些服务治理的能力 Sidecar 化,就能够把服务治理的能力与应用程序本身进行了解耦,可以较好地支持多种编程语言、同时这些 Sidecar 能力不需要依赖于某种特定技术框架。这些 Sidecar 代理形成一个网状的数据平面,通过该数据平面处理和观察所有服务间的流量。控制面对这些 Sidecar 代理进行统一管理。但因此带来了一定的复杂度。

下图是服务网格的架构图。前面提到, 在服务网格技术下, 每一个应用服务实例都会伴随了一个 Sidecar 代理, 业务代码不感知 Sidecar 的存在。这个 Sidecar 代理负责拦截应用的流量,并且提供流量治理、安全、可观测三大功能。

在云原生应用模型中,一个应用程序可能会包含若干个服务,每个服务又有若干个实例构成,那么这些成百上千个应用程序的 Sidecar 代理就形成了一个数据面, 也就是图中的数据平面层。

而如何统一管理这些 Sidecar 代理, 这就是服务网格中的控制平面部分要解决的问题。控制平面是服务网格的大脑,负责为数据平面的 Sidecar 代理下发配置, 管理数据面的组件如何执行, 同时也为网格使用人员提供统一的 API,以便较容易地操纵网格管理能力。

通常来说, 启用服务网格之后, 开发人员、运维人员以及 SRE 团队将以统一的、声明的方式解决应用服务管理问题。

服务网格加持下的云原生应用基础设施

服务网格作为一种用来管理应用服务通信的基础核心技术, 为应用服务间的调用带来了安全、可靠、快速、应用无感知的流量路由、安全、可观测能力。

可以看到, 服务网格加持下的云原生应用基础设施带来了重要的优势, 分为六个方面。

优势之一:异构服务统一治理

• 多语言多框架的互通与治理、与传统微服务体系融合的双模架构

• 精细化的多协议流量控制、东西向与南北向流量的统一管理

• 统一的异构计算基础设施的自动服务发现

优势之二:端到端的可观测

• 日志、监控与跟踪融合的一体化智能运维

• 直观易用的可视化网格拓扑、基于颜色标识的健康识别体系

• 内置最佳实践、自助式网格诊断

优势之三:零信任安全

• 端到端 mTLS 加密、基于属性的访问控制 (ABAC)

• OPA 声明式策略引擎、全局唯一的工作负载身份(Identity)

• 带有仪表板的完整审计历史记录及洞察分析

优势之四:软硬结合性能优化

• 首个基于 Intel Multi-Buffer 技术提升 TLS 加解密的服务网格平台

• NFD 自动探测硬件特征, 自适应支持诸如 AVX 指令集、QAT 加速等特性

• 首批通过可信云服务网格平台以及性能评测先进级认证

优势之五:SLO 驱动的应用弹性

• 服务级别目标 (SLO) 策略

• 基于可观测性数据的应用服务的自动弹性伸缩

• 多集群流量突发下的自动切换与故障容灾

优势之六:开箱即用扩展&生态兼容

• 开箱即用的 EnvoyFilter 插件市场、WebAssembly 插件全生命周期管理

• 与 Proxyless 模式的统一融合, 支持 SDK、内核 eBPF 方式

• 兼容 Istio 生态系统, 支持 Serverless/Knative, AI Serving/KServe

下图是服务网格 ASM 产品当前的架构。作为业内首个全托管 Istio 兼容的服务网格产品 ASM,一开始从架构上就保持了与社区、业界趋势的一致性,控制平面的组件托管在阿里云侧,与数据面侧的用户集群独立。ASM 产品是基于社区开源的 Istio 定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力。通过托管模式,解耦了 Istio 组件与所管理的 K8s 集群的生命周期管理,使得架构更加灵活,提升了系统的可伸缩性。

托管式服务网格 ASM 在成为多种异构类型计算服务统一管理的基础设施中, 提供了统一的流量管理能力、统一的服务安全能力、统一的服务可观测性能力、以及基于 WebAssembly 实现统一的代理可扩展能力, 以此构筑企业级能力。

服务网格技术的下一站如何发展

Sidecar Proxy 与 Proxyless 模式的融合一句话来总结的话,就是同一个控制面, 支撑不同的数据面形态。同一个控制面就是指使用 ASM 托管侧组件作为统一的标准形式的控制入口, 这个控制面运行在阿里云侧,属于 hosted 托管模式。

而数据面支持 Sidecar Proxy 与 Proxyless 模式的融合, 其中数据面的组件虽然不是 hosted 托管模式, 但是也是 managed 模式, 也就是说这些组件的生命周期也是由 ASM 统一来管理, 包括分发到数据面、升级、卸载等。

具体来说, 在 Sidecar Proxy 模式下, 除了当前标准的Envoy代理之外, 我们的架构可以比较容易地支持其他 Sidecar, 譬如说 Dapr Sidecar, 当前微软 OSM+Dapr 就是采用了这种双 Sidecar 模式。

在 Proxyless 模式下, 为了提升 QPS 降低时延, 可以使用 SDK 方式, 譬如 gRPC 已经支持 xDS 协议客户端, 我们的 Dubbo 团队也在这条路上。我想今年我和北纬团队双方是可以一起在这个点上进行一些突破实现。

另外一个 proxyless 模式, 就是指- 内核 eBPF + Node 级 Proxy 方式。这个模式是对 sidecar 模式的一个根本性改变, 一个节点只有一个 Proxy,并且能力 offload 到节点上。这部分我们今年也会有些产品落地。

围绕服务网格技术, 业界存在着一系列以应用为中心的生态系统, 其中, 阿里云托管服务网格 ASM 支持了以下多种生态系统。列举如下:

现代化软件开发的生命周期管理和 DevOps 创新

服务网格的核心原则(安全性、可靠性和可观察性)支持了现代化软件开发的生命周期管理和 DevOps 创新, 为在云计算环境下如何进行架构设计、开发、自动化部署和运维提供了灵活性、可扩展性和可测试性能力。 由此可见, 服务网格为处理现代软件开发提供了坚实的基础,任何为 Kubernetes 构建和部署应用程序的团队都应该认真考虑实施服务网格。

DevOps 的重要组成部分之一是创建持续集成和部署 (CI/CD),以更快更可靠地向生产系统交付容器化应用程序代码。在 CI/CD Pipeline 中启用金丝雀或蓝绿部署可为生产系统中的新应用程序版本提供更强大的测试,并采用安全回滚策略。在这种情况下,服务网格有助于在生产系统中进行金丝雀部署。当前阿里云服务网格 ASM 支持了与 ArgoCD、Argo Rollout、KubeVela 以及云效、Flagger 等系统的集成实现了应用的蓝绿或金丝雀发布, 具体如下:

ArgoCD[1] 职责主要是监听 Git 仓库中的应用编排的变化,并集群中应用真实运行状态进行对比,自动/手动去同步拉取应用编排的变更到部署集群中。如何在阿里云服务网格 ASM 中集成 ArgoCD 进行应用程序的发布、更新,简化了运维成本。

Argo Rollouts[2] 提供了更强大的蓝绿、金丝雀部署能力。在实践中可以将两者结合来提供基于 GitOps 的渐进式交付能力。

KubeVela[3] 是一个开箱即用的、现代化的应用交付与管理平台。使用服务网格 ASM 结合 KubeVela 可以实现应用的渐进式灰度发布,达到平缓升级应用的目的。

阿里云云效流水线 Flow[4] 提供了基于阿里云服务网格 ASM 完成 Kubernetes 应用的蓝绿发布。

Flagger[5] 是另外一种渐进式交付工具,可自动执行在 Kubernetes 上运行的应用程序的发布过程。它通过在测量指标和运行一致性测试的同时,逐渐将流量转移到新版本,降低了在生产中引入新软件版本的风险。阿里云服务网格 ASM 已经支持通过 Flagger 实现这种渐进式发布能力。

微服务框架兼容[6]

支持 Spring Boot/Cloud 应用无缝迁移至服务网格进行统一纳管和治理, 提供了融合过程中出现的典型问题解决能力, 包括容器集群内外服务如何互通、不同的语言服务之间如何进行互联互通等常见场景。

Serverless 容器与基于流量模式的自动扩缩[7]

Serverless 和 Service Mesh 是两种流行的云原生技术,客户正在探索如何从中创造价值。 随着我们与客户深入研究这些解决方案,问题经常出现在这两种流行技术之间的交集以及它们如何相互补充上。我们能否利用 Service Mesh 来保护、观察和公开我们的 Knative 无服务器应用程序?在一个托管的服务网格 ASM 技术平台上支持基于 Knative 的 Serverless 容器, 以及基于流量模式的自动扩缩能力, 从中可以替换如何通过托管式服务网格来简化用户维护底层基础设施的复杂度, 让用户可以轻松地构建自己的 Serverless 平台。

AI Serving[8]

Kubeflow Serving 是谷歌牵头发起的一个基于 Kubernetes 支持机器学习的社区项目,它的下一代名称改为 KServe, 该项目的目的是可以通过云原生的方式支持不同的机器学习框架,基于服务网格实现流量控制和模型版本的更新及回滚。

零信任安全及 Policy As Code[9]

在使用 Kubernetes Network Policy 实现三层网络安全控制之上,服务网格 ASM 提供了包括对等身份和请求身份认证能力、Istio 授权策略以及更为精细化管理的基于 OPA(Open Policy Agent) 的策略控制能力。

具体来说, 构建基于服务网格的零信任安全能力体系包括了以下几个方面:

  • 零信任的基础:工作负载身份;如何为云原生工作负载提供统一的身份;ASM 产品为服务网格下的每一个工作负载提供了简单易用的身份定义,并根据特定场景提供定制机制用于扩展身份构建体系, 同时兼容社区 SPIFFE 标准;
  • 零信任的载体:安全证书,ASM 产品提供了如何签发证书以及管理证书的生命周期、轮转等机制,通过 X509 TLS 证书建立身份,每个代理都使用该证书。并提供证书和私钥轮换;
  • 零信任的引擎:策略执行,基于策略的信任引擎是构建零信任的关键核心,ASM 产品除了支持 Istio RBAC 授权策略之外,还提供了基于 OPA 提供更加细粒度的授权策略;
  • 零信任的洞察:视化与分析,ASM 产品提供了可观测机制用于监视策略执行的日志和指标,来判断每一个策略的执行情况等;

改造为云原生应用带来的业务价值非常多,其中一个就是弹性扩缩容,它能够更好地应对流量峰值和低谷,达到降本提效的目的。服务网格 ASM 为应用服务间通信提供了一种非侵入式的生成遥测数据的能力, 指标获取不需要修改应用逻辑本身。

根据监控的四个黄金指标维度(延迟、流量、错误和饱和度),服务网格 ASM 为管理的服务生成一系列指标, 支持多个协议, 包括 HTTP,HTTP/2,GRPC,TCP 等。

此外, 服务网格内置了 20 多个监控标签, 支持所有 Envoy 代理指标属性定义、通用表达式语言 CEL, 支持自定义 Istio 生成的指标。

同时,我们也在探索拓宽服务网格驱动的新场景,这里举一个AI Serving的示例[10] 。

这个需求来源也是来自我们的实际客户, 客户的使用场景就是希望在服务网格技术之上运行 KServe 来实现 AI 服务。KServe 平滑运行于服务网格之上, 实现模型服务的蓝/绿和金丝雀部署、修订版本之间的流量分配等能力。支持自动伸缩的 Serverless 推理工作负载部署、支持高可扩展性、基于并发的智能负载路由等能力。

总结

作为业内首个全托管Istio兼容的阿里云服务网格产品 ASM,一开始从架构上就保持了与社区、业界趋势的一致性,控制平面的组件托管在阿里云侧,与数据面侧的用户集群独立。ASM 产品是基于社区Istio定制实现的,在托管的控制面侧提供了用于支撑精细化的流量管理和安全管理的组件能力。通过托管模式,解耦了 Istio 组件与所管理的K8s 集群的生命周期管理,使得架构更加灵活,提升了系统的可伸缩性。

从 2022 年 4 月 1 日起,阿里云服务网格 ASM 正式推出商业化版本, 提供了更丰富的能力、更大的规模支持及更完善的技术保障,更好地满足客户的不同需求场景。

参考链接:

[1] ArgoCD:

https://developer.aliyun.com/article/971976

[2] Argo Rollouts:

https://developer.aliyun.com/article/971975

[3] KubeVela:

https://help.aliyun.com/document_detail/337899.html

[4] 阿里云云效流水线 Flow:

https://help.aliyun.com/document_detail/160071.html

[5] Flagger:

https://docs.flagger.app/install/flagger-install-on-alibaba-servicemesh

[6] 微服务框架兼容:

https://developer.aliyun.com/article/974941

[7] Serverless 容器与基于流量模式的自动扩缩:

https://developer.aliyun.com/article/975639

[8] AI Serving:

https://developer.aliyun.com/article/971974

[9] 零信任安全及 Policy As Code:

https://developer.aliyun.com/article/787187

[10] AI Serving的示例:

https://developer.aliyun.com/article/971974

作者:王夕宁

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510680.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科普达人丨一文看懂阿里云的秘密武器“神龙架构”

在一台电脑中,我们把CPU和硬盘比作一家公司的加工厂和仓库,那么两个部门的任务就是处理数据和存储数据。 但是因为土地价格和劳动力价格差异较大等因素,需要将两个部门分别建在不同的地方,这也就是在云上的情况,也就是…

卓越工程实践之—前端高质量单测

高单测等于高质量? 笔者负责的npm包是 ICBU信天翁低代码平台渲染引擎,160应用 600页面基于该引擎开发,内网日npm下载 1K。经过不懈努力(CV),终于把单测提到了95%。 然而,虽然在覆盖率上获得了…

中国移动云电脑重磅发布,又一场革命到来!

12 月 11 日,2022 中国移动全球合作伙伴大会产业链创新暨算力网络分论坛顺利举办。会上,中国移动基于算力网络战略下的扛鼎力作——中国移动云电脑重磅发布!中国移动云能力中心总经理方力表示:“它将会成为中国移动算力网络对外输…

PolarDB-X 如何做分布式数据库热点分析

背景 PolarDB-X是一款计算存储分离的分布式数据库,分布式的处理能力是PolarDB-X的核心特性之一,单个数据库实例的多个计算节点会均摊全部的SQL流量,这样就可以通过节点的扩缩容来快速满足不同的流量峰值场景。 在PolarDB-X 1.0时代&#xff…

说说关系型数据库与Serverless

它是站在海岸遥望海中已经看得见桅杆尖头了的一只航船,它是立于高山之巅远看东方已见光芒四射喷薄欲出的一轮朝日,它是躁动于母腹中的快要成熟了的一个婴儿。-- 星星之火,可以燎原一、关于Serverless 看到如今Serverless在云计算行业喷薄欲出…

历时4年打磨,可信执行环境操作系统Occlum 1.0发布

12月10日,由中国计算机协会主办的2022中国计算机大会(CNCC2022)在线上举行,由蚂蚁集团主导开源的可信执行环境(TEE)操作系统Occlum 1.0在“可信隐私计算研讨会”上发布。Occlum是机密计算领域核心开源软件之…

全链路压测:影子库与影子表之争

业界盛传的全链路压测是什么 全链路压测诞生于阿里巴巴双 11 备战过程,如果说双 11 大促是阿里业务的“期末考试”,全链路压测就是大考前的“模拟考试”,诞生后被誉为双 11 稳定性保障的“核武器”。全链路压测通过在生产环境对业务大流量场…

当我们谈论不可变基础设施时,我们在谈论什么

午夜时分,电话响起,线上告急。你从千呼万钉中醒来,睡眼朦胧,手忙脚乱。 恍惚之间,终于梳理清楚发生了什么,一个陈年老应用突然停机,消息堆积,系统停摆。而你就像一个下水道小工疏通…

主流电脑形态大变革,云电脑才是未来?

数字技术与实体经济加速融合的时代,传统 PC 形态正面临着运算效率、成本、安全等多方面的挑战。首先是信息处理需求的爆发式增长,推动着人们对大算力应用的需求升级,终端的计算、储存能力更多地向云端转移。其次,复杂的国际形势下…

10亿+/秒!看阿里如何搞定实时数仓高吞吐实时写入与更新

导读:Hologres(原交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的场景,全面兼容PostgreSQL协议并与大数据生态无缝打通,能用同一套数据架构同时支持实时写入实时查询…

阿里云云原生一体化数仓 — 数据建模新能力解读

DataWorks智能数据建模-产品建设背景 2009年,DataWorks就已经在阿里巴巴集团立项,支撑阿里巴巴数据中台建设,一路见证阿里巴巴大数据建设之路。2020年之前,DataWorks支持的是开发视角、自底向上、小步快跑,快速满足业…

如何快速理解复杂业务,系统思考问题?

正视复杂性 我们必须承认这个世界原本就非常复杂,就像以我们现在的科技仍然不能攻克新冠病毒、不能精确预测天气、不能有效控制经济形势异常波动一样,任何试图浮于表面、疏于投入就想了解并解决一个复杂问题的傲慢做法,最终都只能接受无情的…

云原生消息队列 Pulsar 浅析

一、前言 Pulsar是一个多租户,高性能的服务间消息解决方案。最初由Yahoo开发,现在由Apache Software Foundation负责。Pulsar是消息队列领域的一匹黑马,其最大优点在于它提供了比Apache Kafka更简单明了、更健壮的一系列操作功能&#xff0c…

当 Knative 遇见 WebAssembly

Knative 是在 Kubernetes 基础之上的 Serverless 计算的技术框架,可以极大简化 Kubernetes 应用的开发与运维体验。在 2022 年 3 月成为 CNCF 孵化项目。Knative 由两个主要部分组成:一个是支持 HTTP 在线应用的 Knative Serving,一个是支持 …

6000字干货分享:数据中台项目管理实践分享

简介 阿里云数据中台是一个包含落地实施方法论、平台产品和技术服务的企业级解决方案。阿里云数据中台以Maxcompute等大数据计算平台为载体,以三个One为理论基础构成数据中台方法论,实现在一个平台里完成数据全生命周期的管理工作。 本文总结了企业级数…

关于程序员的职业操守,从《匠艺整洁之道》谈起

为什么程序员需要职业操守? 行业的壮大 这个问题还得从软件行业的发展说起。软件行业从诞生(1935)至今(2022),已经八十多年的历史了。 在这期间,整个软件行业有了巨大的发展: 从业…

面向长代码序列的 Transformer 模型优化方法,提升长代码场景性能

阿里云机器学习平台PAI与华东师范大学高明教授团队合作在SIGIR2022上发表了结构感知的稀疏注意力Transformer模型SASA,这是面向长代码序列的Transformer模型优化方法,致力于提升长代码场景下的效果和性能。由于self-attention模块的复杂度随序列长度呈次…

支持异构GPU集群的超大规模模型的高效的分布式训练框架Whale

近日,阿里云机器学习PAI关于深度学习模型高效的分布式训练框架的论文《 Whale: Efficient Giant Model Training over Heterogeneous GPUs 》被计算机系统领域国际顶级学术会议USENIX ATC22接收。 Whale是阿里云机器学习PAI平台自研的分布式训练框架,开…

深度揭秘阿里云函数计算异步任务能力

在上篇文章《解密函数计算异步任务能力之「任务的状态及生命周期管理」》中,我们介绍了任务系统的状态管理,并介绍了用户应如何根据需求,对任务状态信息进行实时的查询等操作。在本篇中我们将会进一步走进函数计算异步任务,介绍异…

月费 19 美元的 GitHub Copilot 企业版上线,你乐意买单吗?

近日,微软旗下的 GitHub 发布了 Copilot 企业版,推出了一个名为“Copilot for Business”的新计划。每个用户每月仅需 19 美元就能享受企业级服务。简单来说,支付月费的用户将享有简单的许可管理,管理员可以为其团队启用 GitHub C…