Elasticsearch同步中间件&同步工具选择与实现

同步组件如何选

在需要用到Elasticsearch的时候,就离不开同步的问题,那如何选择Elasticsearch同步组件就是一个问题了。以我多年的经验,以及用了几个组件后的感受,我推荐大家不要用市面上开源的组件去同步Elasticsearch数据。比如从mongodb同步到Elasticsearch,有一款组件也是开源star比较高,规模也大,有官网,文档齐全。软件的确好,是基于mongodb副本集来同步的。但是最大的问题是和业务不太贴合,然后会消耗比较多的性能,对资源的消耗也是有的。所以对于需要控制成本的我们来说,自己写同步也许是最好的选择。

Elasticsearch同步组件的设计与实现

要同步数据,可以从两个方面入手,1是存量数据同步,2是增量数据和修改数据同步。

存量数据同步

这个实现很简单,就是根据id顺序遍历一遍数据库,然后查询结果同步到es就可以了

变动数据同步

根据不同源数据库的实现难度,可以读取数据增量日志,也可以在业务层做切片,数据有更改,就吧id传到mq,然后同步程序消费mq,然后查询源数据库来达到同步的目的。

postgresql使用逻辑复制来同步增量变动数据

postgresql在9.4版本后就有一个逻辑复制的功能,可以实现不同pgsql之间的逻辑复制,我们可以用这个功能去实现一个异构数据库的同步。具体的实现逻辑可以去搜索一下pgsql的逻辑复制的使用,一般来说,拿到逻辑复制的消息,会先丢入mq,这样会保险一些,防止消费过程中的一个消息丢失。

变动数据同步总结

看过很多同步的工具,特性其实都是需要利用mq来实现消息的消费是最可靠的,所以在实现的时候一定要留意消息丢失的可能

为什么不推荐使用开源工具来做数据库同步

首先,这同步只是很简单的一个功能,而开源市场工具太过于五花八门了,并没有一种非常官方权威的工具可以无脑选择。而自己造轮子不复杂,也就1~2个工作日能搞定,开源的代码比较繁重,且不一定能符合业务,像一些大公司开源出来的同步工具,文档其实是不详细的,你要自己去看源码,还不如写一份来的快,而且我看过了国内开源的同步工具,还真没几个很活跃的,而国外开源的工具,不可否认是有几个很不错的,文档也很详细,不过你要摸透这个工具,也得一段时间的文档阅读和实际操作熟悉,很有可能最后你发现这个工具不一定适合你的业务。而同步工具的种类实在太多了,很难一个一个去选择,最好的方法就是不选,自己造轮子。写最贴合业务场景的工具。

架构推荐

在这里插入图片描述

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值