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

news/2024/5/20 13:55:12/文章来源:https://blog.csdn.net/weixin_34320159/article/details/91614320

为什么80%的码农都做不了架构师?>>>   hot3.png

大家可能对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位系统上。

转载于:https://my.oschina.net/play/blog/4580

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

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

相关文章

SharePoint 2010开发实例精选——网站属性管理

本例通过自定义一系列的后台应用程序页面,在SharePoint Foundation 2010和SharePoint Server 2010中实现了SharePoint网站的属性定制管理。SharePoint中网站的元数据存储在哈希表SPWeb.AllProperties中。我们可以通过新的SharePoint 2010 API如SPWeb.GetProperty&am…

在Red Hat Linux5下构建LAMP网站服务平台之编译安装Apache与配置基于域名的虚拟Web主机...

在Red Hat Linux5下构建LAMP网站服务平台之编译安装Apache与配置基于域名的虚拟Web主机 2010-09-06 17:25:40标签:Linux RedHat Apache 虚拟主机 个人主页    [推送到技术圈] 版权声明:原创作品,允许转载,转载时请务必以超链接…

英文缩写查询网站

python官网看到PSF,不知道什么意思,就查了一下缩写。没想到还真有这类网站。 1.百度“英文缩写” 或直接访问网站: http://shortof.com/ 2.python软件基金会的意思

php 如何用op浏览器开发手机网站,PHP实现手机网站支付(兼容微信浏览器)

网上的很多PHP支付宝支付接入教程都颇为复杂,且需要配置和引入较多的文件,本人通过整理后给出一个单文件版的,希望可以给各位想接入支付宝支付的带来些许帮助和借鉴意义。推荐:《PHP视频教程》一个PHP文件搞定支付宝系列&#xff…

onmouseover和onmouseout在Repeater控件中应用

如果你曾看过这篇,http://www.cnblogs.com/insus/articles/1411057.html ,它是在GridView控件中演示,但是它的方法在Repeater控件是无法复制的。由于看到论坛上有网友问及,花上一点点时间做了Repeater控件的演示。首先看看效果(动…

22个优秀的网站后台管理面板模版

在一些网站开发过程中,有非常多的例子是关于怎么学习如何创建网站前台设计,但是处理后台的文章是非常少,这篇文章将整理出22个非常优秀的管理后台面板模版帮助你减少网站的后台开发,节省时间。访问下面这些列表,选择您…

使用Varnish代替Squid做网站缓存加速器的详细解决方案

今天写的这篇关于Varnish的文章,已经是一篇可以完全替代Squid做网站缓存加速器的详细解决方案了。网上关于Varnish的资料很少,中文资料更是微乎其微,希望本文能够吸引更多的人研究、使用Varnish。   在我看来,使用Varnish代替Sq…

iis10 asp 如何连接mdb_如何攻破一个网站

原标题:如何攻破一个网站通过本文你将了解黑客常用的入手思路和技术手法,适合热爱网络信息安全的新手朋友了解学习。本文将从最开始的信息收集开始讲述黑客是如何一步步的攻破你的网站和服务器的。阅读本文你会学到以下内容:1.渗透测试前的简…

数据太多加滚动标题不动_SEO怎么对页面标题优化,页面优化要注意什么?

页面的标题主要是规定了一些网页的内容,然后去告诉搜索引擎蜘蛛这个页面的大概内容,页面标题也就是搜索引擎来判断页面内容的主要参考信息,这就是网页优化最重要的因素。SEO去优化页面标题可以从下面几方面入手(1)相关且准确每个页面标题都要…

建站模板论坛_运营自建站并不难!SHOPYY教你快速建站及精准引流

自建站一直是跨境电商圈中热议的话题。相较于平台,自建站有更大的发挥空间,不受条款限制。不过大部分卖家的印象都停留在“难”上。因为他们在做自建站之后只有少数能做起来。而运营难度究竟有多高,怎样才是正确的建站姿势呢?自建站做不起来…

springboot访问静态页面404_网站404是什么原因,网站404怎么解决

404对于SEO的影响是非常严重的。一旦处理不当网站就会被K,轻微的是降权。所以死链接的处理一定要用正规的处理方式。而更加重要的就是预防404,因为企赢SEO优化那么多网站从来没有出现过死链接这东西。首先我们要知道404出现的原因有哪些,才能…

纯html静态网站_Python爬虫抓取纯静态网站及其资源 !这个项目挣了10k!

遇到的需求前段时间需要快速做个静态展示页面,要求是响应式和较美观。由于时间较短,自己动手写的话也有点麻烦,所以就打算上网找现成的。中途找到了几个页面发现不错,然后就开始思考怎么把页面给下载下来。由于之前还没有了解过爬…

加密狗 加密.net网站_实战案例浅析JS加密 RSA与XXTEA

这次要研究的网站采用的是rsa加密以及xxtea。这里先复习下上一篇讲过的调试流程基础版:如果网页有跳转,必须勾选 preservelog 防止丢包看一下有没有框架 右键查看框架源代码(弹出式登陆界面)登陆尽量使用错误密码 防止跳转查看关键登陆包 分析哪些参数是加密的使用别…

在html中加入搜索词条,如何为网站添加关键字与描述信息

meat标签的奥妙META标签,是HTML语言head区的一个辅助性标签。在几乎所有的page里,我们都可以看到类似下面这段html代码:这就是meta标签的典型运用。meta标签有多少参数,有什么作用,为什么我们要特别重视它呢&#xff1…

Sassaparilla – 简单、快速的创建响应式网站

Sassaparilla 是一组创建响应式网站的规则和风格,Sassaparilla 使用 Sass 和 Compass 建立灵活的可重用的样式表,帮助你简单、快速的创建出响应式网站。 您可能感兴趣的相关文章基于拖放布局的 Twitter Bootstrap 网站生成器Superhero:构建大…

php网站选择什么服务器配置,php选择什么服务器配置

php选择什么服务器配置 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。简要介绍WebSVN是一个基于Web的Subversion Repository浏览器…

优秀设计:12个带给你灵感的创意单页网站作品

单页网站作为一个流行趋势已有一段时间了,但他们的受欢迎程度似乎并没有任何减少。这种页面设计方法并不适用于每个项目,但有时它是合适的,是有意义的。例如,当没有很多内容,而且你知道的内容在未来不会增长很多&#…

织梦建站第一课(上):搭建织梦本地调试环境

织梦建站第一课(上):搭建织梦本地调试环境1织梦简介该步骤可做也可不做,因为如果你想在你的真机上安装织梦本地环境可以,如果选择本地安装则跳过此步,也可以在虚拟机中安装,案例中我在虚拟机中安…

网站打开速度慢如何压缩图片_8个免费实用的图片压缩网站、软件(含下载地址)吐血推荐...

很多朋友在生活、工作中都会遇到图片太大的情况,影响导出、存储。这个时候就需要我们压缩图片或者干脆换掉图片。但是换图是一件很影响效率的事情,找到中意的替代图片可不是件容易的事情。所以今天我给大家整理了一个在线图片压缩网站及软件合辑&#xf…

可以发外链的网站_seo排名就是发外链,网站运营就是写文章

seo排名就是发外链,网站运营就是写文章。常规的菜鸟和从业seo几年的人对于seo和网站运营的理解,基本就在于此。1.seo排名就是发外链我从参加线上网络营销的培训班,在里面学习了seo的一些基本理论和皮毛之后我就开始接企业网站关键词seo排名的…