分布式全链路灰度发布的探索与实践

简介: 在分布式系统中,由于分布式全链路灰度发布因其链路复杂、技术门槛高、落地难度高逐渐成为金融科技实现全链路灰度发布的难点所在。工行在分布式系统建设方面一直走在同业前列,积极探索分布式全链路灰度发布,致力于解决分布式架构下跨应用、跨服务的全链路灰度发布能力。

头图.png

 

互联网金融时代下,金融产品和服务模式不断创新,金融系统容量需求急剧增长,为进一步满足运维标准提升工作的需求,提升服务连续性水平。中国工商银行(后简称工行)从 2014 年开始分布式架构转型的技术预研工作,通过对开源微服务框架深入调研和技术选型后,确定了基于开源 Dubbo 自主研发建设分布式服务平台,并结合金融场景,工行在 Dubbo 基础上对服务的注册、发现等核心能力进行了三十余项定制,以支持单注册中心超 70 万提供者的超大规模业务场景。分布式服务作为分布式体系的核心能力,助力工行应用架构向分布式、服务化转型,承载未来开放平台核心银行系统。

在分布式系统中,由于分布式全链路灰度发布因其链路复杂、技术门槛高、落地难度高逐渐成为金融科技实现全链路灰度发布的难点所在。工行在分布式系统建设方面一直走在同业前列,积极探索分布式全链路灰度发布,致力于解决分布式架构下跨应用、跨服务的全链路灰度发布能力。

业界传统灰度发布

灰度发布是业界一种规避发布风险的有效的手段,通常可以蓝绿部署、滚动发布、灰度发布等几种方式实现。

1. 蓝绿发布

蓝绿部署是指同时运行两个版本的应用,如图1所示,蓝绿部署的时候,原有版本不停止服务,直接部署一套新版本,新版本正常运行后,再将流量切换到新版本。但是蓝绿部署要求在升级过程中,同时运行两套程序,对硬件的要求就是日常所需的两倍。

1.png
图 1  蓝绿部署

2. 滚动发布

滚动升级就是在升级过程中,不是同时启动所有新版本,是先启动一台新版本,再停止一台老版本,以此类推,直到升级完成。但是滚动升级存在风险,在开始滚动升级后,流量会直接流向已经启动起来的新版本,但是新版本是不一定可用的,比如需要进一步的测试才能确认。那么在滚动升级期间,整个系统就处于非常不稳定的状态,如果发现了问题,也比较难以确定是新版本还是老版本造成的问题。

2.png
图 2  滚动发布

3. 灰度发布

灰度发布即先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的 A/B 测试。当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此期间,还可以不断地调整新旧两个版本的运行的服务器副本数量,以使得新版本能够承受越来越大的流量压力。直到将 100% 的流量都切换到新版本上,最后关闭剩下的老版本服务,完成灰度发布。如果在灰度发布过程中(灰度期)发现了新版本有问题,就应该立即将流量切回老版本上,这样,就会将负面影响控制在最小范围内。

3.png
图 3  灰度发布

工行对企业级链路灰度发布能力探索

工行从 2015 年开启了 IT 架构转型工程,分布式体系已覆盖百余个关键应用,已有上万分布式服务节点,日均服务调用量超 60 亿,交易峰值逾 10 万 TPS,实现了远程主机性能容量的集群处理能力。截至 2019 年,工行各项目主要通过滚动升级、蓝绿发布、业务开关三种方式实施了灰度发布。

随着 IT 架构转型,分布式体系支撑的服务的底层架构和平台系统日益复杂,生产运行不确定因素相较于主机明显增加,这就对生产系统稳定运行提出了更高的要求。工行于 2020 年上半年已支持分布式全链路灰度发布方式,旨在复杂分布式场景中,针对行内重点产品线、重点应用、公共支撑平台,形成统一的灰度发布规范,为重点产品线提供了全链路灰度发布能力的技术支撑。

1. 面对多样化金融业务场景,构建企业级全链路灰度能力

工行目前已有近 10 亿账户,每日通过多种渠道处理近 2 亿笔支付结算业务,对系统的高可用能力要求极高。面对不同产品线,迫切需要端到端的全链路灰度发布,来降低版本发布的风险。工行全链路灰度发布能力通过对业务流量进行染色,联合软负载均衡、网关、服务框架等多个组件,实现染色流量按标签进行路由,支持跨应用、跨节点的全链路灰度路由能力,并建立灰度发布运维监控体系和管控机制。

4.png
图 4  工行全链路灰度流程

2. 流量标签级灰度路由能力,驾驭金融业务场景

