一、redis-cluster

官方推荐的 redis 集群解决方案,优点在于去中心化, 去中间件,也就是说,集群中的每个节点都是平等的关系,都是对等的,每个节点都保存各自的数据和整个集群的状态。每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了我们只需要连接集群中的任意一个节点,就可以获取到其他节点的数据。理论上最大可以有 16384 个节点,性能随着节点的增加而增加。后续可自行增加或者删除节点,移动槽( slot 一共16384 个槽 )等等。

需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存活的主节点数小于总节点数的一半时,整个集群就无法提供服务了。

二、redis-cluster 架构图

1、所有 redis 集群彼此互联,通过 ping-pong 命令确定彼此的健康状态,内部使用二进制协议优化传输速度和带宽。

2、客户端与 redis 集群连接,不需要中间 proxy 层,客户端不需要连接集群所有节点,连接集群中任何一个节点即可。

三、redis-cluster 投票容错机制

当黄色节点通过 ping-pong 命令,发现红色节点挂了,就会向其他节点广播。其他节点通过 ping-pong 命令去检测红色节点。当多数节点都 ping 不通红色节点的时候,该集群系统就会认为红色节点挂了。红色节点的备份节点就会自动顶上来。如果没有备份节点,或者备份节点也都挂了,该集群就挂了。

1、节点的 fail 状态是通过集群集群中超过半数的节点检测失效时才生效的。

2、redis-cluster 把所有的物理节点映射到槽( slot )上。

redis 集群中内置了 16384 个哈希槽,当需要在 redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的 hash 槽上,redis 会根据节点的数量大致均等的将 hash 槽映射到不同的节点上

最新文章

  1. [转]HTML5 本地图片预览
  2. 【Beta版本】冲刺计划及安排
  3. Bower In ASP.NET Core
  4. c/c++面试题(3)strcat/strcmp/strlen/strcpy的实现
  5. HDU pog loves szh II (数的处理)
  6. 锋利的jquery-DOM操作
  7. SSKeyChains的使用小节
  8. Linux下SVN+多个Tomcat自动部署
  9. 白帽子之路首章:Footprinting, TARGET ACQUISITION
  10. test only
  11. Linux内核打印时间戳
  12. 面向对象_classmethod_staticmethod
  13. DOS批处理高级教程(还不错)(转)
  14. C语言 设一个函数process,调用它时,实现不同功能。
  15. jenkins配置工程目录-启动case
  16. CentOS Linux release 7.3破解密码详解
  17. Codeforces 526D Om Nom and Necklace (KMP)
  18. 联想拯救者15-isk安装固态硬盘与系统迁移教程
  19. 反射已经"Out",动态编译才能"Hold"住
  20. 微信小程序发起支付流程

热门文章

  1. 将Latex tex文档转换成 word文档(上)
  2. [Linux]history 显示命令执行的时间
  3. 2017-3-11 leetcode 217 219 228
  4. TF-IDF算法--关键词句和文本集中每篇文章相关度计算
  5. php 判断字符串包含中文(转)
  6. Jquery 重置表单
  7. CI中的分页
  8. Codeforces Round #448
  9. Android 使用WindowManager实现Android悬浮窗
  10. Android--XML页面的编写