Redis中提供的集群方案:
- 主从复制
- 哨兵模式
- 分片集群
- redis主从数据同步的流程是什么?
- 怎么保证redis的高可用和高并发?
- 你们使用redis是单点还是集群,那种集群?
- redis分片集群中数据是怎么存储和读取的?
- redis集群脑裂,该怎么解决呢?
腾讯云内存版标准架构:
腾讯云内存版集群架构:
Proxy 特性:
它负责执行路由分配、均衡负载以及自动故障切换等关键任务,从而为您简化了客户端的逻辑处理。深入理解 Proxy 的路由机制和对特定命令的处理策略,将助力您构建更为高效的业务架构。
主从复制特点:
如果目前你使用的redis是单节点,那么单节点的并发能力是有上限的;想要提高并发能力,最常见的就是搭建主从集群,并且它能够实现读写分离。一般使用这种场景的都是读多写少。它的架构是多个节点,一个主节点叫master,其他节点叫salve或replica。主节点接收写操作,并把数据同步到从节点,从节点接收读操作,这样读的并发能力自然是提高了。
主从数据同步原理:
说到主从数据的同步,自然而然想到数据应该有两种不同情况。第一次同步叫做全量同步,有数据之后就应该增量同步。
全量数据同步(当有一个从节点,接入集群后):
从节点salve执行建立连接的操作,然后master发起同步数据的请求。
master接收到请求后,会先去判断一下这个节点是不是第一次同步,如果是第一次同步就把数据的版本信息发送给从节点,从节点把信息保存到本地,这时主从的版本信息就保持一致了。
master同时会执行一次bgsave,然后将rdb发送给从节点
从节点接收到数据后,将会清空本地的数据,执行rdb中间,完成了数据同步。
(如果这个过程中master还接收到新的写命令,将会将它保存到而是同步repl_backlog文件中,然后再将这个文件发送给从节点,从节点执行完这个文件的数据,这时主从的数据就完全同步了)
master它是如何判断从节点salve是第一次请求那呢?
主从之间是如何确保同步数据时候,每次都是不多不少呢?这部分数据就是从节点需要的数据呢?
知识点:
- replication ID,它是一个数据集的标记
如果主节点和从节点它们是同一个ID,那么就说是一个数据集。
当从节点发起请求数据同步时候,就会把自己的replication ID发送给主节点,主节点将它与自己的replication ID 比较,不一样就说明是第一次进行数据同步。然后就把自己的replication ID发送给从节点。
如果说主从节点的replication ID是一样的,那么说它们是已经全量同步过一次了,那么此时的同步就是增量同步了,不会创建rdb文件了,而是同步repl_backlog 文件。那应该怎么同步呢?
知识点:
offset 偏移量
当从节点请求数据同步时,就会携带自身的offset发送给主节点。主节点将之与自身的偏移量比较,就知道该从而是同步repl_backlog什么位置到什么位置的数据该同步给salve了
全量同步图解
增量同步图解