Redis集群相关内容

所谓的集群,就是通过添加服务器的数量,提供相同的服务(这个是集群与分布式的关键区别),从而让服务器达到一个稳定、高效的状态。Redis的集群分为三种模式,分别是主从复制模式、Sentinel模式(哨兵模式)和Cluster模式。

Redis的主从复制机制包括两种模式,分别是普通的主从模式和Sentinel模式(哨兵模式)。主机数据更新后根据配置和策略,
自动同步到备机的master/slaver机制,Master以写为主,Slave只能提供读服务。这种机制主要提供读写分离和容灾恢复的功能。

具体操作:通过slaveof命令,从库配置:slaveof 主库IP 主库端口。每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件。可以通过Info replication命令,查看主从状态。

具体的主从模式有两种:1.只有一个主机,其他都是从机。2.将redis连接成图状的,也是一台从机也可以成为另一台从机的主机。

复制原理:

  1. Slave启动成功连接到master后会发送一个sync命令
  2. Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,
    在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  3. 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  4. 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  5. 只要是重新连接master,一次完全同步(全量复制)将被自动执行

缺点:master挂了以后,不影响slave的读,但redis不再提供写服务,master重启后redis将重新对外提供写服务,并且master挂了以后,不会在slave节点中重新选一个master。所以说,缺点就是master挂掉,则redis无法对外提供写服务。

为了修正上述模式缺少高可用的缺点,Redis就提出了Sentinel模式(哨兵模式)。这个模式能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。

具体操作:新建sentinel.conf配置文件,名字绝不能错。文件中写入sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379(主机的IP和端口号) 1。上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机。通过Redis-sentinel  ./sentinel.conf 命令启动哨兵。

其实,就是启动了一个特殊的Redis实例(哨兵)来实时监控Redis主机的状态,所以这个哨兵所在的服务器最好与Redis主机的不同。一个(组,哨兵也能做成集群)sentinel能同时监控多个Master。

其中,还有一点就是,以前的主机重启回来后,会变为当前主机的从机,继续被哨兵监控。

主从复制的缺点:复制延时。由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

其实主从复制只能解决读请求过多的问题,因为从机可以分担部分的读请求。但是,如果写请求过多,或者要存储的数据过多导致一台机器无法全部存储,这些问题主从复制就无法解决了。这时候Redis就提出了Cluster模式。

对于这个模式,我的理解就是:有多台主机都提供了写服务,然后Redis是通过key对数据进行分片,分别存储在不同的主机上。这样就能分散大量的写请求和存储大量的数据。这里的主机还可以使用上面的主从复制机制,给每台主机都配有从机,这样还能分担读请求和提高可用性。其实,我觉得主从复制就相当于MySQL的读写分离,然后这个cluster模式就相当于MySQL的分库分表。具体的讲解还是读一下这篇博客吧:https://blog.csdn.net/miss1181248983/article/details/90056960

发布了63 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sinat_30955745/article/details/104653357