集群简介
现状问题
业务发展过程中遇到的峰值瓶颈
- redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到20万/秒
- 内存单机容量达到256G,当前业务需求内存容量1T
- 使用集群的方式可以快速解决上述问题
集群架构
- 集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。
集群的作用
- 分散单台服务器的访问压力,实现负载均衡
- 分散单台服务器的存储压力,实现可扩展性
- 降低单台服务器宕机带来的业务灾难
Redis集群结构设计
数据存储设计
- 通过算法设计,计算出key 应该保存的位置
- 将所有的存储空间计划切割成16384份,每台主机保存一部分
每份代表的使一个存储空间,不是一个key的保存空间 - 将key按照计算出的结果放到对应的存储空间
所谓的增节点或者减节点就是改变槽的位置。
集群内部通讯设计
- 各个数据库相互通信,保存各个库中槽的编号数据
- 一次命中,直接返回
- 一次未命中,告知具体位置,最多两次才命中
-
总结:- 槽用来区分数据的存储空间
- key过来做加密以后确定存储的位置
- 过来以后一次或者两次命中就可以找到数据,提高数据访问性能
Cluster配置
- 设置加入cluster,成为其中的节点
cluster-enabled yes|no
- cluster配置文件名,该文件属于自动生成,仅用于快速查找文件并查询文件内容
cluster-config-file < filename>
- 节点服务响应超时时间,用于判定该节点是否下线或切换为从节点
cluster-node-timeout < milliseconds>
- master连接的slave最小数量
cluster-migration-barrier < count>
Cluster节点客户端数据放置和读取命令
数据放置
redis-cli -c
数据读取
redis-cli -c -p 该客户端对应的主机端口号
以上“-c”必须加,否则不能实现重定向到key加密计算后的slot中取读写,只能对对应slot所在的主机端口号进行命令,读写才有效执行。
Cluster节点操作命令
- 查看集群节点信息
cluster nodes
- 进入一个从节点redis,切换其主节点
cluster replication < master-id>
- 发现一个新节点,新增主节点
cluster meet ip:port
- 忽略一个没有solt的节点
cluster forget
- 手动故障转移
cluster failover
版权声明:本文为qq_41318268原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。