`

伪分布式内存缓存之Memcached

阅读更多

为什么标题称Memcached为伪分布式内存缓存呢?

1. Memcached服务端没有集群化方案,存在单点故障的风险。

2. Memcached服务端没有持久化机制,数据存放在内存中,进程退出数据丢失。

 

1. Memcached安装与使用

 官方网站:http://memcached.org/

 下载地址:http://www.memcached.org/files/memcached-1.4.34.tar.gz

 

 Memcached依赖libevent库:

apt-get install libevent-dev

 

yum install libevent-devel

   

   其它系统安装脚本可以自己搜索......   

 

 

解压memcached-1.x.x.tar.gz安装包:

wget https://memcached.org/latest
[you might need to rename the file]
tar -zxf memcached-1.x.x.tar.gz
cd memcached-1.x.x
./configure --prefix=/usr/local/memcached
make && make test && sudo make install

  

 

2. Memcached内存管理机制


 说明:memcached服务端进程启动,通过 -m 参数分配一块指定大小的内存区域(默认:64M)。    

memcached内存划分机制如图,首先理解几个概念:

1. Slab Class: 内存大小相同的Slab属于一个Slab Class,通过 -f 参数区分每个Slab的内存区块增长

2. Slab: 包含多个Chunk,每个Slab(默认:1M)按照最小内存大小进行切分

3. Chunk: 存储 [K-V] 数据的最小内存单元,通过 -n 参数指定最小内存分配空间

 

启动参数参考(部分命令未用过,注意是否支持):

-p                             指定端口号(默认: 11211  

-U <num>                UDP监听端口 (默认: 11211, 0 时关闭) 

-s <file>                   用于监听的UNIX套接字路径(禁用网络支持)

-a <mask>               UNIX套接字访问掩码,八进制数字(默认:0700)

-m                             指定最大使用内存大小(默认:64MB)

-t                               线程数(默认:4)

-l <ip_addr>             绑定地址 (默认:允许所有地址绑定,存在安全隐患) 

-d start                      启动memcached服务   

-d restart                   重起memcached服务   

-d stop|shutdown     关闭正在运行的memcached服务   

-u <username>         绑定使用指定用于运行进程 <username>  (只有root用户可以使用这个参数)

-P <file>                    将PID写入文件<file>,这样可以使得后边进行快速进程终止, 需要与 -d 一起使用

-M                               内存耗尽时返回错误,而不是删除项

-c                                 最大同时连接数(默认:1024)

-f                                 块大小增长因子(默认:1.25)

-n <bytes>                 最小分配空间,key+value+flags默认是48

-k                                锁定所有内存页。注意你可以锁定的内存上限。试图分配更多内存会失败的,所以留意启动守护                                                  进程时所用的用户可分配的内存上限。(不是前面的 -u <username> 参数;在sh下,使用命                                                令"ulimit -S -l NUM_KB"来设置)

-v                                提示信息(在事件循环中打印错误/警告信息)

-vv                              详细信息(还打印客户端命令/响应)

-vvv                            超详细信息(还打印内部状态的变化)

-h                                打印这个帮助信息并退出。

-i                                 打印memcached和libevent的许可。

-L                                尝试使用大内存页(如果可用的话)。提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提                                                 高运行效率。为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块

-D <char>                  使用 <char> 作为前缀和ID的分隔符。这个用于按前缀获得状态报告。默认是":"(冒 号)。如果                                               指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启

-R                                每个连接可处理的最大请求数

-C                                禁用CAS

-b                                设置后台日志队列的长度(默认:1024)

-B                                绑定协议 - 可能值:ascii,binary,auto(默认)

-I                                 重写每个数据页尺寸。调整数据项最大尺寸

 

客户端写入命令,服务端的处理流程大致如下图:


 

 

3. Memcached如何解决单点故障?

    方案一:采用客户端分片,例如:一致性哈希

    方案二:引入中间层代理,例如:Twemproxy

    

4. Memcached如何支持高可用方案?

    1. 主备复制:http://repcached.lab.klab.org/

    引入主备复制方案后,实践中可以结合LVS作为前端负载均衡,以及Keepalived节点心跳检查。网上的架构案例非常多LVS+Keepalived+Twemproxy。总之,具体的方案落地结合具体的业务场景去设计。

 

5. 简单企业架构设计


 图中仅显示Memcached在企业架构中充当的角色,之所以称为简单企业架构,由于以上所描述的架构图在实践中依然存在许多细节性的问题,而这些问题也算比较严重,甚至影响到系统运行的稳定性。实际开发中应该根据业务特点进行适当的调整或者重新设计。

 

6. 性能测试报告

 [待补充]

 

  • 大小: 28.4 KB
  • 大小: 13.6 KB
  • 大小: 17.7 KB
分享到:
评论

相关推荐

    分布式缓存系统Memcached

     Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及...

    分布式缓存客户端MemcachedProviders最新下载

    分布式缓存客户端MemcachedProviders是IT领域中一种用于提高应用程序性能和可伸缩性的关键工具。Memcached是一种广泛使用的开源高性能、分布式内存对象缓存系统,它可以存储数据并提供高速访问,减轻数据库负载,...

    PHP内存缓存技术memcached 的安装和工作原理介绍

    此外,memcached支持多服务器环境下的分布式缓存,这意味着数据可以在多台服务器间共享,进一步提升系统的可扩展性。 ### 二、PHP内存缓存技术memcached安装 在PHP环境中安装memcached,首先需要从官方下载...

    分布式缓存 Redis + Memcached 经典面试题!.pdf

    分布式缓存 Redis + Memcached 经典面试题!

    分布式缓存系统Memcached简介及开发环境搭建

    分布式缓存系统是现代Web应用中提升性能的关键技术之一,Memcached作为其中的代表,以其高性能、简单易用的特点被广泛采用。Memcached是一个开源的、基于内存的分布式缓存解决方案,主要目的是减少对数据库的访问,...

    分布式缓存系统Memcached学习心得.zip

    分布式缓存系统在现代Web开发中扮演...总的来说,分布式缓存系统Memcached是现代Web应用中不可或缺的工具。通过深入学习和实践,我们可以充分利用其优势,优化应用性能,减轻数据库压力,从而提供更高效、稳定的服务。

    Memcached分布式缓存学习.doc

    Memcached 分布式缓存学习 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。 ...

    分布式缓存 Redis + Memcached 经典面试题!.zip

    分布式缓存是现代大型互联网应用不可或缺的技术之一,主要用于提高数据访问速度,降低数据库负载。Redis 和 Memcached 是其中最常用的两种分布式缓存系统。这里我们将深入探讨 Redis 和 Memcached 的核心概念、优...

    Memcached分布式缓存

    ### Memcached分布式缓存 #### 一、Memcached的基础 **1.1 Memcached是什么?** Memcached是一款高性能、分布式内存对象缓存系统,旨在通过减轻数据库负担来加速动态网络应用的速度。它通过在内存中缓存数据和...

    分布式缓存Memcached实例

    分布式缓存Memcached实例详解 Memcached是一款由Danga Interactive公司设计并开发的高效、分布式内存对象缓存系统。它的主要目标是减轻数据库的负担,提高动态应用程序的响应速度,通过将数据存储在内存中,使得...

    Memcached分布式缓存入门

    **Memcached分布式缓存入门** Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。这个“Memcached分布式缓存入门”资料将引导初学者深入理解...

    C#/.net分布式缓存系统Memcached 实例

    Memcached是一个高性能的分布式的内存对象缓存系统.它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力...

    分布式数据缓存技术研究.pdf

    确保数据的一致性是分布式缓存的重要挑战。常见的更新策略有Write-Through(写直达)、Write-Around(写绕过)和Write-Behind(写后更新)。 4. 结论 分布式数据缓存技术在应对高并发、大数据量的现代应用中起着至...

    基于分布式Memcached缓存技术的油田信息查询系统.pdf

    2. 分布式缓存技术:Memcached Memcached是一种高性能的分布式内存对象缓存系统,用于缓存数据和对象,减少数据库的查询次数,从而减轻数据库服务器的压力,并提高数据的访问速度。在文档中,油田信息查询系统应用了...

    cachelot, 缓存库和分布式缓存服务器 Memcached兼容.zip

    cachelot, 缓存库和分布式缓存服务器 Memcached兼容 什么是Cachelot库如果应用程序需要一个以光速工作的LRU缓存。 这就是Cachelot库的意思。库与固定预先分配的内存一起工作。 你告诉内存大小,LRU缓存已经就绪。...

    Memcached分布式缓存系统的应用.pdf

    Memcached作为一种流行的分布式缓存系统,通过在内存中缓存数据和对象,显著提高了Web应用的响应速度和性能。分布式缓存通过将缓存数据分布在多个服务器节点上,能够实现负载均衡、容错、以及数据一致性,这些特性...

Global site tag (gtag.js) - Google Analytics