如何实现Docker高级篇2中的分布式存储三种算法应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2388个文字,预计阅读时间需要10分钟。
面试题:1亿条数据需要缓存,请设计这个缓存方案示例?
答案:单机单节点100%是不可行的。可采用分布式缓存。
那么用Redis如何落地?一般有三种方案:
1. 哈希取余分区;
2.一致性哈希;
3.轮询哈希(Roud Robin Hash)。
面试题:
1~2亿条数据需要缓存,请问如何设计这个缓存案例?
答:单机单台100%是不可能的。肯定是分布式缓存的。那么用Redis如何落地?
一般有三种方案:
哈希取余分区;一致性哈希算法分区;哈希槽分区。如下图:
大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~
哈希取余分区:
对redis的key进行hash后和机器总数取余。公式:has(key)%N
这种分区算法的优点:
简单粗暴,直接有效。只需要预估好数据规划好节点。就能保证一段时间的数据支撑。使用HASH算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求,起到负载均衡+分而治之的作用。
缺点:
原来规划后的节点,进行扩容或者缩容就比较麻烦了。不管是扩容还是缩容,每次数据变更导致几点有变动,映射关系需要重新进行计算。在服务器个数固定不变的时候没问题。如果需要弹性扩容或者故障停机的情况下,原来的取模公式就会发生变化。此时地址经过某个redis机器宕机了。
本文共计2388个文字,预计阅读时间需要10分钟。
面试题:1亿条数据需要缓存,请设计这个缓存方案示例?
答案:单机单节点100%是不可行的。可采用分布式缓存。
那么用Redis如何落地?一般有三种方案:
1. 哈希取余分区;
2.一致性哈希;
3.轮询哈希(Roud Robin Hash)。
面试题:
1~2亿条数据需要缓存,请问如何设计这个缓存案例?
答:单机单台100%是不可能的。肯定是分布式缓存的。那么用Redis如何落地?
一般有三种方案:
哈希取余分区;一致性哈希算法分区;哈希槽分区。如下图:
大家好,我是凯哥Java(kaigejava),乐于分享,每日更新技术文章,欢迎大家关注“凯哥Java”,及时了解更多。让我们一起学Java。也欢迎大家有事没事就来和凯哥聊聊~~~
哈希取余分区:
对redis的key进行hash后和机器总数取余。公式:has(key)%N
这种分区算法的优点:
简单粗暴,直接有效。只需要预估好数据规划好节点。就能保证一段时间的数据支撑。使用HASH算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求,起到负载均衡+分而治之的作用。
缺点:
原来规划后的节点,进行扩容或者缩容就比较麻烦了。不管是扩容还是缩容,每次数据变更导致几点有变动,映射关系需要重新进行计算。在服务器个数固定不变的时候没问题。如果需要弹性扩容或者故障停机的情况下,原来的取模公式就会发生变化。此时地址经过某个redis机器宕机了。

