redis之主从、哨兵、集群
???????? Redis高可用性,因为redis的存储方式是存储于内存中,所以redis在进行数据查询操作时,效率非常的快;因为是存储于内存,为了使数据不丢失,通过RDB或是AOF的方式进行持久化存储;
???????? 但是这边还有一个问题如果说这个主机突然间出现故障,数据全部丢失,那这个时候,可能存储于数据库、redis中的数据就都完全都丢;为了说解决这个问题,所以我们可能衍生出以下的一些解决方式;
一、主从:
????????redis多机器部署时,这些机器节点会被分成两类,一类是主节点(master节点),一类是从节点(slave节点)。一般主节点可以进行读、写操作,而从节点只能进行读操作。同时由于主节点可以写,数据会发生变化,当主节点的数据发生变化时,会将变化的数据同步给从节点,这样从节点的数据就可以和主节点的数据保持一致了。一个主节点可以有多个从节点,但是一个从节点会只会有一个主节点,也就是所谓的一主多从结构。
?? Redis ?的?主从复制?模式下,一旦?主节点?由于故障不能提供服务,需要手动将?从节点?晋升为?主节点,同时还要通知?客户端?更新?主节点地址,这种故障处理方式从一定程度上是无法接受的。
- 例如我们有两台服务器去存储我们的数据,一台为主节点,一台是从节点;主节点是有读写的功能,可以对数据进行操作,但是从的那台只有读取的功能,没有对数据操作的功能;并且两台机子上面的数据都是一致的
- 如果我们的主的这台机子突然间故障无法使用了,那这个时候,我们的从节点对数据是无法进行操作的,这个时候就需要我们人为的将这台从的机子设置为主机子;
二、哨兵?
????????主从模式下,当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这种方式并不推荐,实际生产中,我们优先考虑哨兵模式。这种模式下,master宕机,哨兵会自动选举master并将其他的slave指向新的master。
三、集群模式
????????Redis 的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台 Redis 服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了集群模式,实现了 Redis 的分布式存储,对数据进行分片,也就是说每台 Redis 节点上存储不同的内容;
?????????? 如何对这些内存进行分配呢?
?????????? 通过一些算法(一致性Hash算法),就有点像我们之前hashMap的存储数据一样,通过像hash算法一样,计算出来的一些值是存储于特定的节点上,就可以实现将这些数据的分布式存放
|