带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(1)

简介: 带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(1)

一种可灰度的接口迁移方案

image.png作者:腿儿(曾臻)

image.png出品:大淘宝技术

 

 

在快速迭代的互联网背景下,系统为了实现快速上线,常常会选择最快的开发模式,例如我们常见的mvp版本迭代。大部分的业务系统对于未来业务的发展是不确定的,因此随着时间的推移,往往会遇到各种各样的瓶颈,例如系统性能、无法适配业务逻辑等问题,这时可能就涉及到系统架构的升级。系统升级往往包含最基础的两个部分: 接口迁移重构和数据迁移重构,在系统架构升级的过程中,最重要的是需要保证系统稳定性,即用户不感知。因此文本的目的是提供一种可灰度、回滚的设计思路,实现稳定的架构升级。

 

场景

 

在我们系统迭代过程中,往往涉及到重构、数据源切换、接口迁移等场景,为了保障系统平稳上线,因此在接口迁移过程中应该保证可回滚、可灰度。接口迁移可能也涉及到数据迁移,两者的先后顺序应该不影响到系统的稳定性。总结一下,接口迁移的目标:

 

  1. 可灰度,即使用新老接口是能够控制的。
  2. 可回滚,如使用新接口异常,能够快速回滚到老接口。
  3. 不入侵业务逻辑,不改动原来的业务逻辑代码,等迁移完毕后再整体下线,防止直接侵入修改造成不可逆的影响。
  4. 老接口在系统平稳运行后收口,即对老的数据源访问、老的接口能够平稳下线

 

迁移方案

 

本文主要为接口迁移和数据迁移提供了一种思路,在第3节里会有实践的核心代码实现。(代码只是提供思路,并不是能够直接运行的代码)

 

总体迁移方案

 

下图表示了接口迁移的思路,参考了cglib的jdk的代理方式。假设你有一个待迁移接口类(目标类),那么你需要重   新写一个代理类作为迁移后的接口。目标类和代理类的选择通过开关去控制,开关涉及到两个层面:

  1. 总开关:用于控制是否全量切换新接口,当接口迁移稳定上线 且 数据迁移完毕(如有)
  2. 灰度开关:可以设置一个灰度开关列表,用于控制你的那些接口/数据需要走代理接口

image.png

 

 

针对不同的接口逻辑,代理接口实现逻辑会有差异,具体场景如下文所述。

带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(2)https://developer.aliyun.com/article/1339610?groupCode=taobaotech

相关文章
|
自然语言处理 分布式计算 算法
淘宝用户体验VOC标签体系
淘宝用户体验VOC标签体系
1118 0
|
存储 JSON Ubuntu
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
Elasticsearch 是一款功能强大且功能丰富的搜索工具。本文将介绍一种小众的数据类型 Percolator ,同时介绍Percolate query的使用。 您需要基本了解 Elasticsearch,尤其是mapping和search。
7263 0
Elasticsearch:理解 Percolator 数据类型及 Percolate 查询
|
存储 Kubernetes 数据可视化
|
设计模式 移动开发 IDE
淘宝短视频流工程重构(上):理论篇
淘宝短视频流工程重构(上):理论篇
309 7
|
数据可视化 开发工具 开发者
拥抱低代码/无代码运动:加速数字化转型
【10月更文挑战第30天】低代码/无代码(LCNC)平台正成为数字化转型的重要推动力。通过简化开发流程,LCNC平台使非技术用户也能构建应用程序,显著加速了从概念到部署的时间。本文探讨了LCNC平台的核心优势、关键工具及其对企业数字化进程的助力。
|
SQL 存储 安全
元数据驱动架构的官方数据空间设计(上)
元数据驱动架构的官方数据空间设计(上)
2263 1
|
存储 数据采集 canal
直连同步与分布式同步相比,有哪些差异?
【6月更文挑战第18天】直连同步与分布式同步相比,有哪些差异?
269 3
|
数据采集 设计模式 自然语言处理
设计模式最佳套路2 —— 愉快地使用管道模式
管道模式(Pipeline Pattern) 是责任链模式(Chain of Responsibility Pattern)的常用变体之一。在管道模式中,管道扮演着流水线的角色,将数据传递到一个加工处理序列中,数据在每个步骤中被加工处理后,传递到下一个步骤进行加工处理,直到全部步骤处理完毕。 PS:纯的责任链模式在链上只会有一个处理器用于处理数据,而管道模式上多个处理器都会处理数据。
13362 0
设计模式最佳套路2 —— 愉快地使用管道模式
|
存储 数据采集 消息中间件
初探分布式链路追踪(上)
初探分布式链路追踪(上)
512 2
|
存储 设计模式 算法
如何在业务代码中优雅地使用责任链模式
如何在业务代码中优雅地使用责任链模式
417 1