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

news/2024/5/13 3:09:00/文章来源:https://blog.csdn.net/sws9999/article/details/3880397

 http://blog.csdn.net/wanghao72214/archive/2009/01/31/3855718.aspx

 

大家可能对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_840231.aspx

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

相关文章

Github第一章——注册 登录(这里指网页上托管代码的网站)

Github:这里指集成了git指令并可以提供代码托管的第三方平台及 GitHub平台。 Github Logo:官方名称为-Octocat 是一种八爪鱼和猫的结合体 以前的样子: 现在的样子: Github 官网:https://github.com/ 接下来我们开始今天的正题…

从LiveJournal后台发展看大规模网站性能优化方法

一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目,几个人出于爱好做了这样一个应用,以实现以下功能: 博客,论坛 社会性网络,找到朋友 聚合,把朋友的文章聚合在一起 LiveJournal采用了大量的开…

发布:论文阅读批注网站PaperDecode.com【转载】

发布:论文阅读批注网站PaperDecode.com 转载自: https://zhuanlan.zhihu.com/p/82778937 智能单元团队正式推出PaperDecode学术社区。 一、PaperDecode是什么? PaperDecode是一个论文在线阅读、批注、交流网站(app)。 一个专业的学术社区…

是否还为制作PPT而烦恼?珍藏的PPT实用网站打包送给你!

是否还为制作PPT而烦恼?珍藏的PPT实用网站打包送给你! 文章目录1.图片检索2.图标3. 灵感来源:4. 字体在做PPT的时候你时候会因为找不到好的网站来收集素材而苦恼不已呢?不用担心,在这篇博客里PPT好用的素材网站打包送给…

linux上同个tomcat服务器布署多个静态网站项目配置访问链接

这 里我的环境是linux 两个项目都已经上传成功。 打开tomcat 的 conf目录下的 server.xml 文件 1、 找到Host节点 2、在该节点下配置两个项目的访问路径 <Context path"/" docBase"/usr/local/tomcat/tomcat-8081/webapps/charmbirds" debug"0…

专访阿里陈康贤:我所理解的网站架构

【编者按】CSDN在日前策划了架构主题月活动&#xff1a;《互联网应用架构面面观》&#xff0c;就架构的方法面面进行各种形式探讨交流。今天&#xff0c;我们就网站架构这一话题&#xff0c;线上专访了阿里淘宝技术部技术专家陈康贤&#xff0c;著有《大型分布式网站架构设计与…

利用GitHub搭建自己专属的网站

综述&#xff1a;利用github搭建自己专属的网站方法分享&#xff0c;比如个人的电子版简历&#xff0c;特别提醒&#xff0c;该方法只针对public仓库&#xff0c;从2019-01月后&#xff0c;github支持免费创建私有仓库&#xff0c;不过最多只能三个人协同开发 1.首先需要一个gi…

Bitbucket网站——基于web的版本库托管服务

1.bitbucket介绍 Bitbucket是Atlassian公司提供的一个基于web的版本库托管服务&#xff0c;支持Mercurial和Git版本控制系统。Bitbucket既提供免费帐号&#xff0c;也提供商业付费方案。免费帐号可使用的私有版本库不限数量&#xff0c;但最多可支持5名用户&#xff08;截至20…

使用腾讯云CDN后网站提示Nixed Content: The page at URL was loaded over HTTPS, but requested an insecure script

最近用WordPress加一为导航主题搭建了一个导航站&#xff0c;考虑到不暴露源站IP然后套了个腾讯云的CDN。 但是今天访问网站整个网站样式全部错乱&#xff0c;打开控制台查看提示&#xff1a; Nixed Content: The page at URL was loaded over HTTPS, but requested an insec…

(自适应手机端)仓储货架仓库货架网站源码 响应式超市货架展架类网站pbootcms模板

(自适应手机端)响应式超市货架展架类网站pbootcms模板 仓储货架仓库货架网站源码下载 PbootCMS内核开发的网站模板&#xff0c;该模板适用于货架展架网站、仓储货架网站等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b; 自适…

