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

news/2024/4/17 16:56:50

一、 总览

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

https://www.xjx100.cn/news/3118891.html

相关文章

vuepress-----7、发布在GitHub

# 7、发布在GitHub 在你的项目中,创建一个如下的 deploy.sh 文件(请自行判断去掉高亮行的注释): #!/usr/bin/env sh# 确保脚本抛出遇到的错误 set -e# 生成静态文件 npm run docs:build# 进入生成的文件夹 cd docs/.vuepress/dist# 如果是发…

Linux下Docker 离线安装详细步骤,亲测成功

1.离线原因:公司新创不能使用开元linux,使用了一个变种centOS,致使yum被禁 2.步骤: 2.1 下载docker tar包,下载地址:Index of linux/https://download.docker.com/linux/ 2.2 新建自己的软件目录&am…

Stability AI 新发布SDXL Turbo:一款实时文本到图像生成模型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

提升SQL语句性能

1 内连接说明 当涉及到多个表的连接查询时,通常使用join关键字。 最常用的连接方式是左连接和内连接。 left join:找到两个表的交集,并包含左表中剩余的数据。 inner join:找到两个表的交集数据。 以下是使用inner join的示例…

《异常检测——从经典算法到深度学习》24 用于单变量时间序列异常检测的端到端基准套件

《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Donut: …

37.从0到上线三天搭建个人网站(第一天)

点赞收藏加关注,你也能住大别墅! 挑战三天搭建个人网站 从0到上线 一、项目的主要功能 1.作为自己在网上的一个工作室。 2.发帖 3.展示个人项目连接 4.介绍自己(没准儿还能接点活儿) 二、UI风格参考 三、技术选型 1.前端&a…

typescript使用笔记

typescript已经成为前端日常开发中常用的工具之一,本文结合自己的使用做一下笔记,方便以后查阅。 Partial Partial可以将某个类型中定义的属性变成可选的. 下面的定义了Book类型,创建实力时如果不设置id属性就会提示错误。 type Book {id…

Linux搭建FTP并安装xrdp,实现Windows系统下利用FileZilla传输文件和远程桌面连接

一、实现FTP文件传输 1、搭建FTP服务器: sudo apt-get install vsftpd sudo service vsftpd status 2、查看vsftpd是否正在运行,并监听21端口 netstat -npl | grep :21 or sudo service vsftpd status # 查看 vsftpd 服务状态 3、配置vsftpd.conf sud…