Go原生态RPC关于暴露RPC方法rpc.RegisterName的使用的坑

	// register RPC service
	if err := rpc.RegisterName("Raft", new(raft.Raft)); err != nil {
		return err
	}

向上面一样,如果我们有 Raft 的结构体,那么 Raft 所有的首字母大写方法集合会全部暴露在 RPC 中。

如果,我们只想暴露一部分,我们可以这样做。

        type RaftRPC Raft
        
        ...
        
        func (r *RaftRPC) RequestVote(args *RequestVoteArgs, reply *RequestVoteReply) error {
	        rf := (*Raft)(r)
                ...
        }

        ...  
      
	// register RPC service
	if err := rpc.RegisterName("Raft", new(raft.RaftRPC)); err != nil {
		return err
	}
posted @ 2022-05-31 14:56  et3_tsy  阅读(151)  评论(0编辑  收藏  举报