我正在尝试实现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) {