memcached研究

一,梗概
    memcached是高性能的分布式内存缓存服务器,一般的使用目的:
        1,通过缓存数据库查询结果;
        2,减少数据库访问次数;
        3,以提高动态web应用的速度,提高可扩展性;

    特征:1,协议简单
         2,基于libevent的事件处理
         3,内置内存存储方式--默认使用LRU(Least Recently Used,最近最少使用)算法自动删除缓存数据.重启服务器的时候也会导致缓存数据全部消失.
         4,memcached不互相通信的分布式
二,原理
    缓存策略:
            缓存策略基于客户端的策略,一致性哈希算法

    slab Allocation机制:整理内存以便重复使用.基本原理是按照预定的的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片的问题.
    将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk).而且,slab allocator还有重复使用已分配的内存的目的。也就是说,分配到的内存不会释放,而是重复利用.
    
术语:
    1,page:分配给slab的内存空间,默认是1MB,分配给slab之后根据slab的大小切成chunk
    2,chunk:用于缓存记录的内存空间
    3,slab class:特定大小的chunk的组.
        
缓存原理:
    memcached收到的数据的大小,选择最适合数据大小的slab,memcached中保存着slab内空闲chunk的列表,根据
列表选择chunk,然后将数据缓存其中.

slab allocator缺点:
    1,slab allocator解决了当初的内存碎片的问题,但新的机制也给memcached带来了新的问题:
问题就是:由于分配的是特定长度的内存,已


 一致性哈希:
    

影响:只在增加服务器的节点的逆时针方向的第一台服务器上的键收到影响.
因此,Consistent Hashing 最大限度地抑制了键的重新分布。而且,有的 Consistent Hashing 的实现方
法还采用了虚拟节点的思想。使用一般的hash 函数的话,服务器的映射地点的分布非常不均匀。
因此,使用虚拟节点的思想,为每个物理节点(服务器)在continuum 上分配 100~200个点。这样
就能抑制分布不均匀,最大限度地减小服务器增减时的缓存重新分布。
通过下文中介绍的使用 Consistent Hashing 算法的memcached 客户端函数库进行测试的结果是,由
服务器台数(n)和增加的服务器台数(m)计算增加服务器后的命中率计算公式如下:
(1 ­ n/(n+m)) * 10


三,集群管理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值