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

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

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


仓储层代理

 

如果走了代理类,那么逻辑都会被转发到ProxyManager,由代理类管理器来负责数据的分发、去重、合并、更 新、插入等操作。

 

image.png单条数据查询

代理查询流程图如下图所示,目标接口的目标方法会通过代理被切面拦截掉,切面判断是否需要走代理接口

 

 

  1. 如果不需要走代理接口(即数据源是老的并且未被灰度),则继续走目标接口
  2. 如果需要走代理接口(即数据源是新的或者老数据迁移后在灰度列表内),则调用代理接口方法,在代理接口方法中会对仓储层逻辑进行进一步的转发,由ProxyManager统一进行收口。在单条数据的查询逻辑里,只需 要调用代理仓储层服务查询新数据源就可以了,逻辑比较简单。
  3. image.png

 例如单个门店的信息查询,那么我们核心控制器ProxyManager方法逻辑就可以这么实现:

public <T> T getById(Long id, Boolean enableProxy) {
if (enableProxy) {
// 开启代理,就走代理仓储层的查询服务return proxyRepository.getById(id);
} else {
// 没开启代理,走原来仓储层的服务return targetRepository.getById(id);
}

image.png多条数据查询+去重

多条数据的去重逻辑是一样,去重规则如下:

  1. 新表、老表都不存在,数据剔除,不反回结果。
  2. 新表没有,使用老表数据的信息。
  3. 老表没有,使用新表数据的信息。
  4. 老表、新表都存在数据(迁移完成),此时判断总控是否打开,以及数据是否在灰度名单,满足其一使用新表数据;否则使用老表数据

 

基于以上去重逻辑,所有的查询接口都可以抽象成统一的方法

  1. 查询老数据,业务定义,用supply函数封装查询逻辑
  2. 查询新数据,业务定义,用supply函数封装查询逻辑
  3. 合并去重,抽象出统一的合并工具

 

核心的流程如下图所示,目标接口的目标方法都会被切面拦截,转发到代理接口。代理接口在调用数据源的地方可以进一步转发给ProxyManager进行查询&合并。如果总开关未开启,说明全量数据还没有迁移验证完毕,那么还  是需要查老的数据源(防止数据遗漏)。如果开关开启了,则说明迁移完成,此时不会再调用原来的仓储层服务, 达到了对老的数据源收口的目的。

image.png

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

相关文章
|
供应链 前端开发 算法
技术人应该知道的电商运营小知识(上)
技术人应该知道的电商运营小知识(上)
720 0
|
存储 设计模式 算法
DDD之于业务支撑的意义
DDD之于业务支撑的意义
346 0
|
4月前
|
存储 Java 数据库连接
简单学Spring Boot | 博客项目的三层架构重构
本案例通过采用三层架构(数据访问层、业务逻辑层、表现层)重构项目,解决了集中式开发导致的代码臃肿问题。各层职责清晰,结合依赖注入实现解耦,提升了系统的可维护性、可测试性和可扩展性,为后续接入真实数据库奠定基础。
412 0
|
数据采集 Java 测试技术
精准测试如何落地
在快速迭代的软件开发环境中,精准测试作为一种高效、针对性的测试方法,正逐步成为企业的首选。本文探讨了精准测试的落地方法、对质量指标的影响、数据统计与跟踪度量、提高投入产出收益率的策略及卡点数据的具体内容。通过优化测试用例、代码关联、技术融合及流程优化,精准测试能够显著提升软件质量和测试效率。
|
存储 SQL 缓存
AnalyticDB 实时数仓架构解析
AnalyticDB 是阿里云自研的 OLAP 数据库,广泛应用于行为分析、数据报表、金融风控等应用场景,可支持 100 trillion 行记录、10PB 量级的数据规模,亚秒级完成交互式分析查询。本文是对 《 AnalyticDB: Real-time OLAP Database System at Alibaba Cloud 》的学习总结。
306 1
|
SQL 存储 数据挖掘
快速入门:利用AnalyticDB构建实时数据分析平台
【10月更文挑战第22天】在大数据时代,实时数据分析成为了企业和开发者们关注的焦点。传统的数据仓库和分析工具往往无法满足实时性要求,而AnalyticDB(ADB)作为阿里巴巴推出的一款实时数据仓库服务,凭借其强大的实时处理能力和易用性,成为了众多企业的首选。作为一名数据分析师,我将在本文中分享如何快速入门AnalyticDB,帮助初学者在短时间内掌握使用AnalyticDB进行简单数据分析的能力。
544 2
|
存储 运维 架构师
架构之道:人人都是架构师(1)
架构之道:人人都是架构师
521 8
|
数据挖掘
技术人应该知道的电商运营小知识(中)
技术人应该知道的电商运营小知识(中)
390 1
|
Java 中间件 Maven
如何实现Java类隔离加载?
Java 开发中,如果不同的 jar 包依赖了某些通用 jar 包的版本不一样,运行时就会因为加载的类跟预期不符合导致报错。如何避免这种情况呢?本文通过分析 jar 包产生冲突的原因及类隔离的实现原理,分享两种实现自定义类加载器的方法。
如何实现Java类隔离加载?
|
存储 设计模式 算法
如何在业务代码中优雅地使用责任链模式
如何在业务代码中优雅地使用责任链模式
378 1