memcached在大负载高并发网站上的应用(二)---应用场景

写这篇文章之前,我也特意跟以前的同事做了一些交流,在此感谢sina xiangdong、kingsoft zhangyan和yahoo luke。另外,还有网上的朋友对我上一 节的文章发表了许多有建设性评论,在这里一并感谢。

memcached最吸引人的地方主要在于它的分布式。分布式对于互联网应用来讲 ,按照用途基本上可划分为三种方式:分布式计算、分布式存储和两者兼而有之 。memcached是分布式存储的一种。我们常见的分布式存储大多数是将N台设备( server或者单独的存储)构建成盘阵,而memcached旨在构建一个高速的内存池 。更通俗一点来讲:分布式计算是将N颗cpu组装成一颗cpu,分布式慢速存储是 将N个硬盘组装成一个大硬盘,memcached是将N块内存组装成一块大内存。

有个朋友问:那是不是代价很昂贵啊。我的回答是肯定的。如果你的网站规 模只有三两台服务器的话,我觉得你就不用考虑这样的方案了,等你的网站做大 了以后,再参考这方面的资料即可。一般都是比较大的互联网公司为了追求更好 的用户体验,才进行这方面的投资,对他们来讲,用户体验至上,money是小 case。

还有朋友问:有一些dbms提供内存表的功能,比如mysql的内存表,可以代替 memcached。但我要建议你的是:mysql的内存表确实起到同样的作用,但它的局 限也很多,往往不能让你随心所欲,所以建议你不要走弯路。

二、memcached的应用场景

2.1 应用范围

memcached产品或相关技术的应用,我们在前面已经提到了一些。其实它的应 用还是非常普遍的,应用作为广泛的领域:例如sns类网站、blog类网站、bbs类 网站以及im后台服务。

2.2 sns类网站的应用

livejournal.com是99年始于校园中的项目,有点像中国的校内网。几个学生 纯属出于爱好做了这样一个网站,主要实现以下功能: sns、blog、bbs和rss等 。livejournal从建立开始就采用了大量的开源软件,到现在它本身也衍生了不 少开源软件。 sns网站,现在比比皆是,规模比较大的象开心、校内、51,它们 的页面上往往需要引用大量的用户信息、好友信息以及文章信息等,所以跨表或 跨库操作会相当多。如果这些功能全部直接操作数据库,显然会带来极大的效率 损耗和系统负载。memcached在这样的场景下就会发挥巨大的作用,它采用大内 存把这些不变的数据全都缓存起来,当数据修改时就通知cache过期,这样应用 层基本上就可以解决大部分问题了,只有很小一部分请求穿透应用层,用到数据 库。

2.3 blog、bbs类网站的应用

象blog.sina.com.cn这些流量巨大的blog系统,它需要频繁读写的一些小数 据。其中最典型的应用,我们通常成为“数字类服务”,比如blog中 需要实时显示的用户点击数和阅读数,bbs中需要记录的在线人数、在线用户等 。这些小数据的处理非常繁琐,你无论怎么去设计数据库,都很难避开跨表或者 跨库。有的朋友会说,可以在数据库中增加冗余字段解决这类问题,但事实上, 这既不符合数据库设计的范式规则,也很难做到数据的一致性,由此会引发更为 复杂的问题。而且由于产品线的分散发展,数据已经很难做到完全的统一规划。 memcached在这样的场景下就会将这些小数据进行缓存,定期持久化就可以了, 查询操作一直都在内存中运行。说到这里,有的朋友又会想到一些其它的问题: “memcached server宕机了怎么办,怎么保证与数据库的数据一致” 。我会对你说:“你的问题非常好,我们将会在后面章节给出相应的解决 方案”。另外,其实这种小数据并不是关键性数据,即使偶尔发生点错误 ,也没太大的问题。blog、bbs系统并不是严格的企业级系统,假如你是为银行 业务提供解决方案的话,memcached并不适合。

2.4 im server的应用

前些时间, 有一些文章介绍memcached 在Jabber上应用。写累了,喝口水, 读者自己去找找资料吧,有时间的话,帮我补上吧,呵呵。

我们举了几个例子来说明memcached的应用场景,似乎都局限于小数据服务, 那是不是就不能用于较大数据的缓冲了?那绝不是,memcached能够用来存储各 种格式的数据,包括图像、视频、文件以及数据库检索的结果等等,而且生产环 境中就这么跑过,只不过让大数据量使用缓冲的话,有点太浪费了,同样数量的 内存存不了几条数据,所以会明显的降低命中率。

时间: 2024-11-04 21:01:37

memcached在大负载高并发网站上的应用(二)---应用场景的相关文章

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

大家可能对memcached这种产品早有了解,或者已经应用在自己的网站中了,但是也有一些朋友从来都没有听说过或者使用过. 这都没什么关系,本文旨在从各个角度综合的介绍这种产品,尽量深入浅出,如果能对您现在或以后的工作有所帮助,笔者将感到无比荣幸. 我要介绍的内容包括以下几个方面: 1.memcached的简介 2.memcached的应用场景 3.memcached的安装 4.memcached的使用 5.memcached的部署架构 6.memcached的局限性 7.memcached的改进

