..
ipfs-cluster中出现的raft
在上篇的raft创建过程中,代码中包含了多个raft库,都是干什么的?
1、第一处,consensus/raft/config.go
的 Config 中,引用了 hraft "github.com/hashicorp/raft"
type Config struct {
// A Hashicorp Raft's configuration object.
RaftConfig *hraft.Config
}
看 hashicorp/raft 的介绍, 它就是一个raft协议的实现。 ipfs-cluster-service 就是基于该 raft 实现的。
2、第二处,consensus/raft/consensus.go
中, 引用 libp2praft "github.com/libp2p/go-libp2p-raft"
func NewConsensus() {
consensus := libp2praft.NewOpLog(state, baseOp)
raft, err := newRaftWrapper(host, cfg, consensus.FSM(), staging)
if err != nil {
logger.Error("error creating raft: ", err)
return nil, err
}
actor := libp2praft.NewActor(raft.raft)
}
看 go-libp2p-raft GitHub上的介绍,它主要就是 hashicorp/raft 的网络层。
好了,这两个直接的关系清楚了。
Nothing