redis中主从、哨兵和集群这三个有什么区别?
会议中提到回归建筑的主题,涉及海结构、道路和波特等关键概念。然后我们将以更直观的方式解释返回架构之间的巨大差异。
在云架构中,云架构通过在服务器之间复制数据来提高可用性和性能。
主服务器会不断地从服务器推送数据,形成数据备份。
一旦主服务器出现故障,可以按照服务立即从主服务器升级到主服务器。
并且复制过程采用Psync命令,包括完全重新同步和部分同步模式来保证数据的一致性。
为了达到更高的可用性,引入了System系统。
作为集群监视器,监视器持续从属于主服务器。
一旦主服务器出现故障,客户将被服务器自动选举为新的主服务器,实现自动故障。
Sentry系统通过ping命令对服务器进行监控,并在配置时间内确认其状态,以保证高可用性。
分布式集群将数据分布在分布式存储的多个实例中。
每个例子负责存储部分数据,从而扩展了系统的容量。
RedisciCluster使用从客户端将数据分布式到不同的Hashan槽,而Codis等服务器端流设备则通过代理层进行分布式。
例如,当集群的动态端口资产增加或减少时,它会根据表的数量和关系进行更新,以确保数据的正确流式传输。
集群中实例动态扩容时,数据迁移是一个关键的过程。
当客户端请求数据时,如果目标实例数据不相关,则会返回重定向控制,将客户端定向到正确的实例。
迁移过程涉及实例之间的通信和数据级别的传输,例如迁移过程中的一致性和可用性数据。
通过其架构设计,Redis可以提供高可用性、高扩展性和数据一致性,以满足不同场景的需求。
Pelagus架构、Kessinger和集群在提高系统可靠性和性能方面发挥了巨大作用。
再谈Redis三种集群模式:主从模式、哨兵模式和Cluster模式
Redis 支持三种集群模式,旨在提高性能、可用性和可扩展性。主从模式适合高并发读取,典型的部署由一个master和两个slave组成; Sentinel模式提供高可用性,典型配置为1主、2从、3个监控节点; 既能支持高并发读写,大规模扩展时,建议部署为三主三从。
主从模型的核心是主库和从库之间的数据同步,以保证高可用性。
Sentinel模式在此基础上引入了自动故障转移,但写入性能受到限制。
集群模式通过哈希槽分配和节点扩展实现数据的分布式存储,提高写入能力和集群扩展性。
主从模式在搭建环境时需要配置主库和从库。
集群模式还需要配置哨兵节点来监控主从节点,以及配置节点之间的通讯和通讯。
通过测试,客户端和Spring Boot应用程序都可以验证集群模式下的数据读写和一致性。
redis 为什么要部署三主三从
启动Redis事件,然后使用SaveOf命令上传机器的下属所有者。例如,如果selfof192.168.163779,则可以在主机setKeyValue中对其进行测试,然后尝试从机器中获取值。
从机器中输入Selwnone有助于缓解主要关系。
除命令行方法外,SAVYOF168.168.16379还可以安装到配置文件并调整配置文件中的主要关系。
玩转Redis的高可用(主从、哨兵、集群)
所谓高可用,又称高可用性,是分布式系统架构设计时要考虑的因素之一。
Redis高可用主要有三种模式:主从模式、哨兵模式、集群模式。
当 REDIS 数据库中的数据发生变化时,Redis 会自动与其他 Redis 系统同步。
在Redis多机部署中,这些机器节点分为两类: 一种是从主节点(master node),另一种是从节点(slave node)。
正常情况下主节点可以进行读写操作,在该节点上只能进行读操作。
一个主节点可以有多个节点,但一个节点只能有一个主节点。
· Mas 阻塞。
因此,在主从同步过程中,客户端仍然可以提交查询或修改请求。
同步期间,当客户端提交查询请求时,Redis会返回同步前的数据。
· A master Redis中的节点就相当于节点上的数据。
在此模式下,master 宕机,哨兵自动选举 master 并将其他 Slave 指向新的 master。
在主从模式下,Redis也独立运行Sentinel命令Redis-Seentinel。
原理是哨兵进程向所有Redis机器人发送命令。
等待Redis服务器响应以监控多个正在运行的Redis实例。
一般来说,使用奇怪的哨兵来方便决策选举。
多个Sentinel组成一个Sentinel集群,Sentinel之间直接通信以确定Sentinel是否正常运行。
/p>
Sentinel
为此,您可以使用多个 Sentinel 进行监控。
监控是在形成各种哨兵模型的哨兵之间进行的。
Sentinel 与 Kafka 集群中 Zookeeper 的功能非常相似。
· 哨兵模式建立在所有主控和巡逻模式的优势之上。
·主可自动切换,系统更强,可用性更高。
· 基本模式的缺点,每台计算机上的数据都是相同的,内存的可用性较低。
· redis支持在线伸缩比较困难,当集群容量达到上限时,在线伸缩变得非常复杂。
Redis集群模式不使用一致性哈希算法,而是使用slot槽。
Redis Sentinel模式基本上可以实现高可用、读写分离,但是这种模式下每个Redis服务器存储的是相同的数据,比较浪费内存,所以Redis3中加入了集群。
0 直到redis3.0,集群模式识别Redis中的分布式存储并抢占数据。
这意味着每个Redis节点存储不同的。
通信时使用特殊端口号,即外部服务端口号和10000。
例如,某个节点的端口号为6379,则该节点与其他节点通信的端口号为16379。
节点之间的通信比较特殊采用二进制协议。
对于客户,为客户显示了整个群集。
客户端可以连接到工作的所有节点,就好像您正在操作一个Redis实例一样。
如果客户端工作时未将客户端分配给节点,则REDIS返回调整顺序以参考正确的节点。
。
这与浏览器页面的302重定向略有相似。
根据官方建议,群集部署至少需要三个主节点,并且最好使用由三个大师和三个奴隶组成的六个节点模型。
redis中有两个节点,其中一个是一个插槽,范围为0-16383。
您可以从上面的redis-trib.rb中阅读。
执行结果显示分布。
这是三个大师的16383个插槽之一。
另一个是一个群集,可以理解为类似于Sentinel的群集管理插头。
当访问键到达时,REDIS根据CRC16算法计算结果,然后计算其余结果和16384,因此每个密钥对应于零的数量。
-16383使用此值来找到对应于该插槽的节点,然后自动直接跳到该节点以执行连接。
为了确保高可用性,Redis-Cluster群集引入了主奴隶模式,其中一个主节点对应于一个或多个从属节点。
当其他主节点pinging master1 master1时,当超过一半的主节点随着时间的流逝与Master1通信时,Master1被视为下降,并且Master1的Slave Node Slav1被激活,Slave1继续成为主节点。
提供服务。
当master1和slav1 slav1都下降时,群集的插槽映射不完整,因此整个群集失败了。
如果大师的大师的一半以上死亡,则该集群失败了,无论奴隶如何。
redis-cluster采用分散的概念。
客户端直接连接到没有中间代理层的Redis节点。
您可以连接到群集中的所有节点,并连接到群集中的所有节点。
一个可用的点头就足够了。
REDIS群集的扩展是在集群中添加一台计算机,而还原是将机器从集群中删除,并将16383插槽减少到群集的节点。
redis-tri.rb,一种群集管理工具,也用于扩展和减少。
在扩展时,首先使用redis-tri.rbadd节点向群集添加新计算机。
新机器已经在集群中,但是插槽没有分配,因此它仍然不起作用。
的。
仅在使用redis-tri.rbreshard进行碎片灾难(数据迁移)并将现有节点的插槽分配给新节点后才应用新节点。
减少它后,首先使用redis-tri.rbreshard删除机器上的插槽,然后使用redis-tri.rbadd-del删除机器。
采用权力下放的概念,根据插槽,节点之间的共享数据存储并分布在多个节点中,并且可以动态调整数据分布:线性扩展最多可动态添加或删除1000个线性节点和节点。
可能是可能的;
高可用性:即使某些节点不可用,也可以继续使用群集。
如果您将奴隶作为备用数据的副本添加,则可以将八卦协议与节点之间的状态信息交换,并且可以完成投票机制,以完成从奴隶到主人的角色晋升。
。
1。
RedisCluster是一个没有中央节点的群集体系结构,并使用Goss协议自动恢复群集状态。
但是,八卦存在一个问题,即如果群集节点太多,节点之间的ping/pang通信必须继续,并且不必要的流量占用了大量网络资源。
REDS4.0已经对此进行了优化,但是此问题仍然存在。
2。
数据迁移问题
RedisCluster可以动态扩展和减少节点,但是在当前实现中,此过程仍然是半自动的,需要手动干预。
需要数据迁移以扩展或减少规模。
为了确保迁移的一致性,所有redis迁移都是同步工作。
执行迁移时,重新分配了两端的各种长度。
对于较小的高度,这次可以忽略。
。
但是,如果内存使用率太高,则在严重情况下集群中发生错误,这会导致由于迁移而导致不必要的过渡。
master-slave模式:切断主节点后,您必须手动指定新的主节点,并且默认情况下不使用,因为它不是可溶的。
前哨模式:在中断主节点后,Seninal进程会主动选择一个新的主,但是存储在每个节点上的数据是相同的,因此内存空间是浪费的。
数据量不大,群集大小也不是很大。
当需要自动解决和灾难恢复时使用它。
群集模式:当数据量相对较高并且QPS要求较高时,使用它。
Redis 3.0之后,RedisCluster已正式发布,但是在大型生产环境中,您可以证明成功的情况并不多。
K8S部署Redis Cluster集群(三主三从模式) - 部署笔记
在 Kubernetes 中部署 RedisCluster 集群(三主三从模式):实践步骤
Redis 是一种高效的数据结构存储系统,因其快速读写能力和集群能力而被广泛应用。
在Kubernetes中部署RedisCluster集群,我们需要了解集群的工作原理以及StatefulSets控制器的顺序部署策略。
StatefulSets允许根据实例编号启动节点,每个实例的数据都存储在持久卷(PV)上以确保数据一致性。
要动态创建NFS作为存储卷,首先必须在NFS服务器上创建共享目录,并配置相应的RBAC和StorageClass。
1. 配置动态持久存储:在NFS服务器上创建共享目录,并创建NFS-client-provisioner来管理PV和PVC。
接下来,使用redis-trib.rb工具创建镜像并通过configmap将配置挂载到StatefulSet中。
2. 部署RedisCluster:创建StatefulSet,定义volumeClaimTemplates,并保证每个节点都有对应的存储卷。
使用kubectl命令行运行redis-trib.rb工具初始化集群,指定前三个节点为主节点,后三个节点为从节点。
3. 初始化集群后,可以使用kubectl查看各个节点的角色。
例如,redis-cluster-0是master,与其从节点redis-cluster-3建立连接。
同样,redis-cluster-1 和 redis-cluster-4,以及 redis-cluster-2 和 redis-cluster-5 也具有这种关系。
4. 验证部署:确保集群节点之间通信正常。
您可以使用命令行工具对集群进行读写数据等基本操作,以测试集群是否正常工作。