redis-cluster 集群

Redis的集群模式

主从

  • 通过持久化,在即使数据库重启的情况下,也不会丢失数据,这一台服务器即使出了故障,也不用担心数据丢失

  • 出现了复制功能,所以的一主二从的模式,多数据库可以进行读写,一般从数据库用于读和同步从数据库的内容

  • 一个主数据库可以有多个从数据库,一个从数据库只能有一个主数据库

哨兵模式

简单的主从模式,当主数据库宕机的时候,需要手动的把一台从数据库切换为主数据库,这个过程需要手动的干预,费时费力。

redis的 哨兵,通过发送命令,等待redis的响应,从而监视运行的多个redis实例。

cluster

  • redis的哨兵模式,基本上都实现了高可用,读写分离,但是这种情况下,每台redis 服务器都存储着相同的数据,浪费空间

  • redis3.0 以后,推荐使用 cluster 集群模式,实现 redis 的分布式存储。也就是说每个 redis 上存储不同的内容

Redis Cluster(集群)

  • redis cluster 完全去中心化,不存在中心节点和代理节点

  • redis 集群没有统一的入口,客户端可以连接到集群的任意节点上,redis 内部的节点是可以相互通信的。

如何判断一个节点是否挂掉?

为了实现集群的高可用,判断节点是否健康,redis-cluster 会有这么一个投票机制,如果超过半数的节点认为这个节点挂了,那么这个节点才算挂了。

如何判断一个集群是否挂掉?

如何任意一个节点挂了,而这个节点又没有从节点,那么这个集群就挂了。

为什么一个任意一个节点(没有从节点)挂了,整个集群就挂了呢?

这是因为 redis 集群内置了 16384 个slot 卡槽,并且把所有的物理节点都映射到这个卡槽上。或者说把这些个卡槽平均分配给各个节点。


redis为了保证高可用,redis官方建议使用至少使用3个主节点,最多一千个节点

redis集群搭建

redis至少需要三个节点

  • 因为要超过半数的几点认为某个几点挂了,才能把这个节点挂了,所以单个的节点无法构成集群

  • 最好是奇数个节点

redis集群至少需要六台服务器

  • 因为redis为了保证高可用,所以他的每个节点,都会有两个从节点

  • 本地使用伪分布式,即一个 redis 可以启用多个端口。这个过程其实和生产环境是一样的

redis在搭建集群之前,最好先还原最原始的环境。

CAP

C一致性

A高可用

P分区容错性:当网络分区发生故障的时候,仍旧可以对外提供一致性和可用性服务。 所以P是必须存在的

可用性和一致性是一对冤家,他们是一对冤家,同一时间只能满足一个

举个例子

如上图,主从数据库之间某个网络连接断了。那么此时主数据库往从数据库上同步数据失败,此时就可以有两种情况选择。

  1. 让从数据库不再对外提供服务,直到主从之间的连接再次连通为止。这样就保证了,只要客户能访问到的数据,肯定是实时准确的,所以有一致性,但是没有了高可用

  2. 选择2就是,让 redis 继续对外提供服务,这样可以满足高可用,但是就不满足了一致性了。

启动配置过程

启动 6 个redis

本人使用docker ,启动 6个 redis服务。redis 的配置文件需要下载的。

docker run -v /home/peng/dockervfiles/redis:/usr/local/etc/redis --name tc06 -d -p 7006:6379  aa
posted @ 2021-08-13 19:16  沧海一声笑rush  阅读(129)  评论(0编辑  收藏  举报