MYSQL如何实现将数据同步到ES?
这个问题既要考虑到既能保持数据一致性,又能够保证实时性的一个解决方案
三种方式:
- 最直接的就是在业务代码中去实现双写,也就是说每一次修改MySQL数据的时候,同时更新到ES中,注意: 这种方法耦合度很高,一旦发生需求变更会有额外的一个维护成本.
- 使用消息队列: 异步数据同步,数据发生变更的时候,触发一个MQ消息,消费端去订阅这个消息,把数据同步到ES中,相对于双写来说降低了系统的耦合度,同时有了可靠性消息队列作为保障,还能够在数据同步失败的时候自动重试. 只不过需要 **引入第三方组件,**额外的增加了系统的复杂度
- 通过阿里开源的Cannal组件,去监听binlog中的日志,去捕获数据变更的事件,并实时 推送存储到ES中,这种方式和MQ的实现方式有点类似,但是 不需要切入到业务系统中,灵活性更高
总结:
需要综合考虑业务需求,和系统架构以及数据量 Cannal和MQ的实时性和稳定性都比较不错
标签:同步,Cannal,耦合度,MQ,MYSQL,数据,ES From: https://blog.csdn.net/qq_46603351/article/details/140751602