很多人都知道redis支持高并发,单节点可以支持10w/s的高并发。在实际生产使用环境中,除了追求高并发外,通常还要求高可用。这也就是redis集群的由来。
分布式中存在一个CAP理论的概念。
C代表Consistent 一致性
A代表 Availability 可用性
P代表 Partition tolerence 分区一致性
分布式系统一般都部署在多台服务器上,这也就意味着肯定会发生网络断开的风险。也就是说发生网络断开的时候,两台服务器间的数据一致性或者是否可用不能够同时满足。所以分布式系统中一般都是追求满足AP或者CP的服务。
Redis主从服务就是AP的了。当网络分区发生的时候,主从节点都可以对外提供服务。网络分区消除的时候,从节点会继续同步主节点产生的不一致数据。
同步有分为全量同步和增量同步,全量同步呢?就是redis此时此刻生成一个快照,把快照导入从服务器。全量同步一般会占用一定的资源。
增量同步呢?就是主节点10秒内修改了什么内容,从节点把这些内容同步过去。Redis同步的是指令流。主节点会把新增、修改、删除的指令记录到本地的buffer中,然后通过异步把buffer传到从节点。但是内存中的buffer是有限的,所以我们可以把redis的buffer想象成为一个buffer环