Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • hostname
  • 单机配置项
  • Coordinator 服务端口
  • 共识协议服务端口
  • PartitionNode ConfigNode 列表 List<hostname:clusterPort>(不需要写全,DataNode 能够访问一个活跃的 PartitionNode ConfigNode 即可)


启动流程

  • 读取本地数据信息(VSG/MManager)
  •  PartitionNode  ConfigNode 汇报本节点硬件信息和数据负载,加入集群并检查 DataNode 内的数据是否有效,PartitionNode 内的数据是否有效,ConfigNode 进行如下检查
    • PartitionNode ConfigNode 识别该 DataNode 是否已在集群中
      • 如果不在集群中,进行扩容操作,调整每个存储组的最大 VSG 个数,改为当前集群总核数/副本数,并创建新的 VSG
      • 如果已在集群中,记录节点信息
    • 触发负载均衡策略
  • 如果本节点的 VSG/MManager 已在某共识组内且有效,恢复共识组,并向 PartitionNode ConfigNode 汇报恢复的共识组


停掉 DataNode


停机流程


  • PartitionNode ConfigNode 共识组汇报此 DataNode A 即将停机
  • PartitionNode ConfigNode 记录此信息,后续请求避免路由到此节点
  • 此 DataNode 共识组记录此信息
  • 如果 DataNode A 为 Leader,则将 Leader 迁移到另一台 DataNode B
  • DataNode A 进程退出

...

分区表使用 Raft 共识的移除流程

  • 客户端连接的 DataNode 向 PartitionNode ConfigNode 汇报删除节点操作
  • PartitionNode ConfigNode 检查集群节点数是否大于副本数,如果不大于,返回禁止删除
    • >= 3 副本时
      • PartitionNode ConfigNode 通过 Raft 日志记录移除开始日志,返回客户端
      • PartitionNode ConfigNode 通过 Raft 日志记录执行此移除命令
        • PartitionNode ConfigNode 检查是否有移除结束日志,以及本节点是否为 leader
        • 对于被删除节点的每个 VSG
          • PartitionNode ConfigNode 通过 Raft 日志记录此 VSG 共识组的变更开始日志
          • PartitionNode ConfigNode 执行此 VSG 共识组的变更开始日志
            • PartitionNode ConfigNode 检查是否有变更结束日志,以及本节点是否为 leader
            • PartitionNode ConfigNode 为此 VSG 共识组新增一个 VSG(分配一个节点),数据迁移,并删除失效 VSG
            • PartitionNode ConfigNode 通过 Raft 日志记录此 VSG 共识组的变更结束日志
        • PartitionNode ConfigNode 通过 Raft 日志记录此移除命令结束
    • 2 副本时
      • PartitionNode ConfigNode 通过 Raft 日志记录此移除命令
      • 对于被删除节点的每个 VSG
        • PartitionNode ConfigNode 通过 Raft 日志记录此 VSG 共识组的变更开始日志
        • PartitionNode ConfigNode 执行此 VSG 共识组的变更开始日志
          • PartitionNode ConfigNode 检查是否有变更结束日志,以及本节点是否为 leader
          • PartitionNode ConfigNode 为此 VSG 共识组新增一个 VSG(分配一个节点),数据迁移,并删除失效的 VSG
          • PartitionNode ConfigNode 通过 Raft 日志记录此 VSG 的变更结束日志
      • 返回客户端

...