memcached在大负载高并发网站上的应用(1)---简介

news/2024/4/27 1:28:45/文章来源:https://dengbin.blog.csdn.net/article/details/3962503

  大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过。
这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现在或以后的工作有所帮助,笔者将感到无比荣幸。

我要介绍的内容包括以下几个方面:
1、memcached的简介
2、memcached的应用场景
3、memcached的安装
4、memcached的使用
5、memcached的部署架构
6、memcached的局限性
7、memcached的改进

 

一、简介
  1.1 背景
    memcached是一个高性能、分布式的内存对象缓存系统。
    memcached广泛应用在大负载高并发的网站上,是一种非常成熟的产品(称为一项技术也未尝不可)。像facebook,youtube,yahoo,sina,sohu,netease,豆瓣等网站均或多或少使用了该项产品。memcached在以用户为中心的网站上,表现尤其突出,例如sns,blog等web2.0应用的站点。这些站点一般来讲,特别注重用户体验,用户对服务器的响应速度要求很高,用户数据相对比较复杂、关连度比较高,需要经常对数据库进行更新和检索。
    memcache是danga.com几个开源项目中的一个,最初是专门为livejournal.com站点而开发的,当时这个站点日pv达到了千万级,在使用过程中出现了很多的与负载和响应速度相关的问题,于是开发了这个项目,旨在改善网站当时的困境。memcache可以应对任意多个连接,使用非阻塞的网络IO。它的使用非常简单和方便,最常用的功能不超过5个方法。

memcache官方网站:http://www.danga.com/memcached

 

  1.2 特点
    1、高性能
     无论哪一种数据库dbms(mysql,oracle,mssql,db2,Postgres等等),再怎么优化,最终也避不开与慢速的存储介质(硬盘、磁带)进行数据交换,但往往一旦涉及到了存储介质的io操作,存取性能就会急剧下降。memcached,顾名思义,它的全部操作自始至终都是在内存中进行的,所以存取数据的效率非常高。
     当然,通常情况下,大型网站对于数据库的操作都会做优化。通常的手段有两种:
     a、读写数据分离,采用主/辅库的方式,来分散数据库的压力,提高查询速度。
     b、按照业务特点横向或者纵向分割数据库。简单来讲,就是大库变小库,大表变小表,来提高数据库访问的效率。一般来讲,一个数据库具有很多表或者一张表有N多的记录,都会明显的降低数据库的服务能力,比如mysql数据库单表记录达到2000万条左右(笔者以前的工作经验),性能会下降到几乎无法忍受。关于数据库的设计和优化,我们以后可以单独做一个专题,这里不做太多的研究。
     数据库会在以下情况下会出现访问瓶颈:
     a、事务操作
     企业级的数据库(比如mysql的innodb模式)都支持事务操作。由于事务具有原子性,事务中涉及的数据表在运行过程中将会加锁。在这种情况下,访问这些表的数据会出现延迟。
     b、数据更新
     数据库中任何的表在数据更新过程中,同样会被加锁。在这种情况下,也会出现上面同样的结果。
     memcached的操作基本上就不会存在以上情况(实际上也有加锁的情况,在后面再详细探讨),所以它的性能非常高。官方网站上对它的正式评价是very fast。事实上也是如此,相关的实验室测试对比结果,大家可以到网上搜索一下,比比皆是。

 

    2、分布式

    所谓分布式系统比较专业的解释是:
    一种计算机硬件的配置方式和相应的功能配置方式。它是一种多处理器的计算机系统,各处理器通过互连网络构成统一的系统。系统采用分布式计算结构,即把原来系统内中央处理器处理的任务分散给相应的处理器,实现不同功能的各个处理器相互协调,共享系统的外设与软件。这样就加快了系统的处理速度,简化了主机的逻辑结构。

memcache的分布式特性主要表现在两个方面:

a.memcache客户端mc和服务器端ms可以单独安装在任何独立server上。
  当然部署在同一台server上也没问题,甚至于一台机器上可以部署n个memcached。
