今天看啥  ›  专栏  ›  linuxzw

10.8、本章重点回顾

linuxzw  · 简书  ·  · 2019-05-14 22:38

本章重点回顾

  1. Redis集群数据分区规则采用虚拟槽方式,所有的键映射到16384个槽中,每个几点负责一部分槽和相关数据,实现数据和请求的负载均衡。

  2. 搭建集群划分三个步骤:准备节点,节点握手,分配槽。可以使用redis-trib.rb create命令快速搭建集群。

  3. 集群内部节点通信采用Gossip协议彼此发送消息,消息类型分为:ping消息、pong消息、meet消息、fail消息等。节点定期不断发送和接受ping/pong消息来维护更新集群的状态。消息内容包括节点自身数据和部分其他节点的状态数据。

  4. 集群伸缩通过在节点之间移动槽和相关数据实现。扩容是根据槽迁移计划吧槽从源节点迁移到目标节点,源节点负责的槽相比之前变少从而达到集群扩容的目的,收缩时如果下线的节点有负责的奥需要迁移到其他节点,再通过cluster forget命令让集群内其他节点忘记被下线节点。

  5. 使用Smart客户端操作集群达到通信效率最大化,客户端内部负责计算维护键->槽->节点的映射,用于快速定位键命令到目标节点。集群协议通过Smart客户端全面高效的支持需要一个过程,用户在选择Smart客户端时建议review下集群交互代码如:异常判定和重试逻辑,更新槽的并发控制等。节点接收到键命令时会判断相关的槽是否由自身节点负责,如果不是则返回重定向信息。重定向分为MOVED和ASK,ASK说明集群正在进行槽数据迁移,客户端只在本次请求中做临时重定向,不会更新本地槽缓存。MOVED重定向说明槽已经明确分派到另一个节点,客户端需要更新槽节点缓存。

  6. 集群自动故障转移过程分为故障发现和故障恢复。节点下线分为主观下线和客观下线,当超过半数主节点认为故障节点为主观下线时标记它为客观下线状态。从节点负责对客观下线的主节点触发故障恢复过程,保证集群的可用性。

  7. 开发和运维集群过程中常见问题包括:超大规模集群带宽消耗、Pub/Sub广播问题、集群节点倾斜问题、手动故障转移、在线迁移数据等。




原文地址:访问原文地址
快照地址: 访问文章快照