bin-log-distributor消费数据丢失问题解决记录
bin-log-distributor项目简介 bin-log-distributor是凯京科技开源的Mysql数据库数据变动实时监听分发中间件,详情见码云开源地址, github开源地址 背景 线上反馈有bin-log-distributor客户端偶尔有丢失数据的情况。 验证方法 在装mysql的服务器上,使用多个线程并发循环对bin-log-distributor监控的数据表进行增、删、改。 预期 bin-log-distributor客户端出现数据丢失。 定位 分析客户端收到的数据,发现不仅有数据丢失,还有数据重复消费。将客户端日志打印更仔细,发现以下两点问题: 从redis队列peek数据后,remove抛出如下异常: Redis队列数据没消费完其他线程异常进行了消费: 分析如下消费redis数据方法源码: private void doRunWithLock() { RLock rLock = redissonClient.getLock(dataKeyLock); EventBaseDTO dto; try { RQueue<EventBaseDTO> queu...