作者|顾欣

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

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

业界传统灰度发布

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

1. 蓝绿发布

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

图 1  蓝绿部署

2. 滚动发布

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

图 2  滚动发布

3. 灰度发布

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

图 3  灰度发布

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

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

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

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

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

图 4  工行全链路灰度流程

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

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

1)软负载灰度流量分发

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

图 5  软负载灰度路由

2)服务框架灰度路由

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

图 6  服务框架灰度路由

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

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

图 7  灰度标识透明传递

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

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

图 8  灰度降级

3. 总结

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

未来展望

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

想要加入中生代架构群的小伙伴,请添加群合伙人大白的微信

申请备注(姓名+公司+技术方向)才能通过哦!

阿里技术精彩文章推荐

往期推荐

深度:揭秘阿里巴巴的客群画像

多隆:从工程师到阿里巴巴合伙人

阿里技术专家楚衡:架构制图的工具与方法论

蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点

阿里文娱技术专家战獒: 领域驱动设计详解之What, Why, How?

阿里专家马飞翔:一文读懂架构整洁之道

阿里专家常昊:新人如何上手项目管理?

蚂蚁集团沈凋墨:Kubernetes-微内核的分布式操作系统

阿里合伙人范禹:常挂在阿里技术人嘴边的四句土话

阿里技术专家都铎:一文搞懂技术债

支付宝研究员兼OceanBase总架构师杨传辉:我在数据库梦之队的十年成长路

阿里技术专家麒烨:修炼测试基本功

阿里计算平台掌门人贾扬清:我对人工智能方向的一点浅见

蚂蚁资深算法专家周俊:从原理到落地,支付宝如何打造保护隐私的共享智能?

阿里高级技术专家箫逸:如何画好一张架构图?

阿里高级技术专家张建飞:应用架构分离业务逻辑和技术细节之道

蚂蚁科技 Service Mesh 落地实践与挑战 | GIAC 实录

阿里6年,我的技术蜕变之路!

蚂蚁集团涵畅:再启程,Service Mesh 前路虽长,尤可期许

阿里P9专家右军:大话软件质量稳定性

阿里合伙人程立:阿里15年,我撕掉了身上两个标签

阿里高工流生 | 云原生时代的 DevOps 之道

阿里高级技术专家邱小侠:微服务架构的理论基础 - 康威定律

阿里P9专家右军:以终为始的架构设计

阿里P8架构师:淘宝技术架构从1.0到4.0的架构变迁!12页PPT详解

阿里技术:如何画出一张合格的技术架构图?

蚂蚁资深技术专家王旭:开源项目是如何让这个世界更安全的?

阿里资深技术专家崮德:8 个影响我职业生涯的重要技能

阿里儒枭:我看技术人的成长路径

阿里高级技术专家宋意:平凡人在阿里十年的成长之旅

阿里技术专家甘盘:浅谈双十一背后的支付宝LDC架构和其CAP分析

阿里技术专家光锥:亿级长连网关的云原生演进之路

阿里云原生张羽辰:服务发现技术选型那点事儿

蚂蚁研究员玉伯:做一个简单自由有爱的技术人

阿里高级技术专家至简: Service Mesh 在超大规模场景下的落地挑战

阿里巴巴山猎:手把手教你玩转全链路监控

阿里涉江:你真的会学习吗?从结构化思维说起

蚂蚁金服资深技术专家经国:云原生时代微服务的高可用架构设计

   END
#架构师必备#点分享点点赞点在看

