memcache的分布式缓存问题
2010-11-22 18:39
183 查看
有关使用memcache做分布式缓存的方案,简单写下来,仅供参考。
memcache是优异的缓存解决方案,很多项目都有使用。
memcache服务本身并不具备分布式缓存的能力,它提供的就是对{key, value}对的访问能力,分布式的能力则完全来自于客户端。
但是迁移是必不可少的,否则会带来一致性问题。
节点同时失效是一个小概率事件;其缺点就是硬件成本提高了,但是节点失效时,不需要迁移数据了啊(如果主节点还没有down机,主备节点之间还可以快速复
制缓存),这个简化了很多设计。缓存数据不允许失效,但是no-hit是完全可以接受的,对于缓存而言这确实是个不错的方案。
在吸取了双节点策略的同时,也避免了其缺点。
不管是N+x备份还是双节点策略,和consistent hashing是不冲突的,完全可以使用consistent hashing算法来分配{key, value}到不同的缓存服务器上。
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的分布式缓存问题
- php memcache与php memcached以及遇到的问题
- Memcache存储大数据的问题
- Memcache存储大数据的问题、的删除机制LRU
- 分布式缓存集群方案特性使用场景(Memcache/Redis(Twemproxy/Codis/Redis-cluster))优缺点对比及选型
- 阿里P8技术专家细究分布式缓存问题
- Memcache SchoonerSockIOPool-attempting to get SockIO from uninitialized pool! 问题
- 解决memcache连接奇慢问题一例
- memcache client 的递增 incr 问题
- 请注意Rails2.3自带的memcache-client有性能问题
- 【memcache安装】Win8+wampserver64 环境下安装出现各类问题解决
- Memcache 的一些问题及解决方法
- 【转】系统缓存全解析二:动态缓存(4)-第三方分布式缓存解决方案 Memcache(1)
- Memcache存储大数据的问题
- 阿里P8技术专家细究分布式缓存问题
- Memcache的问题集
- 分布式系统开发常见问题-1. session的复制与共享 2. 分布式缓存的设计
- Memcache问题集锦
- Memcache存储大数据的问题