全链路灰度发布采用标签路由的方式,通过软负载和服务框架识别染色流量中的标签和灰度环境节点标签,实现对应染色流量只在对应标签的灰度环境中流转。

1)软负载灰度流量分发

软负载通过识别流量中的灰度标签,把灰度流量路由发送至对应标签的灰度环境,实现灰度流量的第一级分发。

5.png
图 5  软负载灰度路由

2)服务框架灰度路由

灰度请求流量流转到业务层服务化节点后,后续流量就由服务框架代管,通过 RPC(Dubbo)协议流转,服务框架的标签路由层会自动识别本次请求是否携带灰度流量标识,并筛选特定的灰度环境并转发请求。

6.png
图 6  服务框架灰度路由

3)灰度标签链路透明传递

在业务服务层,服务框架负责灰度标签的传递。Dubbo 提供了优雅的隐式参数机制,方便地传递上下游的一些标记和控制消息,而实现对业务无感的能力。工行微服务框架在此机制上,将灰度标签作为一隐式参数,在消费方发起请求切面中自动将该参数设置在请求中,使得灰度流量在链路传递过程中,其携带的灰度标识能被层层传递下去,实现全链路灰度发布能力。

7.png
图 7  灰度标识透明传递

4)灰度降级保障业务交易安全执行

当链路中存在环节所有服务节点灰度标识均无法匹配灰度请求标识,则灰度请求在该环境通过正常节点处理,且保证灰度标识能继续向下游传递。保障系统高可用能力,防止流量找不到对应标识节点而出现交易失败的情况。

8.png
图 8  灰度降级

3. 总结

目前工行已建设统一的全链路灰度发布标准,降低了各应用实现灰度发布的改造人力成本及灰度环境建设难度,提高了研发效率,最终实现跨应用、跨服务的一致性灰度发布能力。已在聚合支付业务线、手机银行业务线等二十余个应用实现了全链路灰度发布能力。

未来展望

随着工行 IT 架构转型的持续推进,工行将持续构建以主机和平台双核心的金融信息系统,保证金融服务的稳定运行,支撑高频业务快速增长。以“开放性、高容量、易扩展、成本可控、安全稳定、便捷研发”为建设理念,在分布式全链路灰度发布领域积极推动技术创新、管控升级,覆盖银行核心交易链路场景,持续完善全链路灰度发布模式,减少应用接入成本,提升全链路灰度发布中各组件兼容适配能力,以适应复杂的分布式金融交易场景,为智慧银行建设提供有力支撑。

原文链接 

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

 

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

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

相关文章

漫画:什么是 HTTPS 协议?

作者:小灰来源:程序员小灰什么是HTTP协议?HTTP协议全称Hyper Text Transfer Protocol,翻译过来就是超文本传输协议,位于TCP/IP四层模型当中的应用层。HTTP协议通过请求/响应的方式,在客户端和服务端之间进行…

DTCC 2020 | 阿里云张鑫:阿里云云原生异地多活解决方案

简介: 异地多活,顾名思义就是分布在异地多个站点同时对外提供服务,与传统灾备最主要的区别是“多活”里所有站点都是同时在对外提供服务的。在业务不断复杂化和容灾要求不断严格化的今天,如何实现云原生的异地多活解决方案&#x…

政企边缘安全,如何助您提升企业的“免疫力“?

简介: 在数字化进程中,政企会面临诸多在线化的挑战,一方面要求业务能够在线开放,同时也要求服务是稳定流畅可靠的,此外还要保证安全合规,这对业务开发及运营者提出了极高要求。1月6日,阿里云CDN…

在部队敲代码是一种什么样的体验?

作者 | 千鸟(网名) 小路助手开发者责编 | 晋兆雨出品 | CSDN(ID:CSDNnews)CSDN编者按:对于大多数人来说,大学毕业后选择一家满意的公司,一路升职加薪才是正解,但他却偏…

消息轨迹全景图详解-独门秘籍

简介: 消息轨迹全景图详解-独门秘籍 消息轨迹全景图详解-独门秘籍 消息轨迹全景图详解-独门秘籍 阿里云 IoT 企业物联网平台上线了消息轨迹全景图功能,帮助 IoT 开发者追踪消息通信的完整轨迹,快速分析和定位问题,及时恢复业务。…

元数据驱动的 SaaS 架构与背后的技术思考

简介: 在抽象能力以及沉淀了产品的基础上,把所承载和沉淀的业务能力快速输出,贡献给整个行业。 道冲而用之或不盈,渊兮似万物之宗。 —老子 引言 作为业务系统技术开发同学,面向当下: 首先应该是快速搭建业…

