上一章我们讲了删除、TTL、可见性和 Compaction。
这些机制都围绕一个核心事实展开:
Milvus 的写入状态以 WAL 为源头。Insert、Delete、DDL、DCL、TimeTick、Flush、事务消息,都会进入 WAL 或由 WAL 系统生成。
到了第 21 章,我们把视角从单个集群扩展到多个集群:
如果一个 Milvus 集群的 WAL 已经记录了所有写入, 能不能把这些 WAL 消息复制到另一个 Milvus 集群, 让另一个集群逐步得到同样的数据和元数据状态?这就是本章要讲的 Replication 与 CDC。
这里的 CDC 可以理解为 Change Data Capture,也就是捕获源集群里的变更消息,并把它们传给目标集群。
Milvus 当前这套复制模型不是传统数据库的双主写入,也不是多个集群任意互相同步。
它采用的是一个更受控的模型:
一个 PRIMARY 集群负责接受写入。 一个或多个 SECONDARY 集群接收 PRIMARY 的 WAL 消息。 复制按 PChannel 维度进行。本章会从源码角度拆解这条链路:
UpdateRepli