b.memcache服务器端ms可以安装在任意数量的server上,提供并行存储和计算的能力。
  这是分布式特性的本质体现。ms可以形成任意多台server组成的集群,为mc提供服务。


  1.3 用途
    1、提高系统的并发能力
    2、减轻数据库的负担
    这两种用途其实非常容易理解。由于memcached高性能,所以可以同时服务于更多的连接,大大提高了系统的并发处理的能力。另外,memcached通常部署在业务逻辑层(前台应用)和存储层(主指数据库)之间,作为数据库和前台应用的数据缓冲,因此可以快速的响应前端的请求,减少对数据库的访问。
    以下是一个memcached部署的逻辑示意图,其中mc是指memcached client,ms是指memcached server:

 

 

 

  1.4 工作机制

    Memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。客户端首先与 Memcached 服务建立连接,然后存取对象。每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存的时候还可以设置有效期。保存在 Memcached 中的对象实际上是放置在内存中的,而不是在硬盘上。Memcached 进程运行之后,会预申请一块较大的内存空间,自己进行管理,用完之后再申请一块,而不是每次需要的时候去向操作系统申请。Memcached将对象保存在一个巨大的Hash表中,它还使用NewHash算法来管理Hash表,从而获得进一步的性能提升。所以当分配给Memcached的内存足够大的时候, Memcached的时间消耗基本上只是网络Socket连接了。
    Memcached按照LRU方式调度数据。LRU是Least Recently Used的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的。LRU算法在实际的工作环境中会与操作系统相关,比如32位的操作系统,最大的寻址空间是4G,如果当前内存的使用超过了这个限度,将被调出内存,内存中总维持最新最常用的数据。64位操作系统大大扩展了内存的寻址能力,所以现在很memcached服务都是运行在64位系统上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_782288.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站调试工具之一(php性能优化分析工具XDebug)

一、安装配置  1、下载PHP的XDebug扩展,网址:http://xdebug.org/  2、在Linux下编译安装XDebug 引用tar -xzf xdebug-2.0.0RC3.gzcd xdebug-2.0.0RC3/usr/local/php/bin/phpize./configure --enable-xdebugcp modules/xdebug.so /usr/local/php/lib/…

从官方网站上下载了Xenomai后怎么继续学习?下载Linux4.14和ipipe4.14并解决下载ipipe下载慢的问题

本篇文章记录自己安装完成Xenomai包的后续操作,参考的主要线索是 使用 uname -a可以查看本地的Linux内核版本 (base) warmtreewarmtree-HP-Pavilion-Laptop-15-cc5xx:~$ uname -a Linux warmtree-HP-Pavilion-Laptop-15-cc5xx 5.3.0-53-generic #47~18.04.1-Ubunt…

酷哥搜索Gcoge.Com(Bindeng.Com)真诚邀请各类网站、企业、机构一同携手,通过各种合作模式....

酷哥搜索是一个实现所有人对所有人(ALL TO ALL,即A2A)的商业信息传播媒体。覆盖全国三百多个城市,致力于打造商业搜索引擎专业品牌,旨在实现商业信息传播的全球化,满足上千万商业用户的各种信息需求。我们真诚的邀请各类网站、企业…

ASP.Net AJAX+userControl+js实现仿igoogle效果网站

不知道大家有没有用过igoogle这个google的个人门户网站,我弄的这个东西就是模仿igoogle,主要的难点是新闻模块的动态生成和模块的拖放功能和位置保存。基本原理是用userControl去实现新闻的容器--新闻模块,模块的内容由RSS提供,AS…

GCOGE技术内幕-Gcoge酷鸽传媒官方网站 Gcoge.com-酷哥一下,问题搞定!

Gcoge酷鸽传媒官方网站 Gcoge.com-酷哥一下,问题搞定!- 酷哥引擎新媒体 酷哥搜索珀利引擎-全球唯一全新概念珀利引擎新媒体--聚合优化创新 新思维 心服务~一个域名,通行天下!全球最大聚合门户!全球卓著搜索专家! 国内外著名搜索引擎聚合门户~我们的宗旨是为人民服务…

LAMP网站架构方案分析

LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程语言,所有组成产品均是开源软件&a…

如何搭建网站

常见的三种主流技术架构为 (1)LinuxApache/Nginx/LighttpdMysql/MariaDBPerl/PHP/Python 常见网站:新浪,维基百科,youtube,facebook,flickr (2)J2EE:jsp …

微视频试水社交网站 渐趋移动互联应用

