RedisCluster-集群
发布时间
阅读量:
阅读量
简介
在生产环境中,我们希望Redis可以支持以下特性:
- 高可用性:确保Redis服务始终处于高可用状态,并有效降低因单节点故障导致的数据丢失风险
- 具备扩展性:在实现横向扩展时只需添加相应的节点即可
通过主从复制与Sentinel的结合方式可以实现系统高可用性,在解决扩展模式下的读性能问题的同时仍是一个单一实例的Redis数据库。然而为了应对扩展模式下的写性能问题官方推荐采用Redis Cluster作为解决方案
原理
该系统未采用一致哈希技术而采用了被称为哈希槽的新方法来实现数据分片功能。系统中设置了16384(即2¹⁴)个哈希槽,并通过将键值的CRC16编码对16384取模来确定存储位置。这些哈希槽均匀分配到集群的所有节点上例如一个包含三个Node的集群:
- NodeA包含0-5500个哈希槽
- NodeB包含5501-11000个哈希槽
- NodeC包含11001-16383个哈希槽
通过这种方式操作Cluster时进行节点增删变得更加便捷。例如,在需要增加一个新节点D时,则只需将这些哈希槽转移至新节点D;当需要删除节点A时,则需将其相应的哈希槽分配给剩余节点B和C。

还没有任何评论哟~
