redis
cluste在3.0中有了三种分区方式,顺序,哈希存在数据迁移的问题会造成数据的一个丢失,我们一般采用虚拟槽分区不存在数据丢失接下来我们看看:

2.哈希分布:
1.对节点数取余,是在客户端分片。优点简单。缺点:扩容影响太大!添加节点的时候整个数据会做很多偏移。3个节点扩容添加1个节点,会发生80%的数据迁移。
如果用这个中方式做数据分布,扩容的时候建议使用多倍扩容。比如3个节点,扩容的时候,再添加3个节点,这样只会发生50%的数据迁移。
不建议使用这种古老的数据分布方式。
2.一致性hash
原理,数据做成token环,为每一个节点分配一个token,key做了hash后会落在两个node2之间,顺时针找离它最近的节点。是在客户端分片。节点比较多的时候建议使用这种方式。节点伸缩的时候只影响临近的节点,还是要使用多倍扩容,不然会数据倾斜。
3.虚拟槽分区
这就是redis cluster使用的数据分布方式。
预设虚拟槽:每个槽映射一个数据子集,一般比节点数大。
由服务端管理节点、槽、数据的关系。

加载中,请稍候......