Canal探究( 三 )
destination的消费问题一个destination无法被多个client直接并行消费 , 解决方案:
- client收到消息以后转发到kafka或者MQ中 , 后继的其他Consumer只与kafka或者MQ接入
- 一个Canal中使用多个destination , 它们对应相同的MySQL源
【Canal探究】
对于canal设计的一些思考
- 对于canal的高可用 , 通过zk保证server和client同一时间只能有一个节点工作server能不能根据数据id进行分片读取 , 提高读取数据的性能 , 类似kafka的设计 , 应该是不能的 。 因为parser向master发起dump请求得到的是字节流 , 无法获取原始数据 。 那能不能一个parser对应多个sink再放入store 。 没必要 , 因为canal的性能瓶颈在canal与数据库的网络IO , 解析及sink是很快的 。 客户端能不能多个节点同时工作 , 从一个destination消费数据 。 如果不保证数据成功消费及有序性是可以的 。 如果某一client消费数据失败 , 当前store的设计(环形结构保存数据)无法做到回滚 。 如果一个destination分多个队列由client消费 , 只能保证数据局部有序 , 同时设计复杂 。
- 当前store的数据保存在内存中 , 是否有必要持久化到文件类似于logstash的数据也是保存在内存中 , 官方文档说会支持 , 但没有也可以 , 因为持久化会影响整体性能 , 通过zk存储client的消费位置会保证数据至少被消费一次 。
- store保存的数据受到大小和条数的限制 , 当达到限制时 , sink会堵塞parser , 不会撑爆内存
- canal与logstahs , kafka的一些比较
- 支持多种配置方式如配置文件 , http , 并可动态生效
- 通过协调服务保证系统的高可用
- 暴露服务监控指标至prometheus
- 获取数据的方式:达到一定数量或时间
- iOS虚拟定位技术探究
- 博览会|数字版权产业“蛋糕”有多大?明天成都这场博览会上一探究竟!
- 究竟|超市食品背后的标签上到底隐藏着些什么?广元市场监管带您一探究竟!
- 未来|探究丨滴滴x比亚迪=D1∞也许是计算未来出行的公式之一
- K30S至尊纪念版手机|探究K30S至尊版动态刷新率调整机制时,我发现了一个秘密
- 正则表达式性能优化的探究
- 这也太吊了吧,大神详解Redis——持久化原理探究
- 探究 | 谁再说Redis慢,我跟谁急
- Canalys公布Q3国内手机出货量 小米逆势增长排名第四
- 小米新品木星黎明积木 六足泰坦,AR黑科技,开箱来一探究竟