对 SolarWinds 事件更深的思考:如何防御供应链攻击

简介: 消灭企业安全体系中“隐秘的角落” ———— APT攻击愈演愈烈,与SolarWinds相关的安全反思已持续半月,阿里云安全带来了面向供应链攻击特征属性的全面攻防观察,以飨从业者。 ———— 后期精彩的APT内网对抗往往依赖于「先…

DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路

简介: 数据库将面临怎样的变革?云原生数据库与数据仓库有哪些独特优势?在日前的 DTCC 2020大会上,阿里巴巴集团副总裁、阿里云数据库产品事业部总裁、ACM杰出科学家李飞飞就《云原生分布式数据库与数据仓库系统点亮数据上云之路》…

Serverless 架构到底要不要服务器?

简介: Serverless 架构是不是就不要服务器了?回答这个问题,我们需要了解下 Serverless 是什么。 Serverless 是什么? Serverless 架构是不是就不要服务器了?回答这个问题,我们需要了解下 Serverless 是什…

腾讯开源之道:基于Apache之道的开源实践与探索

8月6日,腾讯开源联盟主席、腾讯云开源生态总经理单致豪在2021 ApacheCon Asia上分享了腾讯对Apache之道的思考、探索与实践的历程。 作为开源界备受关注的会议之一,今年的ApacheCon Asia将持续3天,开设14分论坛,内容覆盖从大数据…

Linux上的js解码,使用JavaScript实现Base64编码与解码

我们知道,浏览器的window对象提供有window.atob()和window.btoa()方法可以对字符串进行Base64编码和解码。console.log(window.btoa(window.atob(yanggb)));但是有些运行环境,比如nuxt的服务端环境没法使用window对象(window对象只有在浏览器的运行环境中…

​如何让技术想法更容易被理解?

简介: 沟通说起来简单,要做好却很难。如何把复杂的技术问题通俗易懂地表达出来,让别人听懂,是每个技术人都会面临的难题。本文作者以自身经历为背景,总结技术人员在日常技术交流过程中,遇到的一些低效的技术…

大数据,凉了?

大数据被誉为“新石油”,如何管理并洞悉数据的价值,是企业未来发展的核心竞争力。进入大数据时代,数据规模与日俱增。另一方面,数据仓库的市场份额被其他技术蚕食,比如大数据、机器学习和人工智能。这种趋势给我们造成…

2021 年前端趋势预测

简介: 2021 哪些前端技术值得关注?来听听狼叔的分享。 知乎上,有人提问《2021前端会有什么新的变化?》 狼叔的回答二天超过6.1万阅读量,目前444个赞同,2个专业徽章,整体上看,这篇回答…

详解 Flink 容器化环境下的 OOM Killed

简介: 本文将解析 JVM 和 Flink 的内存模型,并总结在工作中遇到和在社区交流中了解到的造成 Flink 内存使用超出容器限制的常见原因。由于 Flink 内存使用与用户代码、部署环境、各种依赖版本等因素都有紧密关系,本文主要讨论 on YARN 部署、…

哈哈!TCP泄露了操作系统信息···

作者:轩辕之风O来源: 编程技术宇宙前言大家好,我是轩辕。前几天,我在读者群里提了一个问题:这一下,大家总算停止了灌水(这群人都不用上班的,天天划水摸鱼),开…

android 自定义view控件,Android 自定义View——自定义View控件

Android给我们提供了大量的View控件,但这还是远远满足不了我们的要求,有时候开发所需要的控件形式是在Android提供的控件中是不存在,这就需要我们自己去定义一个。那么如何自定义控件?学习自定义控件,首先要先掌握Canv…

解读容器的 2020:寻找云原生的下一站

简介: “云原生”到底是什么?它就是容器和 Kubernetes 吗?虚拟机是云原生的吗?…… 2020 年注定是不凡的。它在阴霾中开始,在惊叹中结束,也让未来变得更加扑朔迷离。那么,容器与云原生的 2020 年…

如何用好云的弹性

简介: 如何用好云的弹性 1. 弹性为什么这么重要 做好弹性让IT能力轻松跟上用户的业务发展,做到多、快、好、省。 多:选择多,可以全球建站、机型选择也多、配套云服务也多。 快:部署快,自建IDC的建设时长以…

android笔试添加自定义服务,Android之Listview(item为单选题)自定义adapter,像考试时前面的10几道单选题的实现...

用于展现重复性的东西,Listview比较好用,看了别人的自定义Adapter(item是EditText,能够很好地获取到每一个item的EditText值)。又由于在做项目的需要,故特制了一个item包含RadioGroup的Listview的自定义Adapter。主要功能&#xf…