Redis 集群的简单介绍

0X 00 前言

Redis是啥?Redis是一款优秀的开源 Key-value 型的数据库,Redis将数据存放在内存当中,因此读写速度十分之快,读的速度是110000次/s,写的速度是81000次/s.并且支持丰富的数据类型,包括String, List, Hash, Set 及 Sorted Set 。

虽然数据存放在内存,但是依旧能够将通过不定时的向硬盘刷入数据,从而完成持久化。

0X 10 何为集群

对于集群可能大家都听过,听起来是很高大上的东西。其实不然,如果你了解了,就会发现,这是一件处于人类很自然的思考。

那么到底啥是集群呢?

所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态

是不是很简单的概念?那这时候有人就有疑问了,为什么Redis性能这么高了,为什么还要搞集群,分布好几个服务器?

其实使用集群一来是为了效率,二来是为了安全

因为一台服务器的话,很难保证它就不会出问题,如果出现宕机并且没有进行持久化,那么存储在Redis的数据就会直接丢失,这是十分恐怖的

0X 20 集群具体实现

我们要了解集群,就必须要有以下几个概念:

  • Redis集群中,每一个redis(或者说服务器)称之为一个节点
  • Redis集群中,有两种类型的节点:主节点(master),从节点(slave)
  • Redis集群中,是基于Redis主从复制实现的

redis主从复制

在这个模型中,我们会选定一个Redis作为Master,也就是主节点,需要记住的是,有且仅有一个Master。从节点Slave会有多个

只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步
在这里插入图片描述

特点

1、主节点Master可读、可写

2、从节点Slave只读

但是在实际当中,更多的倾向于将Master设计为只写的,将读数据全部都分布的Slave节点上去,这样就可以避免出现读写冲突的问题,从而能够获得更大的效率

0X 30 哨兵(Sentinel)模式

我们刚才阐述了集群的具体内容,想必大家都有所了解了。

但是我们会发现上面的模式存在这一个严重的问题,因此Master只有一个,如果Master宕机了,那么整个集群是不是就不能工作了呢?所以我们需要用另外一个机制来解决这个问题——哨兵

何为哨兵?

哨兵就是用来盯梢的,盯啥哨呢?盯整个集群的梢。它有三个任务:

  • 监控:哨兵会不断的检查主服务器和从服务器是否运行正常
  • 提醒: 当别监控的某个 Redis 服务器出现问题时,哨兵会通过API想管理员或者其他应用程序发送通知
  • 自动故障迁移: 当一个主服务器不能正常工作时, 哨兵会开始一次自动故障迁移操作, 它会进行选举将其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器

当原来的Master重新上线之后,就会变成一个新的Salve加入到集群当中

我们还需要注意的是,所谓的哨兵不是只有一个,而是使用的哨兵网络,因为只有一个哨兵的时候,如果这个哨兵挂掉,那么就无法实现自动故障切换了。所以这也是一种为了避免这种问题的发生

0X 40 后言

现在我们大概了解了集群和哨兵的概念,现在在回头看,其实就和最开始说的一样,是一种很自然的想法,因为为了避免单一服务器出现错误而导致整个系统不可用,所以将数据分布在多台服务器上。这本身就是一种容灾技术。

而为了提高效率,只将Master作为写服务器,因为有统计表明,数据库的读写比例大概是4:1多一部分时间是在读,因此将读操作发散到多个slave服务器上。这样就很大的提高了效率

而哨兵模式的出现则是为了避免这种以Master为中心的系统中心崩溃而导致的系统瘫痪。

这些都是很符合常理的想法与设计,并且我们可以看大其他的数据库也有类似的模式,比如MySql中就存在主从模式,其实思想与设计都是差不多的

了解集群不当当是了解这样的一种模式,其实我们更多的是了解这样思考方式,从而迁移到其他领域。

好啦,今天就讲到这里了,希望对大家有所帮助~

————————————————————————————————————————————

参考:redis集群简介

猜你喜欢

转载自blog.csdn.net/rjszz1314/article/details/104924316