【愚公系列】2022年05月 .NET架构班 054-分布式中间件 Redis集群的三种方式
前言
单体redis如下:
缺陷:单体redis可能由于各种原因导致宕机的问题。所以,需要使用redis主从集群
一、Redis集群
Redis 集群的三种模式
- 主从同步/复制
- 哨兵模式
- Cluster 集群(官方推荐)
1.主从同步/复制
在复制的概念中,数据库分为两类,一类是主数据库(master),另一类是从数据库(slave)。主数据库可以进行读写操作,当写操作导致数据变化时会自动将数据同步给从数据库。而从数据库一般是只读的,并接受主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。
缺陷:redis-主从集群,如果主节点宕机。导致整个redis集群不可用,所以,需要使用哨兵集群。
2.哨兵模式
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器;
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
然而一个哨兵进程对Redis服务器进行监控,也可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
缺陷:无法解决高并发写、无法解决海量数据存储,所以,需要使用redis-cluster。
3.Cluster 集群(官方推荐)
在 Redis 的每一个节点上,都有这么两个东西,一个是插槽(slot),它的的取值范围是:0-16383。还有一个就是cluster,可以理解为是一个集群管理的插件。当我们的存取的 Key到达的时候,Redis 会根据 crc16的算法得出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。
为了保证高可用,redis-cluster集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机的时候,就会启用从节点。当其它主节点ping一个主节点A时,如果半数以上的主节点与A通信超时,那么认为主节点A宕机了。如果主节点A和它的从节点A1都宕机了,那么该集群就无法再提供服务了。
redis-cluster架构说明:
1、6个redis实例。redis-cluster运行需要的角色实例
2、redis-trib.rb。作用:分配redis主从角色
实际业务缓存架构:
- 点赞
- 收藏
- 关注作者
评论(0)