canal kafka 模式 依然 会丢到 EventStore中 ,然后起一worker 线程 , 获取message ,send 给kafka ,确定消费binlog位置 。
感觉 为什么不放弃EventStore 直接交给 kafka呢 ,其实这一块 类似与生产者 消费者 队列的关系 ,消费者可以通过send batch size 数量到kafka 。
往前看 MysqlMultiStageCoprocessor disruptor 多阶段 消费设计真是惊讶到我了
/**
- 针对解析器提供一个多阶段协同的处理
- <pre>
- 网络接收 (单线程)
- 事件基本解析 (单线程,事件类型、DDL解析构造TableMeta、维护位点信息)
- 事件深度解析 (多线程, DML事件数据的完整解析)
- 投递到store (单线程)
- </pre>
- @author agapple 2018年7月3日 下午4:54:17
- @since 1.0.26
*/
设计方式1 , 4阶段 在一线程
设计方式2 , 4阶段 通过LinkedBlockingQueue 分割 模式
设计方式3 , 4阶段 通过 disruptor 多阶段协同
显然 阿里同学的这个设计 是值得学习的 。
网友评论