当前位置: 首页 > article >正文

【Ratis】Grpc.proto文件里定义的一些RPC

一、 总览

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

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

二、 Grpc.proto 文件源码

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

// 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) {}
}

http://www.kler.cn/a/159474.html

相关文章:

  • 初识Linux · 共享内存
  • Java21和Java8性能优化详细对比
  • 软件设计师考试大纲
  • 力扣513:找树左下角的值
  • Leecode刷题C语言之统计好节点的数目
  • A3超级计算机虚拟机,为大型语言模型LLM和AIGC提供强大算力支持
  • iOS 通用链接的配置(Universal Links)
  • 使用Ansible Expect模块实现自动化交互式任务
  • Orvibo另款网关ViCenter-300的分析之一
  • 深度解析:PDM、PDM产品数据管理
  • 数据结构之选择排序
  • Redis系列之keys命令和scan命令性能对比
  • 【开发问题解决方法记录】04.dian 权限表单优化
  • 【图像拼接】论文精读:Quasi-Homography Warps in Image Stitching(QHW)
  • 【PTA题目】6-4 走台阶方法 分数 15
  • 【1day】Panabit 日志系统openid接口SQL注入漏洞
  • el-table全部选择和全部取消
  • 大语言模型有那些能力和应用
  • C语言--每日选择题--Day37
  • 【android开发-11】android中创建自定义布局并引入自定义布局的参考例子
  • ctfshow sql 186-190
  • css实现最简单的3d透视效果,通过旋转可以直观感受到
  • Python源码15:使用海龟画图turtle画小黄人
  • 基于SpringBoot的仓库管理系统设计与实现附带源码和论文
  • 企企通供应链专家:拥抱智能化趋势,企业如何打造智慧供应链形成竞争优势?
  • 题目:小明的彩灯(蓝桥OJ 1276)