redis常见集群方案

3.0版本之前

 

  1.    3.0版本之前的redis是不支持集群的,我们的redis如果想要集群的话,就需要一个中间件,然后这个中间件负责将我们需要存入redis中的数据的key通过一套算法计算得出一个值。然后根据这个值找到对应的redis节点,将这些数据存在这个redis的节点中。
  2.   在取值的时候,同样先将key进行计算,得到对应的值,然后就去找对应的redis节点,从对应的节点中取出对应的值。
  3.   这样做有很多不好的地方,比如说我们的这些计算都需要在系统中去进行,所以会增加系统的负担。还有就是这种集群模式下,某个节点挂掉,其他的节点无法知道。而且也不容易对每个节点进行负载均衡。

常见集群方案

1.官方方案redis-cluster搭建实战  redis-cluster多主多从集群搭建

2.客户端分片技术(不推荐),扩容/缩容时,必须手动调整分片程序,出现故障不能自动转移

3.可以使用主从复制方式(不推荐)redis实现主动复制,读写分离

优势:

  • 完成了数据备份,保证了单点故障时数据不会全部失效;
  • 从节点可以为客户端提供只读操作,为主节点分担了部分压力;
  • 无论是从节点还是主节点,在同步时都是以非阻塞的方式进行的,都能继续堆外提供服务。

劣势:

  • 这种模式下Redis并不具有自动容错和恢复的功能,如果宕机,那么需要运维人员手动进行主从切换,这段时间内对Redis的部分读写请求无法进行响应;
  • 如果主机宕机,且宕机前有部分数据未能及时同步到从机,那么切换 IP 后还会引入数据不一致的问题,降低了系统的可用性;
  • 但多个 Slave 断线后需要重启的时,不能在同一时间段进行重启。因为只要Slave启动,就会发送 SYNC 到主机发起全量同步的请求,当多个 Slave 重启的时候,可能会导致 Master IO剧增从而宕机;
  • 这种模式下 Redis 很难在线扩容,在集群容量达到上限时在线扩容会变得很复杂;
  • 浪费内存

4.哨兵(基于主从复制),实现故障转移  redis实现哨兵机制

哨兵模式可以说是基于主从模式的,所有主从模式所具备的优点,哨兵模式同样具有。除此之外,哨兵模式中的主从服务器可以指定切换,系统更加健壮,可用性更高。但是Redis哨兵模式依旧很难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。同时在这种模式下每个Redis服务器都存储了相同的数据,很浪费内存。

4.使用一些代理工具

 

猜你喜欢

转载自blog.csdn.net/wota5037/article/details/112039333