Redian新闻
>
全链路灰度的挑战、实现思路与解决方案

全链路灰度的挑战、实现思路与解决方案

公众号新闻



01

微服务架构下的灰度发布挑战

在传统的单体应用架构中,灰度发布相对简单。只需要在服务的流量入口处进行分流,通过使用 K8s Service 或各种类型的网关即可实现。然而,微服务架构引入了新的复杂性,服务之间的依赖关系错综复杂。有时候,某个功能的发布可能依赖于多个服务,要求灰度流量在整个调用链中准确路由到灰度版本的服务。传统的单个服务流量入口设置分流的做法无法满足这一需求。为了解决微服务架构下的灰度发布问题,全链路灰度发布引入了泳道(Lane)的概念。泳道将灰度视角从单个服务扩展到整个请求的调用链上,确保流量能够精确地在一组指定规则的服务之间流动,就像在预先设置好的泳道中一样。全链路灰度发布方案专为微服务架构设计,旨在应对微服务架构下的灰度发布挑战。


02

全链路灰度发布的实现思路

全链路灰度发布的核心在于流量泳道概念的实现,而泳道正如上文所说,是对满足指定规则的流量定下一个活动范围,它有以下两种实现思路:


第一种思路:完整环境隔离

泳道实现的主要难点在于,流量在服务间调用的过程中如何路由到正确的服务版本,但有一个简单的实现思路可以规避这个问题:复制一个包含所有微服务的完整环境,将需要灰度的服务替换为灰度版本。然后只需要在两个环境的流量入口处通过网关对流量进行规则分流,由于两套环境间存在网络隔离,灰度环境天然成为了一个灰度流量泳道。

然而,对于服务数量较多的微服务项目来说,这种方法会浪费资源,因为在灰度环境中创建非灰度服务会消耗额外的资源。如果要同时灰度多个版本,就需要创建多套完整环境,进一步增加了资源的浪费。


第二种思路:服务流量路由

若能赋予每个服务路由流量的能力,泳道的设置就可以共用正常服务从而充分利用资源,多版本的全链路灰度发布也可以同时在同一个环境中进行。具体而言,需要两个能力:全链路流量路由和全链路数据透传。


全链路流量路由


流量路由指的是服务本身发送流量时,可以根据指定规则将其路由到正确的目的地,例如带有灰度标的流量应该优先发往灰度版本的服务,全链路流量路由则要求每个服务都具备这种能力。


全链路流量路由目前有两种主流实现:

  1. 基于 Istio:采用 Istio 这个开源 Service Mesh 组件,通过在每个服务的容器中部署 Envoy 透明代理,拦截服务之间的网络通信并按指定规则转发,从而实现了全链路流量路由,无需对现有代码进行修改。

  2. 基于服务发现组件:通过支持为服务设置元数据的服务注册中心,如 Nacos,可以标记服务实例的特征,例如灰度版本。每个服务可以通过注册中心获取其他服务实例的版本信息,并通过修改代码逻辑或 Java Agent 实现流量路由。


全链路数据透传


为了实现全链路灰度发布,流量路由规则基于流量染色标记,因此需要将染色标记传递到整个请求链路中,即实现全链路数据透传能力。简单的数据透传可以基于原生的 HTTP Header、Query Parameters 等资源来实现,但在复杂的微服务场景下,应该使用 Tracing Baggage 机制。Tracing Baggage 是分布式链路跟踪工具提供的一种能力,可以携带用户自定义的键值对,主流的跟踪工具如 Skywalking 和 OpenTelemetry 都支持该功能。使用分布式链路追踪框架可以方便地进行日志记录和问题排查,特别适用于灰度发布场景下的需求。



03

企业发布现状的痛点分析

目前企业在选择和实施发布策略时面临以下困境:
1. 从传统部署模式转变为云原生模式后,缺乏相关能力的人才进行技术架构改造,使得企业在发布策略方面难以入手。
2. 已经找到适合产品现状的发布策略,但缺乏自动化平台或工具的支持,仍然依赖手工逐步执行,可能导致流程遗漏或人工操作失误,造成生产事故。
3. 仅实现了服务级别的灰度能力,逐个发布服务耗时长,导致发布过程缓慢,验证效果不佳。
针对以上问题,ZadigX 提供了灰度发布的解决方案,帮助企业应对这些痛点。


