ratis
文章平均质量分 76
自己从零开始学习ratis,记录一下学习的过程
想做一个offer收割机
这个作者很懒,什么都没留下…
展开
-
Ratis学习(五): StateMachine
StateMachine 负责执行分布式系统中的命令和操作,确保在不同节点上的数据状态保持一致。它通过在各个节点上应用相同的操作序列来达到这一目的。分布式系统中的节点可以接收来自客户端或其他节点的命令和操作请求。StateMachine 会根据这些命令执行相应的操作,然后将结果应用到本地状态中,从而确保系统在不同节点上的状态保持一致。在分布式系统中,节点可能会发生故障,因此需要能够进行故障检测和恢复。StateMachine 能够在节点故障后重新同步状态,确保数据的一致性和完整性。原创 2023-08-10 15:27:51 · 280 阅读 · 0 评论 -
Ratis学习(四):StateMachineUpdater
具体来说,StateMachineUpdater 在 Raft 中扮演以下角色:日志应用:Raft 算法通过日志的复制和应用来确保一致性。Leader 节点将客户端的请求转换为日志条目,并将这些日志条目复制到其他节点。一旦大多数节点都确认接收并持久化了日志,Leader 就可以提交这些日志。StateMachineUpdater 接收提交的日志,将其应用到本地状态机中,从而实现状态机的状态更新。确保一致性:Raft 算法保证了复制日志的一致性,这意味着所有节点最终会在相同的日志条目上达成共识。原创 2023-07-20 16:07:08 · 177 阅读 · 0 评论 -
Ratis学习(三): Raft Log管理
为了记录集群中所有操作的状态变化,确保状态机可以保证一致性。在 Raft 中,集群中的每个节点都维护一个日志,用于记录节点接收到的指令或命令。这些指令可能来自客户端的请求或其他节点的广播。日志的内容是有序的,并且按照顺序进行追加。每个日志条目都包含一个索引和对应的指令。Raft 算法通过日志来保持一致性。当节点收到新的指令时,它将指令追加到自己的日志末尾,并向其他节点发送追加日志的请求。一旦大多数节点都确认接收了该指令并将其追加到自己的日志中,该指令被视为已提交。原创 2023-06-21 14:11:15 · 303 阅读 · 0 评论 -
Ratis学习(二): Ratis peer身份管理
ratis服务中,每一个节点可能有三种身份,Leader,Candidate,Follower. Ratis在org.apache.ratis.server.impl.RoleInfo中实现身份管理。原创 2023-06-20 14:33:53 · 249 阅读 · 0 评论 -
ratis学习(一):Ratis客户端
Client是一个发起请求到服务端的模块,ratis是嵌入在系统中运行的,要想使用ratis中的功能,就需要继承ratis的类文件,实现其中的方法。ratis的源码RATIS中给出了几个使用的例子,如Counter, Arithmetic, Filestore等,本文中我们可以从简单的Counter例子入手来观察和使用ratis。原创 2023-06-19 14:10:43 · 418 阅读 · 0 评论 -
Ratis介绍
基于Raft实现的共识协议还有许多种,例如有各种语言的实现方案如 jraft,goraft,还有许多KV数据库同样使用了raft协议,但目前看来,ratis的实现和使用更为普遍,Ozone项目中就使用了ratis做为HA的实现方案,并且还作为DN 副本之间的数据同步。StateMachine: 是Ratis Server上层构筑的状态机,实现了多个接口的Api,负责处理和返回客户端的请求,如读写数据等等,statemachine中的数据是由updater负责更新的。client: 用于发起不同的数据请求。原创 2023-06-15 11:25:49 · 523 阅读 · 0 评论