zhangqing
定时拉取平台活跃店铺方案
中台项目名修改
本文档使用 MrDoc 发布
-
+
首页
定时拉取平台活跃店铺方案
## 定时拉取平台活跃店铺方案 ## 背景 为在间隔时间内筛选出各个平台的活跃店铺,并将这些店铺进行不断更新替换,存储到指定的数据库当中,通过此文提供切实可行的方案。 ## 业务需求 开启定时器,每周6晚上2点执执行一次每次从ERP刊登任务表中扫描最近1个月使用过刊登功能的店铺查出店铺id 存储到db或es中。拿到店铺id循环调用调度中心添加定时拉取店铺在线商品的接口。 - 每次查询店铺id时,店铺idList 和上次一次的店铺idList做对比。上次与本次均存在的数据的跳出。 - 本次存在上次不存在的循环调用添加定时拉取店铺在线商品的接口。 - 上次存在本次不存在的idList调用调度中心取消定时拉取店铺在线商品的接口。 ## 方案 ### 方案一 YML文件中配置数据源和平台,数据库TIDB作为存储介质 1. 在tidb数据库中新建一张配置表,表字段包含平台id、平台名、数据库名、数据表名、分表数 2. yml配置数据源 3. 开启每周的定时任务,任务开启之后获取配置文件中配置的数据放入到list当中。 4. 新建一个公用sql.xml和mapper,xml中写一条sql查询最近两个月刊登的数据,表名和库名通过参数方式进行传入,返回值为店铺ID、companyID、platformId。 5. 循环每一个平台id,在循环的过程中传入对应平台的数据库名和表名,若该平台存在分表还需循环分表数次,查询到数据后,把所有分表中的数据都汇总丢入一个list当中。 6. 新建一张数据库表,做为存储介质,表字段为店铺ID、companyID、platformId、更新时间、创建时间、版本号。 7. 从数据库表中查询到当前platfromId对应的并且版本号最大的数据与ERP查询的数据进行比对, 8. 本次存在上次不存在的则循环调用定时拉取在线商品的接口。 9. 上次存在本次不存在的则调用取消定时拉取店铺在线商品的接口,并将上次存在的数据放入一个删除的list中。 10. 调用批量删除接口传入需要删除的list,进行删除。 ### 优缺点 - 使用yml进行配置若平台较多的话需要大量的配置,导致配置文件臃肿 - 使用mysql作为存储介质查询较方便。 # ### 方案二 TIDB中新建平台配置表,ES做为存储介质 1. 在tidb数据库中新建一张配置表,表字段包含平台id、平台名、数据库名、数据表名、分表数 2.yml配置数据源 3.从表中获取到平台的配置信息进行循环处理 4.新建一个公用sql.xml和mapper,xml中写一条sql查询最近两个月刊登的数据,表名和库名通过参数方式进行传入,返回值为店铺ID、companyID、platformId。 5.传入数据库名和表名和分页数进行获取数据。 6.获取的到数据进行对比,对比步骤和上面一致。 7.使用es作为存储介质。储存的数据为店铺ID、companyID、platformId、更新时间、创建时间、版本号。 8.筛选出需要删除的数据从es中进行删除。 ### 优缺点 - TIDB存储配置信息查询较方便,新增平台只需在数据库中增加一条记录就行。 - 使用es做为存储介质,性能较高,操作相对较复杂,且目前只有测试环境才有es,线上还需申请。 ### 数据库表 若在tidb中配置平台信息或作为存储介质所涉及到的表  ## 总结 以上方案可以灵活组成,比如配置文件写在TIDB,存储介质也放在TIDB,这样就只需要维护TIDB和yml中配置多数据源就行。具体还需根据实际业务进行选择。
zhangqing
2023年8月24日 18:12
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码