pipeline及主从同步

pipeline:
前提:redis本身基于tcp的一个Request/Response protocol模式,单个请求处理需要一一应答
使用场景:比如多个指令需要被提交,而且这些指令没有互相的依赖关系,不要求结果的即时响应。那么使用pipeline可以充当批处理的工具。
作用:提升性能,因为TCP连接中减少了交互往返的时间,也减少了io操作磁盘的次数。


主从同步原理
主从结构采用一主多从或者级联结构。
主从同步分为全量同步和增量同步。

全量同步:


图片来源:https://blog.csdn.net/sk199048/article/details/50725369

增量同步:
1>master接收到用户的操作指令,判断是否需要传播到slave。
2>将操作记录追加到AOF文件。
3>将操作传播到其他slave:对齐主从库(确保从数据库该操作锁对应的数据库)往响应缓存写入指令。
4>将缓存中的数据发送给slave。


主从模式的弊端
不具备高可用性,当master挂掉之后,redis就不具备写入操作了,所以怎么办呢?
Redis Sentinel(哨兵)
redis官方提供的集群管理工具,本身也是一个独立运行的进程,监控多个master-slave集群,发现master宕机之后,能进行自动切换。
1>监控:检查主从服务器是否运行正常
2>提醒:通过API向管理员或者其他应用程序发送故障通知
3>自动故障迁移:主从切换

redis sentinel是一个分布式的系统,可以有多个sentinel进程,这些进程使用流言协议来接收主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个从服务器作为新的主服务器。

流言协议Gossip(反熵)
熵:杂乱无章。反熵:在杂乱无章中寻求一致。
1>每个节点都随机与对方通信,最终所有节点的状态达成一致。
2>种子节点定期随机向其他节点发送节点列表以及需要传播的信息。
3>不保证信息一定会传播给所有节点,但是最终会趋于一致。

你可能感兴趣的:(pipeline及主从同步)