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

news/2024/5/10 3:48:44/文章来源:https://blog.csdn.net/lcj8/article/details/3900157

 

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

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

相关文章

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

杨建:网站加速--服务器编写篇 (下)

--提升性能的同时为你节约10倍以上成本 From: http://blog.sina.com.cn/iyangjian 七,NBA js直播的发展历程 这一节就谈下这个项目发展过程中所遇到的瓶颈,以及如何解决的。 应该是06年吧,当时NBA 比赛比较火,woocall负责高速模式图文直播放&…

杨建:网站加速--系统架构篇

--提升性能的同时为你节约10倍以上成本From: http://blog.sina.com.cn/iyangjian一,系统部署(高并发,可扩展)二,负载均衡LVS(高可用,低成本)三,IDC分布,DNS解析(快速&…

杨建:网站加速--实例分析篇

--提升性能的同时为你节约10倍以上成本From: http://blog.sina.com.cn/iyangjian一,自选股分析二,NBA比赛分析三,播客分析四,开心网分析--------------------------------------------------------------------------------------…

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么…

使用ImageMagick为你的网站减重

Images as a percentage of page weight for the Alexa top 10 global web sites 图片在网站所占的比重越来越重。更好的优化图片可以提高网站速度。减少宽带流量。 1.对用户上传图片进行缩放 对于用户自己上传的图片不能简单的 用css限制大小,因为这样每次加载图…

使用ImageMagick为你的网站减重(2)

以前写过一篇博客《使用ImageMagick为你的网站减重》,涉及到的手段是: 在服务器端把图片缩放到合适的尺寸,避免在前端用css缩放图片。用imagemagick的strip功能移出图片里的EXIF等多余信息。压缩JPEG图片的质量,减少图片体积。 Lo…

大型网站系统架构演化之路

前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技…

丑事网是史上SEO最差的网站

做过网站的人一定都知道SEO,即搜索引擎最佳化(Search Engine Optimization),又称为搜索引擎优化,其主要工作是通过了解各类搜索引擎如何抓取互联网页面、如何进行索引以及如何确定其对某一特定关键词的搜索结果排名等技…

大型电子商务网站架构之--分布式可扩展数据库架构

近几年分布式成为热门的话题,也成为大型系统必备良药,而在数据库方面应用更加广泛。通过采用普通廉价的设备构建出高可用性和高扩展的集群目的。从而摆脱了大型设备的依赖,一个好的分布式数据库架构可以比较方便达到高可用性有可以达到向外扩…

网站的高性能架构

网站性能是客观的指标,可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间,指从发出请求到最后收到响应数据所需要的时间。如下列出了系统常用的操作响应时间表. 操作 响应时…

用VSTS进行网站压力测试

VSTS提供了一个丰富、强大的工具平台,融合了软件开发领域的各个角色,涵盖软件开发生命周期的各个阶段,包括设计,开发,测试,管理,而这一整套构件的融会贯通,让它可以有效地改善软件开…

小白建站教程 腾讯云快速建站教程

相信不少的小伙伴都希望能有一个自己的网站,但是对于不会编程或者只有一点点技术的人来说自己搭建服务器、弄环境、写程序有点太困难了,有没有一种能让小白也能快速搭建自己网站的方法呢?今天就来给大家分享一下如何在腾讯云(阿里…

网站是用mssql好还是mysql_mssql和mysql哪个好

MySQL和MSSQL各有各的优缺点,要根据项目实际情况来选择。MySQL是免费的数据库适合应用在小中型网站上,MSSQL是收费的商用数据库一般用在大型网站上。 MySQL与MSSQL哪个好 MySQL可以说是MSSQL的简化版本。理念相同,但MySQL的实现比MSSQL的需求…

搭载Ubuntu18.04的服务器的ASP.Net Core的搭建以及使用VS2017上传网站的学习

要在远程服务器Ubuntu18.04上运行ASP.Net,第一步需要搭建运行环境 主要参考:https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial#ubuntu 首先安装源 wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-p…

网站遇到Bytespider爬虫该怎么办?

早上打开网站,发现超级卡,以为是网速原因,调试了路由器无济于事,都说重启大法好,重启那就重启web服务试试,可惜依旧没用,不过重启的时候发现CPU彪到99,我还以为是被谁Doos了。 发现…

如何防止网站被侵入,如何防止网站被挂马,如何防止网站被入侵?

一:挂马预防措施: 1、建议用户通过ftp来上传、维护网页,尽量不安装asp的上传程序。 2、对asp上传程序的调用一定要进行身份认证,并只允许信任的人使用上传程序。这其中包括各种新闻发布、商城及论坛程 序,只要可以上传…

android学习笔记15--------------获取网站html

转载注明出处:袁方的技术博客 http://blog.csdn.net/yf210yfimport java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;import junit.f…

电脑网站中有哪些有趣却不出众的小众网站呢

我们在使用电脑的时候会发现不少有趣的电脑网站,这些网站的名声并不出众,但是这些小众的网站却有很多有趣的故事和图片。我们在这些小众的网站上还可以看到一些世界上发生的一些有趣的、奇异的小故事,还有一张张美丽的图片在网站上展示出来。…

给网站添加“开放搜索描述“以适配浏览器的“站点搜索“

背景 要在一个常用网站搜索,想必大部分人会这样: 访问这个网站的的主页或者任意一个带搜索框的页面聚焦输入框,输入关键词并Enter 而如果一个网站适配了浏览器的"站点搜索"(site search)特性,…