与微视频/微电影的流行同步进行的是社交网络的兴起,微博成为比即时通讯更热门的交流工具,在微博界面能添加视频,这无疑给微电影一个爆发的平台。社交网络里的传播行为毫不保留地在微视频/微电影上体现和延伸。 在视频网站为“烧钱买独播剧”还…

开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo

代码下载热衷于开源框架探索的我发现ASP.NET MVC与jQuery easyUI的组合很给力。由于原先一直受Ext JS框架的licence所苦恼,于是痛下决心寻找一个完全免费的js框架——easyUI。它有完整的demo和强大AIP手册,使我在开发过程中得心应手。以下是这篇博文Demo…

美网站曝光乔布斯近照:面容憔悴令人担忧

北京时间8月27日消息,AOL旗下名人八卦网站TMZ曝光乔布斯近照,据称摄于乔布斯宣布退休后的第二天。图中的乔布斯形销骨立、面容憔悴。这张照片显示,乔布斯穿着一件黑色齐膝长袍,在阳光下站在一辆汽车旁,身边有一名身份未…

网络SEO优化 蜘蛛时代开启

百汇传媒多一度网络营销小贴士:SEO(Search Engine Optimization),行业内称为搜索引擎优化,是较为流行的网络营销方式,主要目的是增加特定关键字的曝光率以增加网站的能见度,进而增加销售的机会。…

使用burp进行网站爆破

burp爆破的前提条件是该网站账号密码没有进行加密而是明文,且验证码可以重复使用,如下图数据包中直接显示账号与密码且验证码不需要重复提交(此处需要自己使用burp进行测试) 1.进入burp,监听浏览器 2.打开网站输入账…

【Java基础】静态网站技术-review

文章目录通信和服务图解工作过程待review问题参考通信和服务 早期的Web服务器,只能响应浏览器发来的HTTP静态资源的请求,并将存储在服务器中的静态资源返回给浏览器,今天我们追溯一下。 协议规范: 万维网(WorldWideWeb&#xff…

家谱社交网站MyHeritage开放家庭图谱API

MyHeritage被认为是以色列最有希望的web2.0公司,保持着高速的成长,让竞争对手Geni和Ancestry.com(已经上市)望尘莫及。 这家公司已经拥有接近6千万的注册用户,上传了2千万份家谱、8亿份档案和1.25亿张照片。这些储备对完成像MyHer…

本地化社交问答网站Drumo瞄准亚洲和澳洲市场

Drumo是由澳大利亚数字媒体公司Design Royale开发的本地化社交问答网站,目前在悉尼,东京和新加坡已经推出了服务,很快将登陆上海,香港,台北,墨尔本等更多亚洲和澳洲的城市。做问答社区的困难之处在于保持用…

12岁小学生自创5家网站 曾获腾讯300元创业贷款

9月1日,是中小学开学的日子。当天上午11时许,在平顶山市新华区胜利街小学六年级6班的教室里,东方今报记者见到了自创5家网站、组织十多人开发销售电脑软件的田众和。12岁的田众和坐在教室倒数第二排,大大的眼睛,高高的…

推荐一个很棒的免费自助建站工具:Tap

Tap简介Tap(www.tap.cn)是一个新型的免费自助建站服务平台,易用、专业、高效的Tap能让您轻松摆脱建站过程中技术对创造力的制约。拥有极高自由度的Tap能够快速提升您的建站热情。Tap为不同用户的需求配备了完美的个性化解决方案,T…

004coursera网站中的VTT字幕的使用

coursera网站中的VTT字幕的使用 1、 https://www.coursera.org/learn/os-virtsecurity/lecture/xuWgP/1-3-cao-zuo-xi-tong-an-quan-de-zhong-yao-xing 在coursera网站通过360极速浏览器的插件)下载的视频(有三个分辨率:1280x720&#xff08…

网站前端性能优化总结

一、服务器侧优化1. 添加 Expires 或 Cache-Control 信息头 某些经常使用到、并且不会经常做改动的图片(banner、logo等等)、静态文件(登录首页、说明文档等)可以设置较长的有效期(expiration date)&#x…

大型网站动态应用系统架构

动态应用,是相对于网站静态内容而言,是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件,比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。大型动态应用系统…