【Redis集群底层机制及原理】-创新互联
围绕以下这张图展开描述:
为富拉尔基等地区用户提供了全套网页设计制作服务,及富拉尔基网站建设行业解决方案。主营业务为成都做网站、网站建设、富拉尔基网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!前言:了解Redis集群之前请先了解Redis的主从复制架构和哨兵机制~
1、什么是Redis集群所谓Redis集群,就是将0-16383个槽均分给集群当中的物理节点,所谓物理节点,就是我们之前所说的主节点,即对外提供服务的节点,注意,此时的主节点可能不止一个。后续的客户端进行操作时,并非直接去操作某个节点,而是经过集群处理过后再去操作某个节点,这样一来,减少了单个节点的压力,类似于负载均衡的原理。
2、为什么是0-16383个槽?而不是整数个或者其他数字?Redis集群当中采用了CRC16算法,这个算法有如下特点:
①、对集群模式下的所有key进行CRC16计算,计算的结果始终在0-16383这个范围内。
②、对客户端的key进行CRC16计算时,同一个key多次进行计算,结果始终一致。
③、对客户端的不同key进行CRC16计算,计算的结果会出现不同的key的计算结果一致的情况。
基于以上的特点,因此我们可以得出结论:我们可使用的槽有16384个。
3、客户端需要操作Redis时,具体流程是什么样的?以图为例:
Node-1节点持有0~5000槽位
Node-2节点持有5001~8000槽位
Node-3节点持有8001~13000槽位
Node-4节点持有13001~16383槽位
问题1:说好的均分槽位呢?
此处所说的均分,并非是我们常规理解意义上的用16384除以节点个数,而是均匀的分配,使其槽位都分配出去。
问题2:节点个数有没有要求?
如果是16385个节点,那槽位不就没得分了?总得有一个节点没有节点分不到槽,此时,Redis集群就不会搭建成功。并且,我们我们为了保证集群的高可用性,建议每个主节点都至少持有一个从节点,当主节点宕机的时候,从节点可以顶替上来~
问题3:从节点如何顶替主节点?
主节点持有的槽位会转移给从节点,因为从节点上面的数据和主节点的一致,只需要将数据分配进槽位即可。
问题4:在原有集群当中添加新的节点?此时槽位如何分配?
在上图过程当中,我们比如添加Node-5节点,此时Node-5节点假设需要2000个槽位,此时其余四个节点就会拼凑出2000个槽位给Node-5节点,同时槽位当中的值也会转移给Node-5节点,这样一来,Node-5节点就算添加进了集群。
注意:需要保证0-16383个槽位都分布在某个节点上,不会存在槽位未分配的情况。
客户端操作步骤:
①、我们知道客户端操作Redis时,根据客户端持有的key-value数据,CRC16算法对key进行计算,根据计算得出的结果去找到持有这个槽位的节点。
②、找到节点之后,在节点上进行操作
③、集群维护节点-》节点维护槽-》槽维护值
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页名称:【Redis集群底层机制及原理】-创新互联
文章转载:http://abwzjs.com/article/cojioj.html