在分布式存储系统中,通常通过维护多个副本来提高系统的可用性,那么多个节点之间必须要面对数据一致性的问题。Raft 的目的就是通过复制的方式,使所有节点达成一致,但是这么多节点,以哪个节点的数据为准呢?所以必须选出一个Leader。

大体上有两个步骤:领导选举,数据复制。

Raft 是一个共识算法(consensus algorithm)。比如比特币之类的加密货币,就需要共识算法。Spring Cloud 的注册中心解决方案Consul 也用到了Raft 协议。

Raft 的核心思想:先到先得,少数服从多数。

Raft 算法演示:

http://thesecretlivesofdata.com/raft/

总结:

Sentinle 的Raft 算法和Raft 论文略有不同。

1、master 客观下线触发选举,而不是过了election timeout 时间开始选举。

2、Leader 并不会把自己成为Leader 的消息发给其他Sentinel。其他Sentinel 等待Leader 从slave 选出master 后,检测到新的master 正常工作后,就会去掉客观下线的标识,从而不需要进入故障转移流程。

Redis中的可用性保证之Sentinel的Ratf 算法相关推荐

  1. Redis中的可用性保证之Sentinel 原理

    如何实现主从的自动切换?我们的思路: 创建一台监控服务器来监控所有Redis 服务节点的状态,比如,master 节点超过一定时间没有给监控服务器发送心跳报文,就把master 标记为下线,然后把某一 ...

  2. Redis中的可用性保证之Sentinel服务下线

    Sentinel 默认以每秒钟1 次的频率向Redis 服务节点发送PING 命令.如果在down-after-milliseconds 内都没有收到有效回复,Sentinel 会将该服务器标记为下线 ...

  3. Redis中的可用性保证之Sentinel故障转移

    如果master 被标记为下线,就会开始故障转移流程. 既然有这么多的Sentinel 节点,由谁来做故障转移的事情呢? 故障转移流程的第一步就是在Sentinel 集群选择一个Leader,由Lea ...

  4. 【转】Redis 分布式——可用性保证之 Sentinel(实战篇)

    前言 在上个篇章我们阐述了Sentinel的原理,可能大家还是云里雾里,需要来点实战性的东西,那这个篇章我们来个实战篇吧-话不多说,我们开始今天的吹牛皮- 正文 Sentinel 实战 Sentine ...

  5. Redis中的Sentinel 配置

    为了保证Sentinel 的高可用,Sentinel 也需要做集群部署,集群中至少需要三个Sentinel 实例(推荐奇数个,防止脑裂). hostname IP 地址 节点角色&端口 mas ...

  6. mysql怎么保证热点数据_MySQL里有2000w数据,redis中只存20w数据,如何保证redis中数据都是热点数据...

    计算20w的热点数据占据内存的大小.然后在Redis中,配置最大内存容量,在redis.conf文件maxmemory 标签中配置. 当redis内存数据大小上升到一定大小的时候,就会施行数据淘汰策略 ...

  7. 解说redis中如何实现高可用

    redis中为了实现高可用(High Availability,简称HA),采用了如下两个方式: 主从复制数据. 采用哨兵监控数据节点的运行情况,一旦主节点出现问题由从节点顶上继续进行服务. 主从复制 ...

  8. php怎么用redisson,Redis中RedisTemplate和Redisson管道的使用

    当对Redis进行高频次的命令发送时,由于网络IO的原因,会耗去大量的时间.所以Redis提供了管道技术,就是将命令一次性批量的发送给Redis,从而减少IO. 一.Jedis对redis的管道进行操 ...

  9. Redis中AKF原则的应用

    Redis 单机 .单节点.单实例 缺点:1. 单点故障(一台服务如果挂了,整个系统不可用了)2. 容量有限3. 压力 过大 为了解决 单机的 问题 ,引入了AKF 原则 AKF X轴:直接水平复制应 ...

最新文章

  1. struts2 iterator list中对象的list 双层迭代
  2. class struct
  3. angular学习笔记(十三)
  4. 《Pro ASP.NET MVC 3 Framework》学习笔记之十六【示例项目SportsStore】
  5. Android关于Theme.AppCompat相关问题的深入分析
  6. Web布局连载——两栏固定布局(五)
  7. Docker上部署MariaDB
  8. Chain of Responsibility(职责链模式)
  9. ZendFramework-2.4 源代码 - 整体架构(类图)
  10. 预处理中的头文件stdio.h在哪?里面有什么?
  11. 一文搞定YOLO3代码详解
  12. 安信可Ca-01 4G模块调试
  13. Win10提示对电脑进行保护已阻止此应用无法打开
  14. 计算机毕设 SpringBoot 校园志愿者管理系统 志愿者管理系统 志愿者信息管理系统Java Vue MySQL数据库 远程调试 代码讲解
  15. 打字会出声音的计算机,笔记本电脑打字时发出声响敲击电脑时也有回声发出怎么办? 爱问知识人...
  16. 中学计算机老师资质,2016下半年教师资格证考试中学信息技术备考指导
  17. Java Web 网络商城案例演示一、(环境搭建)
  18. PostgreSQL 从备份原理 到 PG_PROBACKUP
  19. 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO
  20. Citrix 联机插件报错:找不到满足锁定要求的(AllowHotKey)的值

热门文章

  1. 一千行 MySQL 学习笔记
  2. 习题3-11 Kickdown UVA - 1588
  3. node中异步IO的理解
  4. win7的python3.5安装numpy包
  5. html、css 【珍藏】
  6. IIS上的web service调用AX服务问题
  7. PHP Collection 类
  8. Visual 数据绑定
  9. Bat命令:从Ftp获取文件以及数据导入
  10. javascript实用技巧--数组.