工商银行顾欣:分布式全链路灰度发布的探索与实践相关推荐

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

    简介:在分布式系统中,由于分布式全链路灰度发布因其链路复杂.技术门槛高.落地难度高逐渐成为金融科技实现全链路灰度发布的难点所在.工行在分布式系统建设方面一直走在同业前列,积极探索分布式全链路灰度发布, ...

  2. Spring Cloud全链路灰度发布

    一.前言 实际生产中如有需求变更,并不会直接更新线上服务,最通常的做法便是:切出线上的小部分流量进行体验测试,经过测试后无问题则全面的上线.这样做的好处也是非常明显,一旦出现了BUG,能够保证大部分的 ...

  3. SpringCloud Nacos 实现全链路灰度发布

    实际生产中如有需求变更,并不会直接更新线上服务,最通常的做法便是:切出线上的小部分流量进行体验测试,经过测试后无问题则全面的上线. 这样做的好处也是非常明显,一旦出现了BUG,能够保证大部分的客户端正 ...

  4. 服务百万商家的系统,发布风险如何规避?微盟全链路灰度实践

    一分钟精华速览 全链路灰度发布是指在微服务体系架构中,应用的新.旧版本间平滑过渡的一种发布方式.由于微服务之间依赖关系错综复杂,一次发布可能会涉及多个服务升级,所以在发布前进行小规模的生产环境验证,让 ...

  5. 掌门1对1微服务体系Solar第1弹:全链路灰度蓝绿发布智能化实践

    掌门教育自2014年正式转型在线教育以来,秉承"让教育共享智能,让学习高效快乐"的宗旨和愿景,经历云计算.大数据.人工智能.AR/VR/MR以及现今最火的5G,一直坚持用科技赋能教 ...

  6. 基于 Istio 的全链路灰度方案探索和实践

    作者|曾宇星(宇曾) 审核&校对:曾宇星(宇曾) 编辑&排版:雯燕 背景 微服务软件架构下,业务新功能上线前搭建完整的一套测试系统进行验证是相当费人费时的事,随着所拆分出微服务数量的不 ...

  7. 苏宁金融App全链路灰度实践

    背景 \\ 在这个移动互联网日渐成熟的今天,手机端流量占比高达85%.大家为了抢夺用户手机屏幕上的一席之地,杀成红海,产品的极限飙车.急速迭代.整个系统的日趋复杂可是研发时间一再压缩,变成了移动产品质 ...

  8. 企业深入使用微服务后会面临哪些问题?云原生全链路灰度给了新思路

    作者:魁予.十眠 如何落地可灰度.可观测.可回滚的安全生产三板斧能力,满足业务高速发展情况下快速迭代和小心验证的诉求,是企业在微服务化深入过程中必须要面对的问题.在云原生流行的当下,这个问题又有了一些 ...

  9. 全链路灰度这样做,新需求迭代上线也能放心干饭

    作者:泮圣伟(十眠) 概要 ​全链路灰度是微服务最核心的功能之一,也一直是云上客户在微服务化深入过程中必须具备的功能.全链路灰度因为涉及到的技术.场景众多,如果云上企业一一自己实现,需要花费大量人力成 ...

最新文章

  1. centos的ssh配置
  2. pyqt5从子目录加载qrc文件_【JVM系统学习之路】一篇看懂类加载
  3. pyecharts学习(part1)--绘制图表的三种方式
  4. [转]2006年十二星座运程 目录
  5. 垃圾回收机制GC知识再总结兼谈如何用好GC(转)
  6. 如何把DEBIAN变成UBUNTU-DESKTOP最少化安装
  7. java JDK 8 官网下载网址/清华镜像/华为镜像
  8. 苹果4计算机错误怎么办,苹果刷机失败卡在恢复模式怎么办?
  9. python工具脚本,网站广告违禁词检测脚本源码
  10. UML用例图-软件需求分析与设计(很详细,很详细,很详细)
  11. Trophy Skin大排灯嫩肤仪是个小宝藏没错了
  12. 7-5 冒泡法排序(20 分)
  13. 学术不端网查重靠谱吗_学术不端网知网查重万方哪一个权威
  14. 重磅!华为搜索引擎面世
  15. 2021天梯赛总决赛-L2-4 哲哲打游戏
  16. 有没有你家?贵阳七村拟入选全省乡村旅游重点村名录
  17. RGB、YUY2、YUYV、YVYU、UYVY、AYUV、YUV444、YUV422、YUV420、YUV411
  18. i9 12900k配什么主板 酷睿i9 12900k配什么显卡
  19. C4DR25版本下载C4DR25版本下载安装教程
  20. 【在人间】关于网吧的记忆

热门文章

  1. 转载:Eb/No和SNR的区别
  2. 游戏人工智能——A*寻路算法实践
  3. [转]百度UEditor编辑器(php)
  4. 百度贴吧BDUSS获取器
  5. wro4j:Java Web资源压缩
  6. Malloc for kernel output failed, Memory isnt enough
  7. 面试必备之volatile
  8. 密码学1: 对称加密体系
  9. 给创维电视装鸿蒙,只需简单几步,创维老电视瞬间变超清智能电视!
  10. ubuntu18.04分辨率只有1024*768,解决方案和踩坑梳理(应该适用其他ubuntu版本)