redis集群和主从复制原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis集群和主从复制原理相关的知识,希望对你有一定的参考价值。

Redis(内存数据库)
是一个key-value存储系统(布式内缓存,高性能的key-value数据库)。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。


Redis特点:

  1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  2. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,在set,hash等数据结构的存储。
  3. Redis支持数据的备份,即master-slave模式的数据备份
  4. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s
    5.Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右);
    6.支持(快照、AOF):依赖快照进行持久化,AOF增强了可靠性的同时,对性能有所影响;
    7.Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用;

Redis 集群是3.0之后才引入的,在3.0之前,使用哨兵(sentinel)机制(本文将不做介绍,大家可另行查阅)来监控各个节点之间的状态。Redis 集群可谓是让很多人久等了。
Redis 集群是一组能进行数据共享的Redis 实例(服务或者节点)的设施,集群可以使用的功能是普通单机 Redis 所能使用的功能的一个子集;Redis 集群通常具有高可用、可扩展性、分布式、容错等特性。了解redis的集群后,这些晦涩的概念可结合redis的主从、集群分区和集群运维等角度理解体会。

Redis集群
基本介绍

Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施installation。

Redis 集群不支持那些需要同时处理多个键的 Redis 命令, 因为执行这些命令需要在多个 Redis 节点之间移动数据, 并且在高负载的情况下, 这些命令将降低Redis集群的性能, 并导致不可预测的行为。
Redis 集群通过分区partition来提供一定程度的可用性availability: 即使集群中有一部分节点失效或者无法进行通讯, 集群也可以继续处理命令请求。

Redis集群提供了以下两个好处:

将数据自动切分split到多个节点的能力。
当集群中的一部分节点失效或者无法进行通讯时, 仍然可以继续处理命令请求的能力。


Redis Cluster功能特点如下:
1)所有的节点相互连接
2)集群消息通信通过集群总线通信,集群总线端口大小为客户端服务端口+10000,这个10000是固定值
3)节点与节点之间通过二进制协议进行通信
4)客户端和集群节点之间通信和通常一样,通过文本协议进行
5)集群节点不会代理查询
6)数据按照Slot存储分布在多个Redis实例上
7)集群节点挂掉会自动故障转移
8)可以相对平滑扩/缩容节点


Redis主从复制结构:
一主以从、一主多从、主从从

Redis主从复制工作原理
工作原理:
slave向master发送sync命令

master启动后台存盘进程,并收集所有修改数据命令

master完成后台存盘后,传送整个数据文件到slave

slave接收数据文件,加载到内存中完成首次完全同步
后续有新数据产生时,master继续将新的数据收集到
的修改命令依次传给slave,完成同步。

主从复制缺点:
网络繁忙,会产生数据同步延时问题
系统繁忙,会产生数据同步延时问题

哨兵模式:
主库宕机后,从库自动升级为主库
在slave主机编辑sentinel.conf文件


Redis持久化是如何工作的?

什么是持久化?简单来讲就是将数据放到断电后数据不会丢失的设备中,也就是我们通常理解的硬盘上。

redis 提供了两种持久化方式,一种是RDB,一种是AOF;
RDB 是指在制定的时间间隔生成数据集的快照,
AOF持久化记录服务器执行的所有写命令,并在服务器重启时,重新执行这些命令来恢复数据


RDB的优点和缺点
RDB优点
–高性能的持久化实现 —>创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程介乎后,再用这个临时文件替换上次持久化号的完呢键; 过程中主进程不做任何IO操作(处理客户端请求的进程和负责存盘的进程不是同一个进程)
–比较适合大规模数据恢复,且对数据完整性要求不是很高
RDB的缺点
–意外宕机时,最后一次持久化的数据会丢失


AOF优点和缺点
AOF优点:
– 可以灵活设置持久化方式,同步持久化方式有三种,同步持久化appendfsync always或异步持久化appendfsync everysec
–出现以外宕机时,仅肯能丢失1秒的数据

AOF缺点
–持久化文件的体积通常会大于RDB的体积
–执行fsync策略时的速度可能会比RDB方式慢

以上是关于redis集群和主从复制原理的主要内容,如果未能解决你的问题,请参考以下文章

Redis 主从复制-哨兵-集群 相关部署

Redis 主从复制哨兵和集群区别

Redis主从集群搭建及主从复制原理解析

[ Redis ] 主从复制读写分离哨兵集群的原理分析和配置关注点

[ Redis ] 主从复制读写分离哨兵集群的原理分析和配置关注点

Redis 主从复制哨兵和集群区别