redis-cluster集群
1.redis集群必不可少的工具:
1.1 redis
1.2 redis集群搭建工具:redis-trib.rb(类似于IIS协调调度)
将redis分为主从节点
1.3 Ruby 安装Ruby的运行环境
1.4 Ruby环境下的redis驱动:redis-3.2.2.gem
2. 什么是高性能高并发集群
2.1 集群特点:
分担客户端压力,提高服务器效率(高并发)
解决单点故障问题(高可用,删除服务节点,增加服务节点)
2.2 集群类型
对称集群:集群实例角色地位相同(特点:数据计算)
非对称集群:集群实例校色地位不相同(特点:数据存储-读写分离, Master , Slave)
redis是非对称集群(redis是作为数据存储)
3.redis集群演化redis-cluser
redis哨兵模式(Sentinel):redis集群会有一个Master节点和多个Slave节点,通过Master节点写入数据到redis,然后Copy Master中的数据到Slaver节点的redis中,slave有多个,一个Master和多个Slave组成集群,从集群中读数据,即从Master和多个Slave中读数据。当哨兵就是监控Master和Slave的,当哨兵发现Master宕机之后,会从Slave中选择一个作为Master。
问题:
单点写入压力大
当Master宕机之后,重新选择Master的过程中,系统不会响应
解决哨兵模式的缺点:
使用Ruby redis-trib.rb集群搭建工具将数据分散写入多个Master节点,然后通过Master copy到不同的从节点,当其中的某个Master宕机之后,其他的Master还是可以继续写入数据,并且Rube工具会选择新的Slave作为Master。(必须要有3个Master节点)
主从节点同步数据方式:
全量
增量
数据同步会出现的问题:
延时
数据一致性
Master是怎么分片:通过hash一致性算法
4.redis-cluster如何搭建
集群配置文件需要配置:
port 6380 #端口
appendonly yes #数据的保存为aof格式
cluster-enables yes #是否开启集群
appendfilename "appendonly.6380.aof" #数据保存文件
cluster-config-file nodes.6380.config #是否开启集群节点的配置文件(要读取的配置文件)
cluster-node-timeout 15000 #集群节点连接的超时时间
cluster-slave-validity-factor 10 #校验从节点是否能够进行数据复制,校验10次
cluster-migration-barrier 1 #是否配置数据转移
cluster-require-full-coverage yes #是否在主从节点之间开启全量复制
5.redis-cluster内部核心原理