Redis Cluster(Redis 3.X)规划关键ITeye - 众发娱乐

Redis Cluster(Redis 3.X)规划关键ITeye

2019-01-12 01:02:05 | 作者: 雪卉 | 标签: 数据,一个,节点 | 浏览: 1772

架构:无中心

Redis Cluster选用无中心结构,每个节点都保存数据和整个集群的状况
每个节点都和其他一切节点衔接,这些衔接坚持活泼
运用gossip协议传达信息以及发现新节点
node不作为client恳求的署理,client依据node回来的错误信息重定向恳求

数据散布:预分桶

预分好16384个桶,依据 CRC16(key) mod 16384的值,决定将一个key放到哪个桶中
每个Redis物理结点担任一部分桶的办理,当发作Redis节点的增减时,调整桶的散布即可
例如,假定Redis Cluster三个节点A/B/C,则
Node A 包括桶的编号可认为: 0 到 5500.
Node B 包括桶的编号可认为: 5500 到 11000.
Node C包括桶的编号可认为: 11001 到 16384.
当发作Redis节点的增减时,调整桶的散布即可。
预分桶的计划介于“硬Hash”和“一致性Hash”之间,献身了必定的灵活性,但比较“一致性Hash“,数据的办理本钱大大下降

可用性:Master-Slave

为了保证效劳的可用性,Redis Cluster采纳的计划是的Master-Slave
每个Redis Node能够有一个或许多个Slave。当Master挂掉时,推举一个Slave构成新的Master
一个Redis  Node包括必定量的桶,当这些桶对应的Master和Slave都挂掉时,这部分桶对应的数据不可用

Redis Cluster运用异步仿制
一个完好的写操作过程:
1.client写数据到master
2.master通知client "ok"
3.master传达更新到slave
存在数据丢掉的危险:
1. 上述写过程1)和2)成功后,master crash,而此刻数据还没有传达到slave
2. 因为分区导致一起存在两个master,client向旧的master写入了数据。
当然,因为Redis Cluster存在超时及毛病康复机制,第2个危险基本上不可能发作

数据搬迁

Redis Cluster支撑在线增/减节点。
根据桶的数据散布方法大大下降了搬迁本钱,只需将数据桶从一个Redis Node搬迁到另一个Redis Node即可完结搬迁。
当桶从一个Node A向另一个Node B搬迁时,Node A和Node B都会有这个桶,Node A上桶的状况设置为MIGRATING,Node B上桶的状况被设置为IMPORTING
当客户端恳求时:
一切在Node A上的恳求都将由A来处理,一切不在A上的key都由Node B来处理。一起,Node A大将不会创立新的key

多key操作

当体系从单节点向多节点扩展时,多key的操作总是一个十分难处理的问题,Redis Cluster计划如下:
1. 不支撑多key操作
2. 假如必定要运用多key操作,请保证一切的key都在一个node上,具体方法是运用“hash tag”计划
hash tag计划是一种数据散布的例外情况


Reference:
Redis cluster tutorial
Redis cluster Specification

http://blog.csdn.net/yfkiss/article/details/39996129

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章