Redis 框架的高可用怎么实现?

您所在的位置:网站首页 redis内存机制 Redis 框架的高可用怎么实现?

Redis 框架的高可用怎么实现?

2023-04-10 15:44| 来源: 网络整理| 查看: 265

1.redis的集群模式有哪些?各自的优缺点有哪些?

redis一共有三种模式,分别是主从模式,哨兵模式(Sentinel),Cluster(模式)集群切片

主从模式存在的问题:无法自动选主。

哨兵模式通过哨兵解决了自动选主的问题,存在的问题:在线扩容很复杂。

Cluster模式利用分布式的数据存储,能够很好的解决,在线扩容问题。

2.redis的高可靠性从哪些方面体现?

redis的高可靠性从4个方面体现:主从复制,Sentinel(哨兵),Cluster(集群分片,分布式存储),持久化(RDB和AOF)

3.redis的主从复制是什么?

redis主从复制是解决数据读写分离问题,采用1主多从,主节点负责读和写,从节点只负责读,同时主节点负责把最新的数据同步到从节点。

4.主从模式存在的问题

1.主节点单点挂掉的问题

2.主库和从库如何同步数据,保证读数据的一致性

5.主库和从库如何同步数据,保证读数据的一致性

主从库数据同步分为两种情况:

1.第一次进行数据同步(全量数据同步)

2.网络断连之后的数据同步(增量数据同步)

第一次进行数据同步(全量数据)的过程如下:

1.建立主从库连接,协商同步 (从节点发送 “psync ? -1”给主节点,主节点响应FULLRESYNC runId offset给从节点,从节点保存主节点信息)

2.主节点发送RDB文件给从节点,从节点先清空现有数据,再加载RDB文件

3.主节点同步缓存区数据(repl buffer)给从节点 ,从节点加载repl buffer

断网之后的数据同步过程如下(增量复制)

网络断连以后,主库会把新的写数据写入新的缓存区,缓存区是一个循环链表有两个指针,从节点的偏移量不会改变,主节点的偏移量一直在增加,当连接恢复的时候,从节点向主节点发送带偏移量的psync,主节点根据偏移量进行比较,发送增量数据给从节点。

6.主从模式只有一个主节点,如果主节点挂掉怎么办?

通过哨兵模式(Sentinel),哨兵是一个进程,哨兵通过ping 命令检测与主库连接,如果超时,就代表主库挂了,会进行自动选主,选主完成后,通知其他的从节点和客户端。哨兵是一个集群,有多个哨兵组成。

7.哨兵的主要功能是什么?

哨兵的主要功能是监控主从库节点状态,自动选主,选主成功后,通知从节点和客户端。

8.哨兵选主的规则是什么?

按照一定的筛选条件和打分策略。

筛选策略:网络不可用的和网络连接不太好,经常掉线的从节点去掉。

打分策略:1.从节点的优先级 2.主从节点复制之间的offset差,越小越好 3.从节点的runId,越小越好。

9.哨兵挂了,主从库还能切换吗?

部署多个哨兵实例,构成哨兵集群,一个哨兵挂掉,其余的哨兵会选出一个新的leader,进行主从库的切换。

10.多个哨兵如何组成一个哨兵集群

基于redis的pub/sub机制组成哨兵集群,组建哨兵集群的步骤如下

1.哨兵与主库建立连接

2.在同一个频道上,各个哨兵在主库上发布自己的信息和订阅别的哨兵的信息

11.哨兵如何获得从库的信息

哨兵向主库发送info命令获得从库信息

12.有多个哨兵,如何选择哪个哨兵作为主从切换的哨兵?

哨兵之间通过投票选择一个leader,leader哨兵作为主从切换的哨兵。作为一个leader哨兵,应该满足下面的两个条件:

1.拿到半数以上的赞成票

2.赞成票数>=配置文件中quorum值

13.主库切换完成后,客户端如何获得新主库的信息

客户端与哨兵建立连接,在哨兵上订阅主从库切换的消息,获得新主库的消息。

14.数据增多了,应该加内存还是加实例?

纵向加内存会面临两个问题 1.随着数据量的增加,持久化RDB越来越来,fork子进程可能会阻塞主进程。2.纵向扩展会受到硬件和成本的限制。

横向扩展使用切片集群,只需要增加实例个数,不存在上面的两个问题。

15 切片集群是什么?

redis cluter模式利用sharding技术,实现redis的分布式存储,也就是说每台redis上存储不同的数据。

16.一个切片集群需要解决什么问题

1.数据如何在多个实例间分布

2.客户端如何知道要访问的数据在那个实例上

17.客户端如何获得所有hast slot信息

创建各个实例时,每个实例只知道自己hash slot的信息,建立集群时,各个实例相互连接,各个实例会共享自己的hash slot信息给其他的实例,从而每个实例有完整的hash slot的信息,当客户端与实例建立连接时,客户端获得完整的hash slot信息,并把信息缓存到本地,当客户端发送请求时,会先计算出hash slot,然后根据本地的缓存表,去访问真正的实例,获得数据。

18 数据如何在多个集群间分布

redis cluster 使用的hash slot实现数据在多个实例间的均匀分布。首先根据键值对的key,根据CRC16计算一个16bit的值,然后对16384取模,得到的值是hash slot的位置。每个实例节点手动或者自动分配一定数量的hash槽。实现hash slot的对应关系。最终实现key--hash slot--实例id

19.如果遇到实例增减,或者负载均衡,客户端如何找到实例间的数据?

redis cluster使用重定向的机制,帮助客户端找到实例的数据。重定向机制是客户端向一个实例发送读写数据时,如果在实例中找不到数据,会返回新的实例的地址,客户端需要再请求一次新实例的地址,才能获取到数据,同事客户端本地的缓存。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3