Consensus共识组件
共识组件主要职责:
(1)管理全局Pinset集合,包括从其它节点获取或者向其它节点发送Pin操作命令。
(2)管理Pinset相关的文件在IPFS中的持久化存储。
(3)在所有的节点间实现分布式一致,所有的节点需要收敛相同的Pinset。
(4)管理集群节点,包括节点加入离开,设置节点间的管理机制。
(5)设置节点信任机制,定义哪些节点可以访问本地RPC服务。
IPFS-Cluster共识组件目前有两种具体实现,基于“Raft”的强一致性分布式共识,和基于“Merkle-CRDT”的最终一致性共识。基于“Raft”的强一致性共识,对任何一个节点发起请求都会得到相同的回复,但将产生相对高的延迟;基于“Merkle-CRDT”的最终一致性共识具有更低的响应延迟,但可能会回复过期的数据,最终一致性即是经过一段时间后终会到达一致的弱一致性。
基于Raft共识算法实现
(1)通过将更新直接发送到连接的每个节点来发布更新。
(2)在本地BoltDB保存所有