1.1 类图
整个日志管理器由接口 CanalLogPositionManager定义,主要定义两个方法:
- LogPosition getLatestIndexBy(String destination)
根据destination获取同步位点,即在Canal Instance 中同步进度是以源实例为最小维度的。
- void persistLogPosition(String destination, LogPosition logPosition)
持久化同步位点。
Canal 中提供了7种位点管理机制,分别如下:
- MemoryLogPositionManager
同步位点存储在内存中,即存放在 Map<String, LogPosition> positions 中,通常用于测试或结合其他位点管理,用来提高性能。
- ZooKeeperLogPositionManager
同步位点存储在zookeeper中,是主流的分布式存储方案。
- MetaLogPositionManager
Canal中的元数据存储方式,即位点信息与元数据存放在一起。
- MixedLogPositionManager
混合日志位点管理器,主要是内存与Zookeeper的混合方式,在存储位点时先存入内存&#x