数据复制模块的基本工作原理

TDengine采取的是Master-Slave模式进行同步,与流行的RAFT一致性算法比较一致。总结下来,有几点:

  1. 一个vgroup里有一到多个虚拟节点,每个虚拟节点都有自己的角色
  2. 客户端只能向角色是master的虚拟节点发起数据更新操作,因为master具有最新版本的数据,如果向非Master发起数据更新操作,会直接收到错误
  3. 客户端可以向master, 也可以向角色是Slave的虚拟节点发起查询操作,但不能对unsynced的虚拟节点发起任何操作
  4. 如果master不存在,这个vgroup是不能对外提供数据更新和查询服务的
  5. master收到客户端的数据更新操作时,会将其转发给slave节点
  6. 一个虚拟节点的版本号比master低的时候,会发起数据恢复流程,成功后,才会成为slave

数据实时复制有三个主要流程:选主、数据转发、数据恢复。后续做详细讨论。