云端高性能技术架构浅析二

本文主要对缓存中的Memcached技术进行介绍。

1 Memcached

1.1 Memcached简介

  Memcached是一个高性能的分布式对象缓存系统,用于动态Web应用,以减轻数据库负载[1]。它通过在内存中缓存数据和对象来减少应用程序读取数据库的次数,从而提高网站的性能。如图1是Memcached在网站中的位置示意图。

图1 Memcached位置示意图

  Memcached以键值对的形式将数据(或对象)缓存在内存中,虽然使用到了多个服务节点,但是和一般分布式缓存系统不同的是,每一份数据在Memcached中只存在一份,每个Memcached服务节点之间相互不可见。因此,Memcached中每份数据的键值是唯一的。

  简而言之,Memcached类似于一个典型的非关系型存储系统,可以归入基于内容的键值对存储类型[2]

1.2 Memcached工作原理

  当高并发的外部请求访问服务器时,负载均衡服务器会根据各应用服务器的使用情况进行分配转发,如果需要对数据进行读取,应用服务器会按照一定的Hash算法计算键值的结果,并根据计算结果访问Memcached的某一个服务节点,服务节点再次计算键值的第二次Hash值,再根据计算结果对数据进行读取,如果缓存中有数据则直接返回给应用,否则需要从数据库获取数据,同时将获取到的数据写入到Memcached中[3]

图2 Memcached工作原理

2 性能分析

  在本机上安装Memcached,客户端使用Memcached提供的接口进行数据的存储与访问,并与直接通过MySQL获取数据的方式进行对比。

2.1 Memcached安装

  由于Memcached主要用于服务器端,而服务器端操作系统大多用Linux,因此网上多数教程是关于在Linux上安装使用Memcached的。在Windows上安装更加简单,只需找到对应操作系统的版本即可[4]

  安装Memcached后,打开服务即可使用相应功能,Memcached默认监听11211端口,如果是在本机上,直接使用127.0.0.1:11211就可以访问了,这点和MySQL非常类似。

  Memcached提供了很多高级语言的接口,可以根据这些接口来完成对数据的存储与访问。

2.2 Memcached和MySQL性能比较

  为了比较使用Memcached前后访问数据性能的情况,进行以下模拟实验。

  硬件条件:


    1. CPU:Intel Core 2.60GHz;

    2. 内存:2GB;

  软件条件:


    1. 操作系统:Window 64;

    2. Memcached最大内存:64MB;

    3. Memcached最大连接数:1024。

  MySQL中共有29120条记录,使用多线程模拟用户的并发访问,每个用户请求100次数据读取。表1是在用户数量为N的条件下,测试所有请求都处理完所用时间T的结果。

表1 测试结果

    三种方法说明:MySQL表示所有的数据请求直接通过访问数据库返回;随机Mem表示在增加了Memcached缓存后,对于每个用户的100次请求,数据之间没有任何关系,完全随机;二八定律Mem表示用户的请求遵循二八定律,就是说平均100次请求中,有比较多的次数访问的是相同数据,这个可以通过程序模拟,在访问时控制相应次数访问相同的数据。

    图3、图4分别对应表1的两种数据表示。

图3 柱状图显示结果

图4 折线显示结果

  由于在完全随机访问的条件下,数据的命中率非常低(几乎为0),每次请求都需要从数据库中获取,同时还要将请求到的数据保存在缓存中,因此效率比直接从数据库中获取还要低。但是当用户多次请求相同的数据是,使用Memcached明显比直接从MySQL中获取效率要高很多。

  整个测试过程还存在着一些不足之处:


    1. 受实际条件限制,Memcached服务节点数只有1个;

    2. 另外,数据库中数据量级也不是非常大;

    3. 没有测试数据写入的情况

3 关键问题

  通过上述分析可知,Memcached在一些条件下对提升数据访问效率有很大作用。对于那些不常变动访问频率又非常高的数据,将其放在缓存中,可以很好的缓解数据库的压力,进而提升系统性能。但同时,Memcached自身也还存在着一些不足之处


    1. 由于Memcached是将数据缓存在内存中,当出现断电情况时,数据将立即消失[5]

    2. 所有数据在Memcached中只保存一份,因此可靠性不是很高,一旦某台服务节点出现故障,相应的数据将丢失;

    3. Memcached在设计之初每个key的value最大是1MB,随着目前数据量的快速增长,缓存数据量大的文件比如音频、视频等有很大不足。

4 参考资料

  1. 俞华锋.Memcached 在大型网站中的应用[J]. 科技信息, 2008(1), p70.

  2. 王新根. Web后端性能优化关键技术研究[D]. 浙江大学, 2012.

  3. http://en.wikipedia.org/wiki/Memcached

  4. http://blog.csdn.net/zhaotengfei36520/article/details/41315329

  5. 徐剑强,邹伟平. Memcached应用研究[J]. 科技广场, 2012(7), p95-97.


本文转载自:http://www.cnblogs.com/luop/p/4392894.html

版权及转载说明

本站原创、转载文章欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区

本站转载文章版权归原作者所有,如发现本站文章涉嫌侵权请点击「联系我们」反馈,本站将立即给予删除

转载请注明:文章转载自:全分享社区 「http://www.aweb.cc

本文标题:云端高性能技术架构浅析二

本文地址:http://www.aweb.cc/article/detail/id/345.html

云端高性能技术架构浅析一 <<上一篇 下一篇>>大数据时代的技术—hive介绍