Ripro主题X系列站长素材下载网站模板

模板介绍 花130元买的Ripro主题X系列站长素材下载网站模板免费分享给大家&#xff0c;PHP版本要求&#xff1a;7.2及以上 主题设置&#xff1a;全功能后台设置&#xff0c;无需改代码 主题特色&#xff1a;无需替换RIPRO原主题包任何内容即可实现后台全功能开关修改&#xf…

wpthemedetector在线查询wordpress网站使用主题工具

工具说明 如果您在浏览wordpress内核网站的时候&#xff0c;遇到一些好看的主题&#xff0c;但是却不知道对方用的什么主题模板&#xff0c;可以使用该工具查询对方的主题。 wpthemedetector是一款国外在线查询wordpress网站使用主题工具&#xff0c;该工具轻松查询wordpress…

(美化)WordPress网站添加自定义字体

背景 通过CSS属性font-face和font-family可以实现加载自定义web font&#xff0c;改变网页字体&#xff0c;实现美化效果。 1.引用字体文件 出于版权风险考虑&#xff0c;尽量使用免费可商用的字体作为web font。 本文教程使用的为站酷仓耳渔阳字体&#xff0c;是站酷发布的…

阿里云云服务器无法通过公网ip地址访问网站的解决方法

刚购买的阿里云服务器自建网站却发现无法通过公网ip地址访问网站&#xff0c;主要是由于阿里云云服务器默认没有配置80端口的http协议安全组&#xff0c;给其添加上即可。 在自己的服务器实例中点击更多&#xff0c;选择网络与安全组&#xff0c;点击安全组配置。 点击自己的…

使用云服务器创建网站(完整开发过程)

文章目录前言一、什么是HTML语言二、HTML网页设计1.DW&#xff08;Dreamweaver&#xff09;2.VS code(Visual Studio Code)三、运行网页查看效果1.运行2.问题的提出四、搭建云服务器1.注册购买华为云2.远程登陆Windows云服务器&#xff08;1&#xff09;使用RDP文件登录&#x…

Linux CentOS + Nginx 搭建网站

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点&#xff08;俄文&#xff1a;Рамблер&#xff09;开发的&#xff0c;第一个公开版本0.1.0发布于2004…

网站后端遇到的一些小问题

文章目录1.数据库的一些问题1.数据库自动生成主键id2.MySQL数据库自动生成时间3.根据当前时间与数据库的某个时间相差了多少天4.使用MySQL创建触发器时出错&#xff1a;2.ssm框架使用pagehelper1.数据库的一些问题 1.数据库自动生成主键id 通过idea连接数据库&#xff0c;然后…

简易移动端爬虫实现pixabay网站图片搜索

有些时候你想在你的应用需要用到一些背景图片&#xff0c;但是没有图片啊&#xff0c;没有图片啊&#xff0c;没有图片啊。。。。。 当然你可以在应用内内置很多的精美图片&#xff0c;然后就造成了一些问题&#xff1a;你的apk变得贼大&#xff0c;其次想换一些新的图片只能在…

linux 安装xml文件,虚拟机XML文件 - Ubuntu 16.04 下 OpenStack 安装部署_服务器应用_Linux公社-Linux系统门户网站...

//如果是Xen&#xff0c;则type‘xen’Ubuntu //虚拟机名称&#xff0c;同一物理机唯一fd3535db-2558-43e9-b067-314f48211343 //同一物理机唯一&#xff0c;可用uuidgen生成524288524288 //memory这两个值最好设成一样2 //虚拟机可使用的cpu个数&#xff0c;查看…

#友盟杯#一步步教你为网站开发Android客户端

本文参与&#xff1a;友盟—安卓巴士Android开发原创教程大赛本文面向Android初级开发者&#xff0c;有一定的Java和Android知识即可。文章覆盖知识点&#xff1a;HttpWatch抓包&#xff0c;HttpClient模拟POST请求&#xff0c;Jsoup解析HTML代码&#xff0c;动态更新ListView背…