Redis集群与分布式

主从复制

为了保证Redis服务的高可用,可部署多台Redis服务器,其中只有一个主节点,多个从节点,只有主节点可以执行写入操作。从节点从主节点进行同步,这种方式就叫做主从复制。

info replication – 查看当前服务器的状态主从复制信息

实现方式

  1. 在从节点的配置文件中添加配置:slaveof 0.0.0.0 8888 – 添加主节点的IP与端口号
  2. 在从节点中执行命令:slaveof 0.0.0.0 8888 – 添加主节点的IP与端口号
  3. 在启动从节点时执行命令:./redis-server --slaveof 0.0.0.0 8888

取消主从复制

执行命令:slaveof no one

主从复制原理

从节点在启动时会将主节点的信息保存起来,并每隔1秒监听是否有主节点可以连接。主节点会将RDB文件通过网络连接发送给从节点,在同步文件之间所运行的命令,主节点会缓存起来,后续也会发送给从节点。主、从节点间会保存一个偏移量,如果有一个从节点因为网络故障断开连接,等该节点重新启动后,会根据偏移量定位到上一次同步时断开的位置,进行增量同步。

缺点

  1. 主节点数据量较大时,同步比较慢
  2. 主节点出现问题时,需要手工切换主从

Sentinel哨兵

Sentinel哨兵是支持Redis高可用的一个服务,在Redis服务器发生故障时,自动切换主从节点,它有如下功能:
1.监控:定时检查主从服务是否正常运行
2.通知:如果出现问题会发出通知
3.自动故障切换:主节点发生故障则通过选举算法选择正常的从节点作为主节点
在这里插入图片描述

配置Sentinel

在Sentinel.conf配置文件中配置如下内容:

daemonize yes	-- 后台启动
port 26379		-- 端口
protected-mode no -- 外网访问
dir "/usr/local/soft/redis-5.0.5/sentinel-tmp"	-- 工作目录
sentinel monitor redis-master 192.168.0.0 6379 2	-- 主节点的地址
sentinel down-after-milliseconds redis-master 30000	-- 主观下线时间阈值
sentinel failover-timeout redis-master 180000	-- 同一个master两次故障切换的时间间隔
sentinel parallel-syncs redis-master 1

启动sentinel服务
./redis-sentinel …/sentinel.conf

sentinel原理

主观下线与客观下线
主观下线:sentinel每秒会发送ping命令,如果一段时间内没有收到redis节点的回复,则会被标记为主观下线
客观下线:询问其他哨兵,查看该节点是否有下线

如果确定redis节点已经下线,Sentinel就会通过选举(Raft算法)选出一个Leader来进行故障切换操作。

从节点被选举为主节点的条件:

  1. 断开连接的时长
  2. 优先级(可配置,replica-priority)
  3. 通过主从节点的偏移量offset,谁同步的数据越多则机会越大
  4. 进程ID最小

sentinel缺点

1.主从节点故障切换时,还是会存在数据同步丢失
2.只有一个master服务做写操作,数据量较大时性能低

Redis数据分片

当数据量较大时,可以将数据分别分给不同的Redis服务器,避免因为一个服务器压力太大从而影响性能。

数据分片的方式

1. 客户端分片

Jedis案例:
在这里插入图片描述

2. 代理分片

  1. Twemproxy
  2. Codis

3. 服务端分片Cluster

Redis Cluster 可以实现在多个节点之间自动分片数据,并且在集群分片后可以提供高可用的功能。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值