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

【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 requestsrpc ordered(stream ratis.common.RaftClientRequestProto)returns (stream ratis.common.RaftClientReplyProto) {}// A client-to-server stream RPC for unordered async requestsrpc 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 configurationrpc 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 grouprpc 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) {}
}

相关文章:

  • Mysq8l在Centos上安装后忘记root密码如何重新设置
  • windows系统mobaxterm远程执行linux上ssh命令
  • Sublime text 添加到鼠标右键菜单,脚本实现
  • 【大模型】更强的 ChatGLM3-6B 来了,开源可商用
  • 虚假IP地址攻击的溯源方法
  • MDK5改造之格式化以及文件函数注释插件和主题应用
  • C/C++内存管理(含C++中new和delete的使用)
  • SpringCloud 微服务全栈体系(十八)
  • 第8关:定义一个名为PROC_AVGWEIGHT的有参数存储过程
  • MIT线性代数笔记-第21讲-特征值,特征向量
  • 使用idea如何快速的搭建ssm的开发环境
  • 如何在忘记密码的情况下恢复解锁 iPhone
  • Mybatis使用注解实现复杂动态SQL
  • 接口性能测试 —— Jmeter并发与持续性压测
  • JDK中lock锁的机制,其底层是一种无锁的架构实现的,公平锁和非公平锁
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • ➹使用webpack配置多页面应用(MPA)
  • 30秒的PHP代码片段(1)数组 - Array
  • git 常用命令
  • GraphQL学习过程应该是这样的
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 多线程 start 和 run 方法到底有什么区别?
  • 搞机器学习要哪些技能
  • 关于Java中分层中遇到的一些问题
  • 汉诺塔算法
  • 欢迎参加第二届中国游戏开发者大会
  • 日剧·日综资源集合(建议收藏)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何学习JavaEE,项目又该如何做?
  • 入门级的git使用指北
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 与 ConTeXt MkIV 官方文档的接驳
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (0)Nginx 功能特性
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • ***原理与防范
  • . NET自动找可写目录
  • .NET 回调、接口回调、 委托
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET多线程执行函数
  • .NET项目中存在多个web.config文件时的加载顺序
  • .net专家(高海东的专栏)
  • @RequestMapping处理请求异常
  • @Responsebody与@RequestBody
  • [ 数据结构 - C++] AVL树原理及实现