04

全链路灰度发布的实现方案

主要有 Istio、JavaAgent 等主流方案,基于流量路由的能力,ZadigX 提供了两套通用方案:


阿里云 MSE + ZadigX 

阿里云 MSE 为 Java 应用提供了便捷实现全链路灰度的能力。MSE 微服务引擎是基于 Java Agent 实现的无侵入式企业生产级服务治理产品,不需要修改任何一行业务代码,即可拥有不限于全链路灰度的治理能力,并且支持近 5 年内所有的 Spring Boot、Spring Cloud 和 Dubbo。


使用 MSE 进行灰度发布的过程中,ZadigX 可以便捷得创建灰度环境和灰度 K8S 资源、结合发布工作流编排能力,自动为 K8S 资源设置 MSE 所需的资源标记,集成了 MSE API 降低重复工作量。


Istio + Distributed Tracing + ZadigX


Istio 可以无侵入得实现全链路流量路由能力,同时还可以设置基于比例、权重、HTTP Header 等条件的流量路由,但全链路数据透传需要服务本身实现,为此需要服务接入支持 Baggage 的分布式链路追踪框架,若还没接入则会涉及到一定的改造成本。


ZadigX 可以根据指定的灰度任务与灰度标记规则,结合发布工作流编排能力与环境的监测管理能力,自动创建 Istio VirtualService 与 DistinationRule  资源以实现相应的泳道,达到了让开发者轻松进行全链路灰度发布的效果。



END



2023年需求最大的8种编程语言:PHP强劲,C/C++需求放缓




这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦



微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
中国科学院院士叶志镇:锌溴液流电池或成为储能电池产业化解决方案名城 查尔斯顿挑战TikTok“地铁冲浪” 两名14岁男孩一死一重伤!社媒各类恐怖挑战何时休?“昏迷挑战”、“破颅挑战”已造成多人死亡【动脉严选新品鉴第17期】中天医疗:AIS一站式创新解决方案新兴人工智能网络安全的挑战和解决方案两用一体设计!全链路不断连,硬糖小电拼评测法律翻译|新西兰2016年国际学生合同纠纷解决方案——第一部分“争议解决程序”回来了新挑战、新方法、新思路:第七届全球品牌电商峰会蓄势待发选校没思路?录取率超高、实力被低估的工科牛校了解一下?全链路灰度的挑战、实现思路与解决方案!国产GPU重要应用场景迎来突破!摩尔线程发布重磅产品与创新解决方案探索跨端开发的常用解决方案:条件编译的实现普济生物发布高通量PCR临床诊断解决方案:重塑分子诊断技术格局,让创新科技惠及更多人群分布式中灰度方案就该这样设计!水龙饮 船行感怀主流微服务全链路监控系统实战「喜运达」完成数千万元Pre-A轮融资,搭建全链路端到端的跨境物流网络|早起看早期「喜运达」完成数千万元Pre-A轮融资,搭建全链路端到端的跨境物流网络|36氪首发深扒!企业刑事合规的设计思路与落地方案腾讯混元大模型亮相:全链路自研,聚焦应用死磕“幻觉”美国和加拿大华埠领袖齐聚温哥华,探讨共同面临的挑战并寻找解决方案芯砺智能创始人兼CEO张宏宇:Chiplet片间互连的技术挑战与解决方案 | 全球汽车芯片创新峰会预告色戒: 中国女人与外国男人Der Maechtige Strom巨流河JAMA丨人工智能/ChatGPT在临床诊断中的应用:到底是挑战、还是机遇?!小而美业务全链路内容营销方法大模型将如何改变互联网广告的全链路?广州中大纺织商圈何去何从?省工信厅:加快解决方案出台IEEE在联合国气候变化大会第27次缔约方会议(COP27)讨论了六个气候变化的简易解决方案面对算力瓶颈,如何利用CPU解决全链路智能编码?高德地图:“高德运动”即日起提供跑步健身全链路服务早财经丨俄外交官提“和平解决方案”:乌承诺保持中立、承认“新的领土现实”、宣布俄语为国语等;中国银联交易份额首超Visa直播预告|基因编辑敲入细胞模型构建的挑战和解决方案技术派中的缓存一致性解决方案
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。