..

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