美文网首页
redis 分布式

redis 分布式

作者: 写代码的杰西 | 来源:发表于2020-03-17 21:31 被阅读0次

1、redis主从复制的原理
2、哨兵机制的原理
3、分布式方案对比

为什么需要集群

1、性能
2、扩展
3、可用性
可用性、数据安全、性能都可以通过搭建多个 Reids 服务实现。其中有一个是主节 点(master),可以有多个从节点(slave)。主从之间通过数据同步,存储完全相同的数 据。如果主节点发生故障,则把某个从节点改成主节点,访问新的主节点。

主从复制

配置

在每个slave的redis.conf增加

slaveof 192.168.8.203 6379

或者在启动服务时通过参数指定 master 节点:

./redis-server --slaveof 192.168.8.203 6379

或在客户端直接执行 slaveof xx xx,使该 Redis 实例成为从节点。

启动后,查看集群状态:

redis> info replication

从节点不能写入数据,只能从master节点同步数据。get成功,set失败。
主节点写入后,slave会自动从master同步数据
断开复制

slaveof no one

主从复制原理

连接阶段
1、slavenode启动,在本地保存master node 的信息,host和ip
2、slave node 有个定时任务,每隔一秒钟检查是否有新的master node要连接和复制,如果发现,就跟masternode建立socket网络连接。如果连接成功,从节点为该socket建立一个专门复制工作的文件处理器,负责后续的复制工作。

数据同步阶段
master nodde 第一次执行全量复制,bgsave命令在本地创建一份rdb快照,发给slavenode。slave node 清除自己的旧数据,然后用master的rdb来加载数据。

生成rdb文件时,master会把所有的写命令缓存在内存里,在slavenode保存了rdb以后,再把新的写命令复制给slavenode。

命令传播阶段
master node 持续将写命令异步复制给slave node

如果有一个节点一段时间断开连接了,有一个偏移量来记录上一次复制到哪里了。

sentinel 哨兵

为redis提供高可用。

Sentinel 默认以每秒钟 1 次的频率向 Redis 服务节点发送 PING 命令。如果在 down-after-milliseconds 内都没有收到有效回复,Sentinel 会将该服务器标记为下线 (主观下线)。
这个时候 Sentinel 节点会继续询问其他的 Sentinel 节点,确认这个节点是否下线, 如果多数 Sentinel 节点都认为 master 下线,master 才真正确认被下线(客观下线), 这个时候就需要重新选举 master。

相关文章

网友评论

      本文标题:redis 分布式

      本文链接:https://www.haomeiwen.com/subject/twfaehtx.html