memcache的分布式缓存问题
来源:互联网 发布:办公软件excel教程 编辑:程序博客网 时间:2024/05/21 21:50
有关使用memcache做分布式缓存的方案,简单写下来,仅供参考。
memcache是优异的缓存解决方案,很多项目都有使用。
memcache服务本身并不具备分布式缓存的能力,它提供的就是对{key, value}对的访问能力,分布式的能力则完全来自于客户端。
基于consistent hashing算法的分布式缓存
现在有不少memcache的客户端lib采用consistent hashing作为分布式算法,采用consistent hashing的优点就是:当有节点失效或新节点加入时,可以维持大部分数据的hash规则的不变性,从而使迁移的数据最小化;
但是迁移是必不可少的,否则会带来一致性问题。
双节点策略
有些分布式系统曾采用双节点策略来解决节点失效带来的问题,每一个存储节点都有主/备两个节点,可以把这个策略引入到分布式缓存中来,可以认为两个节点同时失效是一个小概率事件;其缺点就是硬件成本提高了,但是节点失效时,不需要迁移数据了啊(如果主节点还没有down机,主备节点之间还可以快速复制缓存),这个简化了很多设计。缓存数据不允许失效,但是no-hit是完全可以接受的,对于缓存而言这确实是个不错的方案。
N+x备份策略
这个是由双节点策略改进而来的,与其让每个节点都有一个备份节点,不如让N个缓存服务器共用x个备份节点,比如我们取x=3,这样就大大降低了硬件成本。除非同时出现4台服务器down机的情况,才会造成缓存节点不足;这个是个极小概率事件了。
在吸取了双节点策略的同时,也避免了其缺点。
不管是N+x备份还是双节点策略,和consistent hashing是不冲突的,完全可以使用consistent hashing算法来分配{key, value}到不同的缓存服务器上。
服务器动态扩充
不管是N+x备份还是双节点策略,当服务器动态扩充时,缓存数据的迁移也是不可避免的。但是需要缓存的数据,都是热点数据,普通数据何苦缓存呢,数据量也不会太大,需要的缓存服务器不会多,完全可以预估一下极限,在开始就将N定下来。这样就完全不必烦恼数据迁移问题了。
- memcache的分布式缓存问题
- memcache的分布式缓存问题
- memcache的分布式缓存
- 基于memcache的分布式缓存操作
- 分布式缓存- Spring中Memcache的使用
- MemCache分布式缓存
- memcache 分布式缓存
- memcache分布式缓存
- 分布式缓存-Memcache定义
- Memcache 分布式缓存
- 分布式缓存memcache
- memcache 缓存穿透的问题
- Memcache分布式缓存应用实例
- 分布式缓存 Memcache 帮助类
- 分布式缓存--MVC+EF+Memcache
- 分布式缓存Memcache和Redis
- memcache 缓存 分布式锁原理
- 分布式缓存--redis和memcache
- Socket错误
- Pylons 入门实例教程 – cookie 和 session
- 一致性hash算法 - consistent hashin
- Pylons 入门实例教程 – 发布应用
- web.py 数据库操作指南
- memcache的分布式缓存问题
- editplus 3.12
- bdb及其在php下扩展的安装
- Chord:一个用于网络应用的可扩展的P2P查询服务(上)
- 华山论剑之 C++引用的实现机制一(背后的秘密和真相)
- Linux日志系统
- Chord:一个用于网络应用的可扩展的P2P查询服务(下)
- 动态加载页面--小练
- 实现透明位图时对单色位图与颜色位图转换的思考