redis大纲:
我们先来回顾一下redis集群的作用
负载均衡: 通过主从复制进行读写分离, 提高数据的可用性, 这一句话就概括了集群, 本章我们就看看读写分离!
简单的说说主从复制的作用:
读写分离: 不仅可以提高服务器的效率, 而且可以根据请求的规模增加或减少从库
数据备份: 数据备份到从机, 就算主机机器故障, 也会有其他从机顶上来
简单的说说主从复制的模型:
为了使部分节点挂掉或无法通信的情况下仍保证集群的可用性, 所以季芹使用了读写分离的模型,
每个节点都会有n-1个复制品, 保证了集群的高可用
简单的说说读写分离的模型:
可以增加Slave的数量, 读的性能会线行增长, 为了避免Master的单点故障
集群一般都有两个Master进行双机热备, 所以集群的读写效率都十分的高
Salve负责读, 所以Salve的数量决定读的效率
Master负责写, 所以Master的数量决定写的效率
简单的说说读写分离的缺陷:
读写分离架构的缺陷在于, 不管是Master还是Salve, 他们都要保存完整的数据
如果在数据量很庞大的情况下, 集群的拓展能力还是受限于节点的存储能力
对于写操作密集的程序 (Write-intensive), 读写分离并不适合
简单的说说redis的分片模型:
为了解决读写分离的缺陷, 可以运用数据的分片模型
将每个节点看做为一个Master, 通过业务来实现数据的分片
简单的说说读写分离的流程:
1. 主库向从库发起 sync (同步) 命令
2. 主库接收到同步命令后会fork一个子进程, 这个子进程负责快照 (RDB文件) 的创建,
在此之间, 所有的写命令都会缓存到积压缓冲区中
3. 当主库生成快照后会向从库发送快照以及积压缓冲区中的内容, 从库接收到数据会将数据载入
4. 当主从复制完成后, 主库会将接收到写命令发送到从库
主从复制流程图:
简单的说说 INFO replication命令的作用:
列出从服务器的列表, 可以看出最后一次向从服务器发送命令距离现在多少秒
简单的说说主从断连恢复后怎么进行数据的同步:
在redis2.8以后 当主从断开后会根据最近命令的偏移量进行增量复制
1. 当主从重连后, 从库会向主库发送 psync(id) 这个id是最近一条记录的ID
2. 如果主库id和发来的从库id相同就证明没有新数据 完成同步操作
3. 如果id不相同, 则会去找积压缓冲区的数据进行复制初始化
同步流程图:
简单的说说什么是乐观复制:
这个有点像事务的最终一致性! !
在redis主从复制的情况下, redis采用了乐观复制策略
乐观复制就是容忍在一段时间内主从数据是不同的, 但是数据最终还是保持一致性的
具体的来说就是:
redis主从复制本来就是异步执行的, 这就表明主程序写操作完成或会立马告诉客户端,
则不会等待从库的响应, 这个特性保证了性能不会受到影响, 但是可能会出现数据的不一致!
当主机的数据已经改变, 主机同步到从机之前, 如果主从断连, 则会造成数据的不一致现象!
结束
这就是我对redis读写分离篇的总结 感觉有用就点个赞吧 如果有错误或更好的方法评论区请多多指出 相互学习共同进步