offic做网站的软件,网站打开速度概念,贵阳奇点未来网站建设,外包公司的人好跳槽吗目录 1. 高可用2. redis 哨兵模式3. 图文的方式让我们读懂这几个算法3.1. Raft算法 - 图文3.2. Paxos算法 - 图文3.3. 区别#xff1a; 1. 高可用
在 Redis 中#xff0c;实现 高可用 的技术主要包括 持久化、复制、哨兵 和 集群#xff0c;下面简单说明它们的作用#xf… 目录 1. 高可用2. redis 哨兵模式3. 图文的方式让我们读懂这几个算法3.1. Raft算法 - 图文3.2. Paxos算法 - 图文3.3. 区别 1. 高可用
在 Redis 中实现 高可用 的技术主要包括 持久化、复制、哨兵 和 集群下面简单说明它们的作用以及解决了什么样的问题
持久化持久化是 最简单的 高可用方法。它的主要作用是 数据备份即将数据存储在 硬盘保证数据不会因进程退出而丢失。复制复制是高可用 Redis 的基础哨兵 和 集群 都是在 复制基础 上实现高可用的。复制主要实现了数据的多机备份以及对于读操作的负载均衡和简单的故障恢复。缺陷是故障恢复无法自动化、写操作无法负载均衡、存储能力受到单机的限制。哨兵在复制的基础上哨兵实现了 自动化 的 故障恢复。缺陷是 写操作 无法 负载均衡存储能力 受到 单机 的限制。集群通过集群Redis 解决了 写操作 无法 负载均衡 以及 存储能力 受到 单机限制 的问题实现了较为 完善 的 高可用方案。
2. redis 哨兵模式
介绍哨兵模式是为了解决服务器故障。 功能Redis 哨兵模式是指在 Redis 集群中有一组专门的进程即哨兵进程负责监控主节点和从节点的状态并在发现故障时自动进行故障转移以保证 Redis 集群的高可用性。
是否默认开启Redis并没有默认开启哨兵模式需要手动配置哨兵节点并通过哨兵节点监控Redis主从节点的健康状态。
哨兵模式三大任务监控、提醒、自动故障迁移
解决办法raft算法基于领导者的一致性算法、Paxos算法(基于提案的一致性算法) raft算法基于领导者的一致性算法角色分为领导者、候选者、跟随者 初始化什么时候变成候选者 - 集群启动时所有的节点都是跟随者没有领导者。每个节点都有一个选举超时时间随机在150ms到300ms之间如果在超时时间内没有收到领导者的心跳包就会转变为候选者开始发起选举。 发起选举发送选举时发送什么到其他候选者 - 候选者会增加自己的选举轮次term并向其他节点发送选举请求包含自己的选举轮次和标识。同时候选者会给自己投一票并重置自己的选举超时时间。 投票是否给这个候选者投票 - 跟随者收到选举请求后会比较自己的选举轮次和候选者的选举轮次如果自己的选举轮次更大或者已经给其他候选者投过票就会拒绝投票否则就会同意投票并重置自己的选举超时时间。 统计票数统计有多少人给你投票第一次确认 - 候选者收到投票回复后会统计自己的票数如果超过半数就会成为领导者并向其他节点发送心跳包通知自己的领导地位如果没有超过半数就会继续等待投票回复直到超时或者收到心跳包。 维持领导者领导者诞生并向其他发送心跳包第二次确认 - 领导者会周期性地向所有跟随者发送心跳包维持自己的领导地位并检查跟随者的状态。如果领导者发现自己的选举轮次小于某个跟随者的选举轮次就会认为自己的领导地位已经过期转变为跟随者重新开始选举超时计时。 处理冲突故障导致多个领导者出现 - 如果集群中出现网络分区或者节点故障可能会导致多个候选者同时发起选举造成选举冲突。Raft算法通过随机化选举超时时间使得冲突的概率降低。同时如果一个候选者收到了另一个候选者的选举请求它会拒绝投票并重置自己的选举超时时间避免无效的选举。 最终只有一个候选者能够获得多数的票数成为领导者结束选举。 Paxos算法基于提案的一致性算法角色分为提议者和接受者 准备阶段生成提案编号 - 提议者会生成一个唯一的提案编号n并向所有的接受者发送准备请求包含提案编号n。 承诺阶段承诺不再接受任何编号小于n的提案 - 接受者收到准备请求后会比较自己已经接受过的最大提案编号n’和当前提案编号n如果n’ n就会拒绝准备请求否则就会承诺不再接受任何编号小于n的提案并回复提议者包含自己已经接受过的最大提案编号n’和对应的从节点标识v’。 接受阶段接收到所有提案然后统计第一次确认 - 提议者收到半数以上的接受者的回复后会从中选择最大的提案编号n’和对应的从节点标识v’如果n’为0就说明没有接受者接受过任何提案此时提议者可以自由选择一个从节点标识v。然后提议者会向所有的接受者发送接受请求包含提案编号n和从节点标识v。 确认阶段统计后向其他接收者第二次确认再也没有新的提案了二阶段确认 - 接受者收到接受请求后会比较自己已经承诺过的最小提案编号n’‘和当前提案编号n如果n’’ n就会拒绝接受请求否则就会接受提案并回复提议者包含提案编号n和从节点标识v。 完成阶段 提升为主节点 - 提议者收到半数以上的接受者的回复后就会认为提案达成一致即从节点标识v被选为新的主节点并通知所有的接受者。
它们都采用二阶段确认的方式来达成共识的都差不多。
参考Redis哨兵模式中的选举算法Raft vs Paxos 参考Paxos算法 参考redis默认开启哨兵模式的吗
3. 图文的方式让我们读懂这几个算法
3.1. Raft算法 - 图文 3.2. Paxos算法 - 图文 3.3. 区别
确认阶段不同
Raft算法判断是否投过票Paxos算法不接受任何小于该编号的提案而且还有第二阶段确认
相同
都是半数以上确认都需要确认当前选举轮次/提案编号是最新的。