我正在尝试实现Raft共识算法,但由于某些原因,在使用RPC调用时遇到了麻烦。我正在使用labrpc.go打电话。
我的功能签名:

func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) bool
和我打的电话
if err := rf.peers[peerIdx].Call("Raft.RequestVotes", args, &reply); err == false {
筏结构:
type Raft struct {
...
peers     []*labrpc.ClientEnd // RPC end points of all peers
...
}
但我不断收到此错误:

labrpc.Service.dispatch():Raft.RequestVotes中的未知方法RequestVotes;期待[]之一

我也有其他几种Raft.方法,因此[]中的期望之一应该是非空的吗?

最佳答案

在我显式返回bool时,RPC方法未被识别为RPC方法。更改代码以返回void(完全删除返回)可以解决此问题。
更新的功能签名:

func (rf *Raft) RequestVotes(args RequestVoteArgs, reply *RequestVoteReply) {

10-05 19:00