memcached构建分布式缓存[收集].pdfVIP

  • 1
  • 0
  • 约3.37千字
  • 约 5页
  • 2021-10-19 发布于福建
  • 举报
Memcached 什么是 Memcached 许多 Web 应用程序都将数据保存到 RDBMS中,应用服务器从中读取数据并 在浏览器中显示。但随着数据量的增大,访问的集中,就会出现 REBMS的负担 加重,数据库响应恶化,网站显示延迟等重大影响。 Memcached 是高性能的分布式内存缓存服务器。 一般的使用目的是通过缓存 数据库查询结果,减少数据库的访问次数,以提高动态 Web 应用的速度、提高 扩展性。如图: Memcached 的特点: Memcached 作为高速运行的分布式缓存服务器具有以下特点。 1. 协议简单:memcached 的服务器客户端通信并不使用复杂的 MXL等格式, 而是使用简单的基于文本的协议。 2. 基于 libevent 的事件处理: libevent 是个程序库, 他将 Linux 的 epoll 、BSD 类操作系统的 kqueue 等时间处理功能封装成统一的接口。 memcached使 用这个 libevent 库,因此能在 Linux、BSD、Solaris 等操作系统上发挥其高 性能。 3. 内置内存存储方式:为了提高性能, memcached 中保存的数据都存储在 memcached 内置的内存存储空间中。由于数据仅存在于内存中,因此重 启 memcached,重启操作系统会导致全部数据消失。另外,内容容量达 到指定的值之后 memcached 回自动删除不适用的缓存。 4. Memcached 不互通信的分布式: memcached 尽管是 “分布式 ”缓存服务器, 但服务器端并没有分布式功能。各个 memcached 不会互相通信以共享信 息。他的分布式主要是通过客户端实现的。 Memcached 的内存管理 最近的 memcached 默认情况下采用了名为 Slab Allocatoion 的机制分配,管 理内存。在改机制出现以前,内存的分配是通过对所有记录简单地进行 malloc 和 free 来进行的。但是这中方式会导致内存碎片,加重操作系统内存管理器的 负担。 Slab Allocator 的基本原理是按照预先规定的大小,将分配的内存分割成特定 长度的块, 已完全解决内存碎片问题。 Slab Allocation 的原理相当简单。 将分配 的内存分割成各种尺寸的块( chucnk),并把尺寸相同的块分成组( chucnk 的集 合)如图: 而且 slab allocator 还有重复使用已分配内存的目的。也就是说,分配到的内存 不会释放,而是重复利用。 Slab Allocation 的主要术语 Page :分配给 Slab 的内存空间,默认是 1MB。分配给 Slab 之后根据 slab 的 大小切分成 chunk. Chunk : 用于缓存记录的内存空间。 Slab Class:特定大小的 chunk 的组。 在 Slab 中缓存记录的原理 Memcached 根据收到的数据的大小,选择最合适数据大小的 Slab ( 图 2) memcached 中保存着 slab 内空闲 chunk 的列表,根据该列表选择 chunk,然后将 数据缓存于其中。 Memcached 在数据删除方面有效里利用资源 Memcached 删除数据时数据不会真正从 memcache

文档评论(0)

1亿VIP精品文档

相关文档