Redis深入历险读书笔记第三章集群篇

主从同步

CAP原理

C:一致性
P:分区容忍性
A:可用性
分布式事务基本满足CP、AP不可能同时满足CAP、CA,因为一致性保证就不能保证可用性。
:Zookeeper就是满足的CP、nacos满足的是AP默认、也可以通过修改配置满足CP

最终一致性

最终一致性是指在分布式事务下,我只保证最后的事务在所有分布式情况下的数据一致性,允许在分布式情况下的过程中存在事务不一致的情况。BASE理论。

主从同步和从从同步

从从同步是Redis后续版本引入的功能,主要目的是解决主机的负担。
在这里插入图片描述

增量同步

快照同步

非常消耗资源。

  1. 将主节点的数据进行一次bgsave
  2. 将快照发送给所有子节点
  3. 子节点进行全量加载,加载前要清空数据
    在这里插入图片描述

增加从节点

当从节点刚刚加入到集群,要先快照同步之后做增量同步。

sentinel 哨兵

哨兵主要负责监控节点状态,当主节点挂掉之后,自动选择一个最优的从节点切换为主节点。

  1. 客户端来链接集群时,先连接哨兵
  2. 通过哨兵查询主节点地址。
  3. 然后连接主节点做数据交互,客户端会缓存主节点信息
  4. 节点故障时,哨兵会告诉客户端主节点更换,客户端拉去最新的主节点

消息丢失

sentinel基本用法

默认端口是26379

分而治之——Codis

Codis分片原理

  1. codis默认所有的key分成1024个槽位
  2. 然后更具请求的key进行CRC32运算计算hash
  3. 然后更具hash后的整数值队1024这个整数进行取模得到一个余数,这个余数就是key的槽位。

不同的Codis实例之间槽位关系如何同步

通过ZK来管理槽位

扩容

Codis的优点

  1. 简单它将分布式的处理交给了ZK或etcd去负责。自己省去分布式的一致性代码维护工作。

mget指令的操作过程

mget指令用于批量获取key 的值,Codis时通过将key按照所分配的实例打散分布,然后一次对每个实例进行调用,然后把结果汇总统一返回。

Cluster

Cluster将所有数据分为16384个槽位。

槽位算法

cluster是通过crc16算法进行hash计算,得到一个整数值,然后用这个数据对16384进行取模计算具体槽位。

跳转

当客户端发送了一个求情指令如果槽位错误,那么cluster会更具正确的槽位信息,告诉客户端应该请求的是哪个槽位,客户端会从新缓存新的槽位表。

容错

Redis Cluster可以为每个主节点设置若干个从节点,当主节点故障时通过选举来选出新的主节点,如果某个主节点没有从节点,那么它将会不可用。

网络抖动

指当从节点发现主节点下线后,从节点会等待一定时间在进行主从切换,这是避免从节点时因为网络原因没有收到主节点的状态信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值