一、 总览
- RaftClientProtocolService:client与server之间的交互RPC,分为ordered和unordered,一种是有序的异步请求流、一种是无序的异步请求流。
- RaftServerProtocolService:ratis server之间的rpc操作。请求选票requestVote(论文里有详细定义)、开始leader选举、appendEntries(论文里有详细定义)、install snapshot、readIndex(论文里跟安全性相关的操作)。
- AdminProtocolService:用于ratis集群的管理操作。例如设置配置、转换leader、snapshot管理、group的列举&查询&管理等。
二、 Grpc.proto 文件源码
// client与server交互的rpc
service RaftClientProtocolService {
// A client-to-server stream RPC to ordered async requests
rpc ordered(stream ratis.common.RaftClientRequestProto)
returns (stream ratis.common.RaftClientReplyProto) {}
// A client-to-server stream RPC for unordered async requests
rpc unordered(stream ratis.common.RaftClientRequestProto)
returns (stream ratis.common.RaftClientReplyProto) {}
}
// server之间交互的rpc
service RaftServerProtocolService {
rpc requestVote(ratis.common.RequestVoteRequestProto)
returns(ratis.common.RequestVoteReplyProto) {}
rpc startLeaderElection(ratis.common.StartLeaderElectionRequestProto)
returns(ratis.common.StartLeaderElectionReplyProto) {}
rpc appendEntries(stream ratis.common.AppendEntriesRequestProto)
returns(stream ratis.common.AppendEntriesReplyProto) {}
rpc installSnapshot(stream ratis.common.InstallSnapshotRequestProto)
returns(stream ratis.common.InstallSnapshotReplyProto) {}
rpc readIndex(ratis.common.ReadIndexRequestProto)
returns(ratis.common.ReadIndexReplyProto) {}
}
// 管理ratis集群的rpc
service AdminProtocolService {
// A client-to-server RPC to set new raft configuration
rpc setConfiguration(ratis.common.SetConfigurationRequestProto)
returns(ratis.common.RaftClientReplyProto) {}
rpc transferLeadership(ratis.common.TransferLeadershipRequestProto)
returns(ratis.common.RaftClientReplyProto) {}
// A client-to-server RPC to add a new group
rpc groupManagement(ratis.common.GroupManagementRequestProto)
returns(ratis.common.RaftClientReplyProto) {}
rpc snapshotManagement(ratis.common.SnapshotManagementRequestProto)
returns(ratis.common.RaftClientReplyProto) {}
rpc leaderElectionManagement(ratis.common.LeaderElectionManagementRequestProto)
returns(ratis.common.RaftClientReplyProto) {}
rpc groupList(ratis.common.GroupListRequestProto)
returns(ratis.common.GroupListReplyProto) {}
rpc groupInfo(ratis.common.GroupInfoRequestProto)
returns(ratis.common.GroupInfoReplyProto) {}
}
原文地址:https://blog.csdn.net/yexiguafu/article/details/130672335
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49298.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。