Redis的分片集群
今天我们深入理解Redis的分片集群我们知道在一个Redis主从结构中主节点起到的是写功能其他从节点起到的是读实现高并发下的读分片集群设计的初衷就是解决高并发的写操作和海量的数据读存储。我们用分片集群有哪些好处呢其一在以前的主从结构中为了防止有节点宕机我们设置了哨兵机制通过不断的ping-pong检测节点我们设计了分片集群后主节点之间可以互相做检测就可以不使用哨兵当然哨兵的故障转移能力仍然是保存的依旧需要选出从节点升级。其二就是可以处理海量的读写操作那么现在又来了一个问题我们怎么知道要读或是要写的数据存在那个主节点上呢哈希槽16384位将这些槽位均匀的分配个每个主节点执行读写操作时对键值的「有效部分」计算 CRC16 哈希值得到 0~65535 的整数将哈希值对 16384 取余hash % 16384得到 0~16383 的哈希槽编号根据哈希槽编号找到对应的主节点完成读写路由。为什么哈希槽是 16384 个节省带宽节点间同步槽位映射表时用 bitmap位图存储槽位归属 ——16384 位 2048 字节2KB同步时带宽消耗极低如果是 65536 个槽位图会变成 8KB增加网络开销满足业务需求16384 个槽足够支撑绝大多数场景比如 1000 个主节点每个节点仍可分到 16 个槽兼容旧版本早期 Redis 的网络包大小限制2KB 的位图是最优选择
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2413074.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!