做网站导航的,windows优化大师是电脑自带的吗,wordpress 艺术家,js网站计数器代码Redis Sentinel 相关名词解释 名词 逻辑结构 物理结构 主节点 Redis 主服务 一个独立的 redis-server 进程 从节点 Redis 从服务 一个独立的 redis-server 进程 Redis 数据节点 主从节点 主节点和从节点的进程 哨兵节点 监控 Redis 数据节点的节点 一个独立的 re…Redis Sentinel 相关名词解释 名词 逻辑结构 物理结构 主节点 Redis 主服务 一个独立的 redis-server 进程 从节点 Redis 从服务 一个独立的 redis-server 进程 Redis 数据节点 主从节点 主节点和从节点的进程 哨兵节点 监控 Redis 数据节点的节点 一个独立的 redis-sentinel 进程 哨兵节点集合 若干哨兵节点的抽象组合 若干 redis-sentinel 进程 Redis 哨兵Sentinel Redis 提供的高可用方案 哨兵节点集合和 Redis 主从节点 应用方 泛指一个或多个客户端 一个或多个连接 Redis 的进程
为什么引入哨兵
Redis 中的主从复制最大的问题在于主节点主节点挂了之后从节点只能进行读操作不能自动升级成主节点不能替换原有主节点对应的角色这时需要程序员收到恢复主节点比较繁琐。
而 Redis 哨兵可以自动对挂了的主节点进行替换。
关于从节点和主节点之间断开连接有两种情况 从节点主动和主节点断开连接比如 slaveof no one这时从节点可以晋升成主节点。 主节点挂了这是一种脱离掌控的情况从节点不会自动变为主节点。
哨兵机制是通过一个独立的 redis-sentinel 进程来体现的和之前的 redis-server 是不同的进程它不负责存储数据只是对其他的 redis-server 进程起到监控的效果。
不使用哨兵节点进行监控的程序一般还要搭配一个报警程序使用当主节点挂了就会通知程序员程序员解决问题的一般流程为 先确认主节点能不能恢复是否方便恢复 如果主节点挂的原因不好定位或者原因明确但短时间内难以解决就需要重新选择一个从节点将其设置为新的主节点 把选中的从节点通过 slaveof no one从原来的主从关系中分离出来 对其他从节点修改 slaveof 的主节点 ip port连上新的主节点 告知客户端修改客户端配置让客户端能够连接新的从节点挂到这组机器中
这种手工处理的方式有很大的弊端比如整个修复的过程中所有的节点都不能正常工作而修复的时间往往也比较长所以这种方式很不适用。
Redis Sentinel架构 redis sentienl进程通过和节点之间建立TCP长连接以发送心跳包的方式监控某个节点是不是挂了。如果挂的是从节点则没有什么影响如果挂的是主节点多个哨兵节点之间会进行协商确认主节点是不是真的挂了。 如果主节点真的挂了哨兵节点之间就会推举出一个 leader由这个 leader 负责从其他的从节点中选出一个节点成为新的主节点。 这个被选中的从节点会执行 slaveof no one 从原来的主从关系中分离出来然后其他的从节点会设置slaveof 到这个新的主节点上。 哨兵节点会自动通知客户端程序告知新的主节点是谁后续客户端程序再进行写操作就会针对新的主节点进行。
哨兵选出 leader 之后由 leader 选出新的主节点选取依据如下 优先级每个 Redis 数据节点都会在配置文件中有一个优先级设置----slave-priority优先级高的从节点成为主节点。 offset表示从节点从主节点同步数据的进度数值越大说明从节点的数据和主节点越接近更适合作为新的主节点。 Run id每个 Redis 节点启动时随机生成的一串数字也就是说到这一步的时候就没有什么“更适合”了相当于随机选择一个。
总结 哨兵节点不能只有一个否则哨兵节点挂了也会影响系统可用性。 哨兵节点最好是奇数个方便选举 leader得票更容易超过半数。 哨兵节点不负责存储数据仍然是 redis 主节点负责存储。 哨兵 主从复制解决的问题是“提高可用性”不能解决“数据极端情况下写丢失”问题。 哨兵 主从复制不能提高数据的存储容量当需要存的数据接近或超过机器的物理内存这样的结构就难以胜任了。