带你读《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

相关文章
|
9月前
|
Java
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(1)
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(1)
|
9月前
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(3)
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(3)
|
9月前
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(2)
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(2)
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(2)
|
9月前
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(5)
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(5)
|
9月前
|
网络协议
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
带你读《2022技术人的百宝黑皮书》——性能优化之接口优化(2)
|
9月前
|
安全
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(6)
带你读《2022技术人的百宝黑皮书》——一种可灰度的接口迁移方案(6)
|
监控 前端开发 API
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(3)
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(3)
|
监控 前端开发 JavaScript
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(4)
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(4)
|
监控 前端开发 算法
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(6)
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(6)
|
监控 前端开发 JavaScript
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(5)
带你读《2022技术人的百宝黑皮书》——前端质量之灰度监控的有效实践(5)