ZAP(zookeeper):
选举:
先去比较zxid zxid谁大谁就是领导角色,zxid相等就比较myid,谁的大谁就可能是领导角色,只要满足过半的机制就可以成为领导角色,后来启动的节点不参与选举的。
如何保持数据的一致性问题:
所有写的请求统一交给领导角色实现,领导角色写完数据之后,领导角色将每一个数据同步给每一个节点。
注意:
数据之间同步采用2pc两阶段提交协议。
Raft:
角色:

  1. 状态: 来源于生活(台湾选举)------ 跟随者,竞选者,领导角色
  2. 大多数: >n/2+1
  3. 任期: 每次选举一个新的领导角色 任期都会去实现增加
  4. 竞选者谁的票数最多,谁就是为领导角色
  5. 问题:票数相同,谁是领导?------ 服务器数量避免是偶数
    选举:
  6. 默认情况下,所有节点都是跟随着
  7. 每个节点会随机的生成一个选举的超时时间,例如,大概是100-300ms,在超时的时间范围内必须要等待。
  8. 超时时间过后,这个节点的状态可能有跟随着变为竞选者状态,会给其他的节点发出选举通知,只要该竞选者有超过半数以上即可选为领导角色,
  9. 核心原理: 谁的超时时间最短,谁就越可能成为领导角色
  10. 如果所有的节点的超时时间相同,当前投票全部作废,重新进入随机生成随机数阶段
  11. 若果有多个节点生成的随机数相同,比较票数谁的多,谁就是领导,票数完全一样,重新进入随机生成随机数阶段(建议不要偶数个服务器,可能无线死循环)
  12. 故障重新选举:
    a) 如果跟随着节点不能及时收到领导角色的消息时,那么这个跟随着的状态就会变为竞选者状态,发给其他的节点发出选举投票通知,只要该竞选者有超过半数以上,即可选举为领导角色
    数据一致性:
    类似于ZAP的两阶段提交协议
  13. 所有的写的请求都是统一交给领导角色完成的,写入该对应的日志,标记该状态是未提交。
  14. 为了提交日志,领导角色就会将该日志以心跳的形式发送给其他的更随着,只要有过半的跟随着可以写入该数据,则为通知其他节点同步该数据,这个称作为日志的复制。

简述ZAP和Raft相关推荐

  1. Nacos-1.3.2之服务注册

    说明 本文以开源框架nacos,版本号为1.3.2针对服务的注册以及数据流转进行源码解析,核心会围绕两种数据一致性协议展开解析:Distro协议和raft协议:其中Distro协议属于自制的:raft ...

  2. 【论文简述】Multiview Stereo with Cascaded Epipolar RAFT(ECCV 2022)

    一.论文简述 1. 第一作者:Zeyu Ma 2. 发表年份:2022 3. 发表期刊:ECCV 4. 关键词:MVS.RAFT.级联.极线 5. 探索动机:3D卷积在计算和内存方面成本很高,在有限资 ...

  3. 区块链共识算法 PBFT(拜占庭容错)、PAXOS、RAFT简述

    共识算法 区块链中最重要的便是共识算法,比特币使用的是POS(Proof of Work,工作量证明),以太币使用的是POS(Proof of Stake,股权证明)使得算理便的不怎么重要了,而今PO ...

  4. ZAB、Raft协议简述

    CAP原则 1.一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值,即写操作之后的读操作,必须返回该值.(分为弱一致性.强一致性和最终一致性) 2.可用性(A):在集群中一部分节点故障 ...

  5. 浅谈大数据中的 2PC、3PC、Paxos、Raft、ZAB

    一致性 简述 一致性,是指对每个节点一个数据的更新,整个集群都知道更新,并且是一致的.假设一个具有N个节点的分布式系统,当其满足以下条件时,我们说这个系统满足一致性: 全认同: 所有N个节点都认同一个 ...

  6. 2022-03-07 Influxdb创建用户接口与raft日志交互封装

    目录 摘要: 创建用户命令: 核心处理: 关键点: 解决办法: 在替换为[REDACTED]之前, 将请求保存写入raft日志复制 在本节点执行时, 将请求发送给raft日志复制: 摘要: influ ...

  7. 深入raft-通过ectd的实现理解raft

    深入raft-通过etcd的实现理解raft 简述 raft初心 Replicated state machine Commit和Apply Quorum 简述 raft作为最易懂的生产级分布式一致性 ...

  8. 【论文简述及翻译】RAFT-Stereo: Multilevel Recurrent Field Transforms for Stereo Matching(3DV 2021)

    一.论文简述 1. 第一作者:Lahav Lipson 2. 发表年份:2021 3. 发表期刊:3DV,Best paper 4. 关键词:立体匹配.端到端训练.迭代优化.GRU 5. 探索动机:立 ...

  9. Go 学习笔记(54)— Go 第三方库之 uber-go/zap/lumberjack(记录日志到文件、支持自动分割日志、支持日志级别、打印调用文件、函数和行号)

    1. 简要说明 zap 是 uber 开源的 Go 高性能日志库,支持不同的日志级别, 能够打印基本信息等,但不支持日志的分割,这里我们可以使用 lumberjack 也是 zap 官方推荐用于日志分 ...

最新文章

  1. Prometheus AlertManager 微信报警配置
  2. 设计模式 — 结构型模式 — 组合模式
  3. 优化老手分享网络优化中的4大方法
  4. centos7查看当前端口_Centos7 防火墙开放端口,查看状态,查看开放端口
  5. SalesArea F4 help implementation
  6. [渝粤教育] 长沙民政职业技术学院 高职公共英语(一) 参考 资料
  7. DirectX 矩阵
  8. vins-mono后端优化
  9. R语言自然语言处理:文本分类
  10. Linux内核驱动之主次编号
  11. windows 安装使用luarocks
  12. 如何在 Linux 上安装服务器程序?
  13. MT5自定义均线指标(含弹窗、App、邮箱预警)
  14. 想杀死某个端口进程,但在服务列表中却找不到,可以之间通过命令行找到这个进程并杀死该进程,减少重启电脑和找到问题根源。
  15. 直播APP制作时即时聊天功能实现
  16. 最长对称子串 作者 陈越单位 浙江大学
  17. 擦地机器人排行榜_十大扫地机器人品牌排行榜扫地机器人哪个牌子好
  18. 同时删除多个 PDF 文档最后几页
  19. JS中常见的字符串拼接处理
  20. /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法

热门文章

  1. HTML5期末大作业:棋牌游戏网站设计——棋牌游戏(8页) HTML+CSS+JavaScript web大作业 静态网页
  2. TCP长连接保持连接状态TCP keepalive设置
  3. am335 启动流程
  4. 一个女孩从十楼跳下所看到的...
  5. 微信开发者工具中使用npm命令提示: npm 不是内部或外部命令
  6. mysql 实现类似 postgresql 数据库的 generate_series 函数
  7. 券商宏观研究中高频数据的使用
  8. python游戏中加入背景音乐_添加声音到你的 Python 游戏 | Linux 中国
  9. 【ATTCK】鱼叉式钓鱼攻击
  10. c++ 实现Student类