
1. Logstash 实现ES 与数据库同步:
使用定时器(使用sql 定时的去查询数据进行同步)、实现方式比较简单。
2. MQ 实现 ES 与数据库同步:
实时性,消息放到MQ中,消费者会自动的消费,复杂性更高。
MQ方式保持数据一致性比较强,因为MQ能够自动重试、补偿。而logstash无法实现补偿、重试。
3. MySQL与ES的同步插件ElasticSearch-JDBC:
无法灵活的添加数据,比如你对添加进mysql中的数据进行一些聚合,查询等操作之后,再添加到es,这种操作插件很难实现。
4. 使用多线程代码实现,在进行MySQL的CRUD之后,开启一个线程,异步去调用ES的CRUD操作:
比较容易实现,但是实时性不强,容错率低。
推荐方案:第二种,因为在MQ不丢失消息的前提下,MQ可以做到高可用和信息的持久化,很难出现消费端添加失败的情况,失败了也可以通过日志记录后处理。
来源:oschina
链接:https://my.oschina.net/jacklinnn/blog/3192388