MemCache缓存multiget hole详解
来源:互联网 发布:樱桃初夏网络剧 编辑:程序博客网 时间:2024/06/04 00:20
multiget 是什么
multiget 指的是从 memcache(或其他分布式缓存) 一次性获得多个键值,一般由memcached client 自行实现。
multiget hole是什么
该问题由 facebook的工作人员提出的, facebook在 2010年左右,memcached节点就已经达3000个.缓存数千G 内容.他们发现了一个问题---memcached连接频率,效率下降了,于是加memcached 节点,添加了后,发现因为连接频率导致的问题,仍然存在,并没有好转,称之为”multiget hole现象”
实例说明
我们使用 Multiget一次性获取100个键对应的数据。系统最初只有一台Memcached 服务器,随着访问量的增加,系统负载捉襟见肘,于是我们又增加了一台Memcached 服务器,数据散列到两台服务器上。开始那100个键在两台服务器上各有50个。问题就在这里:原本只要访问一台服务器就能获取的数据,现在要访问两台服务器才能获取;服务器加的越多,需要访问的服务器就越多,所以问题不会改善,甚至还会恶化。
解决方法
请求多台服务器并不是问题的症结,真正的原因在于客户端在请求多台服务器时是并行的还是串行的!问题是很多客户端,包括Libmemcached在内,在处理Multiget多服务器请求时,使用的是串行的方式!也就是说,先请求一台服务器,然后等待响应结果,接着请求另一台,结果导致客户端操作时间累加,请求堆积,性能下降。如何解决这个棘手的问题呢?只要保证Multiget 中的键只出现在一台服务器上即可!
把某一组 key,按其共同前缀,来分布.比如user-133-age, user-133-name,user-133-height这 3 个 key,在用分布式算法求其节点时,应该以‘user-133’来计算,而不是以user-133-age/name/height 来计算.这样,3个关于个人信息的 key,都落在同1 个节点上,访问个人主页时,只需要连接1 个节点。
原文链接:http://www.maiziedu.com/wiki/memcache/multiget/
- MemCache缓存multiget hole详解
- 缓存无底洞问题(multiget hole)
- 再则memcache的multiget hole(无底洞)
- Multiget hole现象
- PHP缓存技术:memcache函数详解之一
- PHP MEMCACHE 详解(经典php缓存)
- PHP缓存技术:memcache函数详解之一
- PHP缓存应用:PHP MEMCACHE 详解
- memcache缓存
- Memcache 缓存
- Memcache缓存
- PHP缓存技术:memcache函数详解之二
- 【转】PHP缓存技术:memcache函数详解之一
- 【转】PHP缓存技术:memcache函数详解之二
- PHP缓存技术:memcache函数详解之二
- PHP缓存技术:memcache函数详解之三
- 分布式缓存Memcached/memcached/memcache详解及区别
- redis处理事务和memcache缓存基础的详解
- 1209
- es6 javascript的class的静态方法、属性和实例属性
- TCP echo test
- C# 输入验证
- POJ 1862 Stripies 笔记
- MemCache缓存multiget hole详解
- 16 - 12 - 10 关键路径代码(C++)
- 百度地图4.1_1开发教程(9)poi搜索功能
- makefile的编写
- android 弹出一个广告
- Spring AOP源码解读3 - 代理的生成
- 向LeEco致敬
- webpack中如何使用iconfont字体图标
- iOS内购