10.8、本章重点回顾

本章重点回顾

  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广播问题、集群节点倾斜问题、手动故障转移、在线迁移数据等。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 故障转移 Redis集群自身实现了高可用。高可用首先需要解决集群部分失败的场景:当集群内少量节点出现故障时通过自动...
    linuxzw阅读 3,800评论 0 2
  • 集群运维 Redis集群由于自身的分布式特性,相比单机场景在开发和运维方面存在一些差异。本节我们关注于常见问题进行...
    linuxzw阅读 4,654评论 0 2
  • 集群原理 一个系统建立集群主要需要解决两个:数据同步问题和集群容错问题。 Naive方案 一个简单粗暴的方案是部署...
    Java架构007阅读 1,553评论 0 3
  • si 什么是Redis的集群?   我们先了解下什么是集群?  当单个服务器处理到达瓶颈的时候,将其复制几份,这样...
    纸中圆阅读 3,696评论 0 0
  • 刚到美国的帕特尔人,除了日常必需的吃饭和衣服,就没有其他开销了。一家人一年只需要很少的钱就可以维持生活。只要平时日...
    人生金三角阅读 1,462评论 0 1