canal的客户端是不是只能被一个抢占执行?这样大数据量可能会把客户端整挂。

小99 发布于 2018/11/22 09:38
阅读 144
收藏 0

线上有两个canal server,注册到一个zk上面,一个canal客户端链接zk获取这两个canal server的数据,由于canal的机制问题,他得客户端是抢占式的,一个客户端抢到后,即使你部署客户端集群,另外的那些也处于备份状态,不执行,只有一个客户端挂掉,其他的才替补上来继续执行。

问:如果一个客户端根本就承受不了canal server过来的数据,那该怎么办,有大神实战经验分享一下能否把压力均摊吗?

我们目前的方式:做一个mysql数据库表,监听到canal server数据后,入库,标记数据未处理,然后每10秒跑一次后标记已处理,这样来进行的削峰处理。

还有一种想到的是,canal客户端接收数据啥也不做直接转发到MQ里面,然后多个消费端进行并行消费进行削峰处理。

其实已上两种方案都没有解决canal客户端单点执行的问题,只是缓解,没有根治。有大神给出出对策吗?

加载中
0
mickelfeng
mickelfeng

第二种方案好一些

返回顶部
顶部