分布式缓存Memcache

系统 2009 0

 

  • 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~2 32 的圆(continuum)上。 然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。 然后从数据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。 如果超过2 32 仍然找不到服务器,就会保存到第一台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的分布式算法

http://blog.csdn.net/sparkliang/article/details/5279393  一致性hash算法

     

 

分布式缓存Memcache


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论