分布式缓存Memcache
2015-06-14 18:23
543 查看
Memcached是分布式的,也就是说它不是本地的。它基于网络连接(当然它也可以使用localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式)。
Memcached使用libevent库实现网络连接服务。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。
Memcached是“分布式”的内存对象缓存系统,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源。它的实际瓶颈在于网络连接。
memcached使用内存管理数据,所以它是易失的,当服务器重启,或者memcached进程中止,数据便会丢失,所以memcached不能用来持久保存数据。并且内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。完全取决于客户端的实现来进行分布式。
Memcache的分布式算法:
根据余数计算分散
过程:先根据CRC32求哈希值,再根据server数量求余。
缺点:当添加或移除服务器时,缓存重组的代价相当巨大。
Consistent Hashing
过程: 首先求出memcached服务器(节点)的哈希值, 并将其配置到0~232的圆(continuum)上。 然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。 如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。
虚拟节点
平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。
虚拟节点( virtual node )是实际节点在 hash 空间的复制品( replica ),一个实际节点对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在 hash 空间中以 hash 值排列。
http://www.ha97.com/4575.html Memcached原理深度分析详解
http://blog.csdn.net/dato/article/details/1968663 Memcache 内存管理
http://kb.cnblogs.com/page/42732/ 理解Memcache的内存存储
http://kb.cnblogs.com/page/42734/ Memcache的分布式算法
/article/1682474.html 一致性hash算法
Memcached使用libevent库实现网络连接服务。libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。
Memcached是“分布式”的内存对象缓存系统,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源。它的实际瓶颈在于网络连接。
memcached使用内存管理数据,所以它是易失的,当服务器重启,或者memcached进程中止,数据便会丢失,所以memcached不能用来持久保存数据。并且内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。完全取决于客户端的实现来进行分布式。
Memcache的分布式算法:
根据余数计算分散
过程:先根据CRC32求哈希值,再根据server数量求余。
缺点:当添加或移除服务器时,缓存重组的代价相当巨大。
Consistent Hashing
过程: 首先求出memcached服务器(节点)的哈希值, 并将其配置到0~232的圆(continuum)上。 然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。 如果超过232仍然找不到服务器,就会保存到第一台memcached服务器上。
虚拟节点
平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。
虚拟节点( virtual node )是实际节点在 hash 空间的复制品( replica ),一个实际节点对应了若干个“虚拟节点”,这个对应个数也成为“复制个数”,“虚拟节点”在 hash 空间中以 hash 值排列。
http://www.ha97.com/4575.html Memcached原理深度分析详解
http://blog.csdn.net/dato/article/details/1968663 Memcache 内存管理
http://kb.cnblogs.com/page/42732/ 理解Memcache的内存存储
http://kb.cnblogs.com/page/42734/ Memcache的分布式算法
/article/1682474.html 一致性hash算法
相关文章推荐
- nginx连接memcached
- Memcached stats 命令属性含义
- Memcached 实例
- CentOS7 Apache+Mysql+PHP+Memcached安装
- memcached 客户端总结
- [官方摘要]Setup And Configuration memcached with Tomcat
- linux(centos 6.4)下安装php memcache服务端及其客户端(详细教程)
- win7 安装 wamp2.5版本的memcache+memcached
- memcached 之 哈希一致性 和 虚拟节点 分析
- Linux下安装Memcached图解教程
- telnet memcache
- win7 下面操作memcache
- Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
- 在Java Spring+Windows中使用Memcached实例
- 【转】memcached分布式部署
- [转]memcached+magent实现memcached集群
- [转]Memcache的原理和命中率的总结
- [转载]memcached stats 命令
- [转载]memcached stats 命令
- memcacheq 消息队列安装