深入理解memcached:内存管理与分布式算法解析

需积分: 50 1 下载量 193 浏览量 更新于2024-07-26 收藏 930KB PDF 举报
"《memcached重要剖析》是深入解析memcached技术的一本书,由长野雅广、前坂徹撰写,charlee翻译。书中详细介绍了memcached的安装、原理、LRU(最近最少使用)算法、内存存储机制、删除策略以及分布式算法等方面,对大型网站的开发人员具有很高的参考价值。" memcached是一种广泛使用的分布式内存对象缓存系统,它旨在提高动态Web应用的性能。以下是书中的关键知识点: 1. **memcached的基础** - **什么是memcached**:它是一个高性能、分布式内存对象缓存,用于减轻数据库负载,通过存储数据到内存中来加快读取速度。 - **主要特征**:简单的文本协议、基于libevent的事件处理、内置内存存储、分布式架构(各节点间不通信)。 2. **安装与启动** - **安装过程**:描述了如何在系统上安装memcached,并提供了启动服务的基本步骤。 - **客户端连接**:讲解如何使用客户端工具或编程语言接口(如Cache::Memcached)与memcached服务器建立连接。 3. **内存存储机制** - **Slab Allocation**:这是memcached管理内存的独特方式,将内存分割成预分配的固定大小块(slabs),用于存储不同大小的对象,以减少内存碎片。 - **Slab术语**:包括chunks、slabs、classes等概念。 - **Slab缺点与调优**:探讨了Slab Allocation可能导致的内存利用率问题,并提出了通过调整增长因子进行优化的方法。 - **查看内部状态**:提供了检查memcached运行状态和slabs使用情况的命令。 4. **删除机制与发展方向** - **删除策略**:memcached采用惰性过期(LazyExpiration)策略,数据不会立即删除,而是等到下次被请求时才实际清理。 - **LRU(最近最少使用)**:解释了LRU算法如何选择最久未使用的数据进行淘汰,以保持缓存效率。 - **最新发展**:提到了二进制协议的引入,以提升性能和效率,以及对外部引擎的支持,允许更灵活的数据存储。 5. **分布式算法** - **memcached的分布式**:介绍了memcached如何在多台服务器上实现数据的分散存储。 - **Cache::Memcached的分散方法**:使用哈希函数和余数计算确定数据存储位置,但也讨论了这种方法可能导致的热点问题。 - **一致性哈希(Consistent Hashing)**:作为改进的分散策略,它能够减少数据迁移时的重分布影响,同时推荐了一些支持一致性哈希的库。 通过对这些知识点的理解,开发者可以更好地利用memcached来提高应用的性能,尤其是在处理高并发访问和大量数据存储时。书中深入的技术分析对于优化缓存系统和应对大规模Web服务挑战非常有帮助。
2014-08-22 上传
目录 译者序..................................................................................................................................................4 第1 章 memcached的基础.................................................................................................................5 1.1 memcached是什么?...............................................................................................................5 1.2 memcached的特征...................................................................................................................6 协议简单.....................................................................................................................................6 基于libevent的事件处理..........................................................................................................6 内置内存存储方式.....................................................................................................................6 memcached不互相通信的分布式.............................................................................................6 1.3 安装memcached.......................................................................................................................7 memcached的安装.....................................................................................................................7 memcached的启动.....................................................................................................................8 1.4 用客户端连接...........................................................................................................................8 1.5 使用Cache::Memcached..........................................................................................................9 使用Cache::Memcached连接memcached................................................................................9 保存数据...................................................................................................................................10 获取数据...................................................................................................................................10 删除数据...................................................................................................................................10 增一和减一操作.......................................................................................................................10 1.6 总结.........................................................................................................................................11 第2章 理解memcached的内存存储..............................................................................................12 2.1 Slab Allocation机制:整理内存以便重复使用...................................................................12 Slab Allocation的主要术语.....................................................................................................13 2.2 在Slab中缓存记录的原理....................................................................................................13 2.3 Slab Allocator的缺点.............................................................................................................13 2.4 使用Growth Factor进行调优................................................................................................14 2.5 查看memcached的内部状态................................................................................................15 2.6 查看slabs的使用状况...........................................................................................................16 2.7 总结.........................................................................................................................................17 第3 章 memcached的删除机制和发展方向...................................................................................18 3.1 memcached在数据删除方面有效利用资源.........................................................................18 数据不会真正从memcached中消失......................................................................................18 Lazy Expiration.........................................................................................................................18 3.2 LRU:从缓存中有效删除数据的原理.................................................................................18 3.3 memcached的最新发展方向.................................................................................................18 关于二进制协议.......................................................................................................................19 二进制协议的格式...................................................................................................................19 HEADER中引人注目的地方..................................................................................................20 2 idv2.com 3.4 外部引擎支持........................................................................................................................20 外部引擎支持的必要性...........................................................................................................20 简单API设计的成功的关键...................................................................................................21 重新审视现在的体系...............................................................................................................21 3.5 总结........................................................................................................................................22 第4 章 memcached的分布式算法...................................................................................................23 4.1 memcached的分布式.............................................................................................................23 memcached的分布式是什么意思?.......................................................................................23 4.2 Cache::Memcached的分布式方法........................................................................................25 根据余数计算分散...................................................................................................................25 根据余数计算分散的缺点.......................................................................................................26 4.3 Consistent Hashing.................................................................................................................27 Consistent Hashing的简单说明...............................................................................................27 支持Consistent Hashing的函数库..........................................................................................29 4.4 总结........................................................................................................................................29 第5 章 memcached的应用和兼容程序...........................................................................................30 5.1 mixi案例研究.........................................................................................................................30 服务器配置和数量...................................................................................................................30 memcached进程.......................................................................................................................31 memcached使用方法和客户端...............................................................................................31 5.2 memcached应用经验.............................................................................................................32 通过daemontools启动.............................................................................................................33 监视...........................................................................................................................................33 memcached的性能...................................................................................................................33 5.3 兼容应用程序........................................................................................................................35 Tokyo Tyrant案例.....................................................................................................................35 5.4 总结........................................................................................................................................36