博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第17章 集群
阅读量:4618 次
发布时间:2019-06-09

本文共 752 字,大约阅读时间需要 2 分钟。

  集群是Redis提供的Redis数据库分布式方案。

  为什么需要分布式Redis

  1. 提高性能。突破单机数据库性能瓶颈。
  2. 提高可用性。通过主从复制提供故障转移,进一步提高整个系统的稳定性。

17.1 节点

  节点(Nod)是集群(Cluster)基本组成元素,节点就是普通的Redis数据库,只不过该数据库运行在进群模式下。节点之间通过Cluster Meet彼此握手实现集群化。

17.2 槽指派

  有点像HashMap,整个集群所有的数据被划分为16384个槽,每一个数据都要先经过复杂的哈希函数计算出位于哪个槽上才能进一步放到负责该槽的Redis上。这是一种去中心化的分片策略。

17.2.1 槽指派的存储

  槽指派信息存储在两个地方:1、每个Node节点内部存储该节点负责哪个槽 2、Cluster存储每一个槽由哪一个节点负责。当一个请求来到某个Node上,该Node首先检查该请求对应的槽是否是自己负责,如果是则处理,如果不是则通过Cluster中存储的槽与Node对应信息找到能够处理该请求的Node,并转发给该Node。

  

17.3 在集群中执行命令

  只有16384个槽全部分配了处理节点后集群才会处于上线状态。

 

  • 通过CRC32算法,其实就是一个哈希算法,对指定的key算出哈希值,然后对16383取余得到一个0-16384之间的数作为槽索引
  • 如果该槽是自己负责,则处理并相应
  • 如果不是自己负责,则活返回一个Moved错误给客户端,并携带该槽处理节点的IP和port,客户端会根据Moved的结果重新发送一次请求,并更新本地的槽映射表

 

17.4 重新分片

  

  

转载于:https://www.cnblogs.com/AshOfTime/p/10802368.html

你可能感兴趣的文章
IE下iframe不能正常加载,显示空白
查看>>
mysql服务性能优化—my.cnf配置说明详解
查看>>
【Atcoder】CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning
查看>>
洛谷P1908 逆序对
查看>>
noip模拟赛 排列
查看>>
List 中添加多个List集合以及add() 与addAll()的区别
查看>>
如何处理测试人员的流动问题?
查看>>
ASP.NET没有魔法——ASP.NET MVC界面美化及使用Bundle完成静态资源管理
查看>>
好代码是管出来的——C#的代码规范
查看>>
1.border-image
查看>>
PagerIndicator主题样式修改
查看>>
java中HashMap类用法
查看>>
完整部署CentOS7.2+OpenStack+kvm 云平台环境(2)--云硬盘等后续配置
查看>>
分布式监控系统Zabbix-完整安装记录 -添加端口监控
查看>>
Python之反向迭代
查看>>
STM32F4 输入输出(GPIO)模式理解
查看>>
转义符
查看>>
第一个移动端项目
查看>>
poj 1019
查看>>
asp.net mvc上传文件
查看>>