大数据高并发数据库设计注意要点

在一个项目实施初始,数据库的设计非常重要,很多时候,我们只关心和考虑到眼前的功能,而忽略了后续的可维护性和可拓展性,以及还有一个在大数据时代会遇到的高并发问题. 在设计表结构时要注意以下几个要点: 1.数据行的长度不要超过8020字节,如果超过这个长度的话在物理页中这条数据会占用两行从而造成存储碎片,降低查询效率. 2.能够用数字类型的字段尽量选择数字类型而不用字符串类型的(电话号码),这会降低查询和连接的性能,并会增加存储开销.这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数

高权重网站的SEO方向二:内部结构调整

大家好,我是木子成舟.前面为大家介绍了高权重网站的SEO方向的第一个方面,主要是从内容质量上要求我们在给网站进行SEO的时候更多的给用户提供权威.原创.可靠.精美的内容信息,说起来很简单,但是做起来很难,而且内容质量的提升也需要我们长期的坚持,三天打鱼两天晒网是做不好网站内容的.有很多站长朋友做SEO很心急,特别是新手,其实主要是心态没摆正,当然也可能是方法不太正确,今天就为大家介绍一个能够快速帮助大家看到效果的方法:内部结构调整. 网站内部结构好坏,能够影响到优化的部分有两个方面,一个是搜索引

MySQL百万级高并发网站实战攻略

在一开始接触PHP接触MYSQL的时候就听不少人说:"MySQL就跑跑一天几十万IP的小站还可以,要是几百万IP就不行了",原话不记得了,大体就是这个意思.一直也没有好的机会去验证这个说法,一是从没有接手过这么大流量的网站,二是平时工作也比较忙,懒得去管这些,反正现在用不着,抱着这个想法把这个问题一直留到了最近,才把这个问题搞明白. 就在前几天公司旗下一网站(由于这是公司的商业内容我就不说是那个网站了)以下简称A站,这A站在年后流量猛增从一天的七八十万猛跑到了好几百万的IP,一天下来接

百万级高并发网站MYSQL应用攻略

在长时间的网站开发过程中,能作一个百万IP的网站对我来说真是一个新的挑战,由于本人的水平有限,所以一直就职于一个小公司,在这里也只是抱着重在参与的想法.在以后我所讲述到的内容知识点上如有不适之处请大家多多批评指教. 在一开始接触PHP接触MYSQL的时候就听不少人说:"Mysql就跑跑一天几十万IP的小站还可以,要是几百万IP就不行了",原话不记得了,大体就是这个意思.一直也没有好的机会去验证这个说法,一是从没有接手过这么大流量的网站,二是平时工作也比较忙,懒得去管这些,反正现在用不着

大流量高并发互联网应用实践在线峰会:资料汇总(更新ing~)

2015阿里双11交易额912.17亿,开发者一直渴望获得更多阿里双11背后的技术实现与实践,为此我们精心策划了阿里双11在线技术大会,本次大会将于9月20日-21日20:00-21:30在线举办.  10位淘宝开放平台和阿里云技术大V,揭秘双11背后的海量订单时实同步与处理 .大数据驱动的客户运营 .聚石塔容器技术实践.千牛旺旺的云到端. RDS数据库.ODPS.中间件.负载均衡等绝密技术.  阿里双11首届在线技术大会官网:https://yq.aliyun.com/activity/112

大流量、高并发的网站的底层系统架构

动态应用,是相对于网站静态内容而言, 是指以c/c++.php.Java.perl..net等 服务器端语言开发的网络应用软件,比如论坛.网络相册.交友.BLOG等常见应用.动态应用系统通 常与数据库系统.缓存系统.分布式存储系统等密不可分. 大型动态应用系统平台主要是针对于大流 量.高并发网站建立的底层系统架构.大型网站的运行需要一个可靠.安全.可扩展.易维护的应用系统平台做为支撑,以保证网站应用的平稳运行. 大型动态应用系统又可分为几个子系统: l         Web前 端系统 l   

大数据下高并发的处理详解

对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就要想想应对措施,今天我们就一起讨论一下常见的并发和同步吧. 首先为了更好的理解并发和同步,我们需要首先明白两个重要的概念:同步和异步 同步和异步的区别和联系 所谓同步,就是一个线程执行一个方法或函数的时候,会阻塞其它线程,其他线程要等待它执行完毕才能继续执行.异步,就是多个线程之间没有阻塞,多个线程同时执行.通俗一点来说,同步就是一

大数据量下高并发同步的讲解(不看,保证你后悔)(转)

  对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧. 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步 1.同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到 返回的值或消息后才往下执行其它的命令. 异步,执行完函数或方法后