其实很多地方都有可能接触到集群的概念。为什么会有集群呢?简单的讲就是人多好办事,本来是一个人需要很费劲才能完成的事,现在分给十个人做,十个人都可以很轻松的完成,在海量数据,信息爆炸的今天,如果想要处理存储更多的数据,但是却没有强大到爆的大型计算机支持的话,集群是个不错的选择。
Redis中也支持集群,Redis中的集群是通过【分片】来进行数据共享的(其实数据库中凡是涉及到集群的,一般都会有分片或者是分区这个概念伴随着出现)。
我们简要来说一下,学习Redis集群,需要学习什么东西,就像是大学上课时的课前概要。第一,既然是集群,那么肯定是要涉及到集群中的组成部分——【节点】,我们需要了解节点是什么?和普通的Redis服务器有什么区别?第二,前面说过的分片,什么是分片?把什么给分了,分给谁,既然分了,那么取的时候怎么办?第三,集群是很多台计算机服务器构成的,如果其中的一台宕掉了,怎么办?难道整个集群就瘫痪了吗?如何预防和处理这种集群中节点宕机的情况?这里就涉及到了复制和故障转移
说集群肯定是要说节点的,节点构成的集群嘛,没有节点哪里有什么集群,很清楚的就可以理解到什么是节点了,【节点就是在集群模式下运行的Redis服务器】 ,集群中的节点和普通的Redis服务器相比,差别在哪里,其实也不难推测出,普通Redis服务器只是单机的服务器,老老实实的处理客户端发过来的命令,然后老老实实的返回处理结果,节点不同,除了这些之外,节点还是集群中的一部分,需要顾及到集群中用到的数据,比如,集群中其他节点的信息,和其他节点握手,判断其他节点是否下线,等等。
集群模式其实在节点中已经引出来,说的直白点,就是服务器运行一种状态,更直白点其实就是一个配置文件中的一个标志位,redis.conf中有个配置项,【cluster-enabled yes】在启动Redis服务器的时候,判断这个配置项的值是否是yes,如果是yes那么就开启服务器的集群模式,使服务器成为集群模式中的一个节点,【这里需要说明一下,成为集群模式中的一个节点,并不能成为一个集群,一个一个点,最后还是点,没法成为一个网的,需要连接,这里需要用到一个redis命令,cluster meet ip port,将两个节点连接起来,构成集群】
分片的概念其实不难理解,可以想象一个芝麻烧饼,太大了,不好处理,将它切开,上面的芝麻就会被分布到不同的部分上,分片是一个动词,是分开烧饼的那个动作,【分片(sharding)是指将数据拆分,将其分散到不同的机器上的过程,有时也用分区这个概念】,以上的概念是在一本MongoDb的书中找的,觉得在Redis这里也能适用,不过,有点不同,【需要注意,Redis分片其实是将一个大烧饼分成了很多小烧饼,然后往烧饼上撒芝麻,至于那个芝麻该到哪块小烧饼上去,这个是需要计算的,通过芝麻的特性】专业点就是,集群中的整个数据库看成一个大烧饼,被分成了16384块小烧饼【槽】,数据库中的键(也就是例子中的芝麻)都属于这些槽,至于这一块一块的小烧饼【槽】该归哪个小馋猫【节点】呢?我们可以通过命令分配【这里叫槽指派,cluster addslots slots】slots是从0到16383,但所有的槽全部分配给节点之后,这个集群数据库才算是真正上线,可以接受客户端发来的处理键的命令了。这里有一步,是各个节点传播各自的槽指派信息,也就是说哪个节点处理哪些槽,大家都是心知肚明的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zhaozonglu/article/details/47010547