本文介绍: 【Ratis】Grpc.proto文件定义的一些RPC

一、 总览

Raft的提供了三种类型的RPC。分别如下

  1. RaftClientProtocolServiceclientserver之间交互RPC,分为orderedunordered,一种是有序异步请求流、一种是无序异步请求流。
  2. RaftServerProtocolServiceratis server之间rpc操作请求选票requestVote论文里有详细定义)、开始leader选举、appendEntries论文里有详细定义)、install snapshotreadIndex论文里跟安全性相关操作)。
  3. AdminProtocolService用于ratis集群管理操作例如设置配置转换leadersnapshot管理group的列举&查询&管理等。

二、 Grpc.proto 文件源码

这个proto文件定义ratis里用的RPC。

// clientserver交互的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进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注