关于分布式定时任务的优化多数据源

来源:1-1 学习指南

亦既见止

2024-01-08 14:17:02


问题描述:

es-job的封装消息记录实在一个表里,想封装成多数据源的形式,有什么思路吗

写回答

1回答

阿神

2024-01-11

如果想做分库分表 也可以,其实有更好的方式 就是不加事务 也能保证 消息 和 记录的 强一致性;


  1.  先写日志记录,记录状态待发送MQ消息
    2. 再写实际业务数据
    3. 异步同步MQ数据
    4. 结果返回OK之后,更新日志里的状态,已发送成功
    5. 最后靠定时任务去补偿日志记录里的待发送数据,去重试。

    PS: 1 和 2 顺序不能反了,反了就会导致 业务成功,日志没记录成功,这条数据就丢了。



  2. 另,多数据源的方案 也可以做, 但是你要用业务的数据ID做 hash,分库分表 路由到同一个库表;

0

Java架构师-技术专家

千万级电商项目从0到100全过程,覆盖Java程序员不同成长阶段的核心问题与解决方案

2672 学习 · 5839 问题

查看课程