业务背景
由于公司业务需要,我们要把线上的交易数据实时同步到第三方应用。数据同步有三个基本要求:
- 尽可能接近实时的同步
- 同步的数据必须和我们线上数据库的数据一致
- 不能影响正常的交易
业务分析
为了满足以上业务场景,我们确实要考虑不少事情,我们来一一分析!!!
首先实时同步,实时同步只能同步接口的形式上送,甚至不能通过脚本的形式上送,那么剩下来只有两种方案了,要么改造原来接口同步上送,要么采用异步的形式上送。
其次数据一致,数据要想保持一致必须有重试机制。
最后不影响正常交易,既然要想不影响正常交易,同步的方式就不可取了,基于第二点的重试机制,这个时候使用消息队列是非常合适不过的。
技术选型
阿里云RocketMQ实现异步调用第三方接口。选用阿里云的Mq,我们就不用关心Mq的具体实现了,只需要关注我们自己的业务就好了。
技术调研
消息队列 MQ 是基于发布/订阅模型的消息系统。消费者,即消息的订阅方订阅关注的 Topic,以获取并消费消息。由于消费者应用一般是分布式系统,以集群方式部署,因此消息队列 MQ 约定以下概念:
- 集群:使用相同 Group ID 的消费者属于同一个集群。同一个集群下的消费者消费逻辑必须完全一致(包括 Tag
的使用)。详见订阅关系一致。 - 集群消费&#