TiCDC 源码阅读(四)TiCDC Scheduler 工作原理解析
💡
原文中文,约8500字,阅读约需21分钟。
📝
内容提要
TiCDC的Scheduler模块由Coordinator和Agent两部分组成,它们使用两阶段调度机制实现表调度任务,以减少挪动表过程耗时,降低对同步延迟的影响。Coordinator维护Capture的状态,ReplicationSet跟踪一张表在多个Capture上的表同步单元的状态,并且根据收到的Checkpoint和ResolvedTs保证二者均不会退。通过上述内容,读者可以对TiCDC的Scheduler模块有一个基本的了解。
🎯
关键要点
- TiCDC的Scheduler模块由Coordinator和Agent两部分组成,使用两阶段调度机制实现表调度任务。
- Scheduler模块负责将Changefeed中的表分发到不同的TiCDC节点进行同步,维护表的同步进度。
- Coordinator是Scheduler的全局调度中心,负责发送表调度任务和维护同步状态。
- Agent接收表调度任务并汇报当前节点的表同步状态给Coordinator。
- Scheduler通过Add Table、Remove Table和Move Table三类任务来平衡TiCDC节点上的表数量。
- 表同步单元通过Table Pipeline实现,分为加载表和复制表两个部分。
- Coordinator和Agent之间通过gRPC实现peer-2-peer通信,交换Heartbeat和DispatchTable消息。
- Changefeed的同步进度由Checkpoint和ResolvedTs标识,Coordinator通过HeartbeatResponse收集同步进度信息。
- 两阶段调度机制降低了Move Table操作对同步延迟的影响,通过提前准备目标节点的数据。
- ReplicationSet用于跟踪表在多个Capture上的同步状态,维护表的真实同步状态。
- 表的状态包括Absent、Prepare、Commit、Replicating和Removing,反映表的加载和同步过程。
- Coordinator维护ReplicationSet记录表的同步状态,确保Checkpoint和ResolvedTs不会退回。
➡️