[TD-2522] fix: fix some typo in taos.cfg, fix convertor compliance for replica-ch

This commit is contained in:
Shuduo Sang 2020-12-22 19:35:03 +08:00
parent ceddd34072
commit 82a7049afe
1 changed files with 8 additions and 8 deletions

View File

@ -30,7 +30,7 @@ TDengine里存在vnode, mnode, vnode用来存储时序数据mnode用来存储
- master 具有最新的数据容许客户端往里写入数据一个虚拟节点组至多一个master. - master 具有最新的数据容许客户端往里写入数据一个虚拟节点组至多一个master.
- slave与master是同步的但不容许客户端往里写入数据根据配置可以容许客户端对其进行查询。 - slave与master是同步的但不容许客户端往里写入数据根据配置可以容许客户端对其进行查询。
- unsynced: 节点处于非同步状态,比如虚拟节点刚启动、或与其他虚拟节点的连接出现故障等。处于该状态时,该虚拟节点既不能提供写入,也不能提供查询服务 - unsynced: 节点处于非同步状态,比如虚拟节点刚启动、或与其他虚拟节点的连接出现故障等。处于该状态时,该虚拟节点既不能提供写入,也不能提供查询服务
- offline: 由于宕机或网络原因无法访问到某虚拟节点时其他虚拟节点将该虚拟节点标为离线。但请注意该虚拟节点本身的状态可能是unsynced或其他但不会是离线。 - offline: 由于宕机或网络原因无法访问到某虚拟节点时其他虚拟节点将该虚拟节点标为离线。但请注意该虚拟节点本身的状态可能是unsynced或其他但不会是离线。
**Quorum:** **Quorum:**
@ -83,10 +83,10 @@ TDengine采取的是Master-Slave模式进行同步与流行的RAFT一致性
如果一个虚拟节点(vnode A)检测到与同一虚拟节点组内另外一虚拟节点vnode B的连接中断vnode A将立即把vnode B的role设置为offline。无论是接收到另外一虚拟节点发来的status消息还是检测与另外一虚拟节点的连接中断该虚拟节点都将进入状态处理流程。状态处理流程的规则如下 如果一个虚拟节点(vnode A)检测到与同一虚拟节点组内另外一虚拟节点vnode B的连接中断vnode A将立即把vnode B的role设置为offline。无论是接收到另外一虚拟节点发来的status消息还是检测与另外一虚拟节点的连接中断该虚拟节点都将进入状态处理流程。状态处理流程的规则如下
1. 如果检测到在线的节点数没有超过一半则将自己的状态设置为unsynced. 1. 如果检测到在线的节点数没有超过一半则将自己的状态设置为unsynced.
2. 如果在线的虚拟节点数超过一半会检查master节点是否存在如果存在则会决定是否将自己状态改为slave或启动数据恢复流程 2. 如果在线的虚拟节点数超过一半会检查master节点是否存在如果存在则会决定是否将自己状态改为slave或启动数据恢复流程
3. 如果master不存在则会检查自己保存的各虚拟节点的状态信息与从另一节点接收到的是否一致如果一致说明节点组里状态已经稳定一致则会触发选举流程。如果不一致说明状态还没趋于一致即使master不存在也不进行选主。由于要求状态信息一致才进行选举每个虚拟节点根据同样的信息会选出同一个虚拟节点做master无需投票表决。 3. 如果master不存在则会检查自己保存的各虚拟节点的状态信息与从另一节点接收到的是否一致如果一致说明节点组里状态已经稳定一致则会触发选举流程。如果不一致说明状态还没趋于一致即使master不存在也不进行选主。由于要求状态信息一致才进行选举每个虚拟节点根据同样的信息会选出同一个虚拟节点做master无需投票表决。
4. 自己的状态是根据规则自己决定并修改的并不需要其他节点同意包括成为master。一个节点无权修改其他节点的状态。 4. 自己的状态是根据规则自己决定并修改的并不需要其他节点同意包括成为master。一个节点无权修改其他节点的状态。
5. 如果一个虚拟节点检测到自己或其他虚拟节点的role发生改变该节点会广播它自己保存的各个虚拟节点的状态信息role和version). 5. 如果一个虚拟节点检测到自己或其他虚拟节点的role发生改变该节点会广播它自己保存的各个虚拟节点的状态信息role和version)
具体的流程图如下: 具体的流程图如下:
@ -124,7 +124,7 @@ TDengine采取的是Master-Slave模式进行同步与流行的RAFT一致性
如果一虚拟节点(vnode B) 处于unsynced状态master存在vnode A)而且其版本号比master的低它将立即启动数据恢复流程。在理解恢复流程时需要澄清几个关于文件的概念和处理规则。 如果一虚拟节点(vnode B) 处于unsynced状态master存在vnode A)而且其版本号比master的低它将立即启动数据恢复流程。在理解恢复流程时需要澄清几个关于文件的概念和处理规则。
1. 每个文件无论是archived data的file还是wal)都有一个index, 这需要应用来维护(vnode里该index就是fileId*3 + 0/1/2, 对应data, head与last三个文件。如果index为0表示系统里最老的数据文件。对于mnode里的文件数量是固定的对应于acct, user, db, table等文件。 1. 每个文件无论是archived data的file还是wal)都有一个index, 这需要应用来维护(vnode里该index就是fileId*3 + 0/1/2, 对应data, head与last三个文件。如果index为0表示系统里最老的数据文件。对于mode里的文件数量是固定的对应于acct, user, db, table等文件。
2. 任何一个数据文件(file)有名字、大小还有一个magic number。只有文件名、大小与magic number一致时两个文件才判断是一样的无需同步。Magic number可以是checksum, 也可以是简单的文件大小。怎么计算magic换句话说如何检测数据文件是否有效完全由应用决定。 2. 任何一个数据文件(file)有名字、大小还有一个magic number。只有文件名、大小与magic number一致时两个文件才判断是一样的无需同步。Magic number可以是checksum, 也可以是简单的文件大小。怎么计算magic换句话说如何检测数据文件是否有效完全由应用决定。
3. 文件名的处理有点复杂因为每台服务器的路径可能不一致。比如node A的TDengine的数据文件存放在 /etc/taos目录下而node B的数据存放在 /home/jhtao目录下。因此同步模块需要应用在启动一个同步实例时提供一个path这样两台服务器的绝对路径可以不一样但仍然可以做对比做同步。 3. 文件名的处理有点复杂因为每台服务器的路径可能不一致。比如node A的TDengine的数据文件存放在 /etc/taos目录下而node B的数据存放在 /home/jhtao目录下。因此同步模块需要应用在启动一个同步实例时提供一个path这样两台服务器的绝对路径可以不一样但仍然可以做对比做同步。
4. 当sync模块调用回调函数getFileInfo获得数据文件信息时有如下的规则 4. 当sync模块调用回调函数getFileInfo获得数据文件信息时有如下的规则
@ -212,10 +212,10 @@ Arbitrator的程序tarbitrator.c在复制模块的同一目录, 编译整个系
相同之处: 相同之处:
- 三大流程一致Raft里有Leader election, replication, safety完全对应TDengine的选举、数据转发、数据恢复三个流程 - 三大流程一致Raft里有Leader election, replication, safety完全对应TDengine的选举、数据转发、数据恢复三个流程
- 节点状态定义一致Raft里每个节点有Leader, Follower, Candidate三个状态TDengine里是Master, Slave, Unsynced, Offline。多了一个offlince, 但本质上是一样的因为offline是外界看一个节点的状态但该节点本身是处于master, slave 或unsynced的 - 节点状态定义一致Raft里每个节点有Leader, Follower, Candidate三个状态TDengine里是Master, Slave, Unsynced, Offline。多了一个offlince, 但本质上是一样的因为offline是外界看一个节点的状态但该节点本身是处于master, slave 或unsynced的
- 数据转发流程完全一样Master(leader)需要等待回复确认。 - 数据转发流程完全一样Master(leader)需要等待回复确认。
- 数据恢复流程几乎一样Raft没有涉及历史数据同步问题只考虑了WAL数据同步 - 数据恢复流程几乎一样Raft没有涉及历史数据同步问题只考虑了WAL数据同步
不同之处: 不同之处:
@ -226,7 +226,7 @@ Arbitrator的程序tarbitrator.c在复制模块的同一目录, 编译整个系
## Meta Data的数据复制 ## Meta Data的数据复制
TDengine里存在时序数据也存在Meta Data。Meta Data对数据的可靠性要求更高那么TDengine设计能否满足要求呢下面做个仔细分析 TDengine里存在时序数据也存在Meta Data。Meta Data对数据的可靠性要求更高那么TDengine设计能否满足要求呢下面做个仔细分析
TDengine里Meta Data包括以下 TDengine里Meta Data包括以下