Twitter大量使用Memcached,MQ也是基于Memcached 协议的,Memcached并不是新鲜的东西,但是由于它强大的影响力,有必要深入一下,这篇主要讲它的基础:
1.Memcached是什么?
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据 库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目); 当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。
一般MemCached架构在数据库层之前,应用程序先访问MemCached Server,并从里面拿数据,如果拿不到,再访问数据库,以减低数据库的负载。在Web应用中,IO始终是个瓶颈,尤其是数据库这层,数据库在数据量不大时,没有显现明显的性能问题,但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。

2.谁在用MemCached?
大量的Web2.0的网站架构都使用了MemCached,Web2.0的用户增长速度,使得数据量急剧增加,数据库已经承受不了这么大的压 力,MemCached几乎成为了大网站架构的标配。
LiveJournal
Wikipedia
Flickr
Bebo
Twitter
Typepad
Yellowbot
Youtube
Digg
Wordpress
Craigslist
Mixi
3.Memcached的应用场合
在很多时候,memcached都被滥用了,这当然少不了对它的抱怨。我经常在论坛上看见有人发贴,类似于"如何提高效率",回复是"用memcached",至于怎么用,用在哪里,用来干什么一句没有。memcached不是万能的,它也不是适用在所有场合。Memcached是"分布式"的内存对象缓存系统,那么就是说,那些不需要"分布"的,不需要共享的,或者干脆规模小到只有一台服务器的应用, memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,即使是UNIX本地连接也一样。在我之前的测试数据中显示,memcached本地读写速度要比直接PHP内存数组慢几十倍,而APC、共享内存方式都和直接数组差不多。可见,如果只是本地级缓存,使用memcached是非常不划算的。Memcached在很多时候都是作为数据库前端cache使用的。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能,在大型系统中,访问同样的数据是很频繁的,memcached可以大大降低数据库压力,使系统执行效率提升。另外,memcached也经常作为服务器之间数据共享的存储媒介,例如在SSO系统中保存系统单点登陆状态的数据就可以保存在memcached中,被多个应用共享。
需要注意的是,memcached使用内存管理数据,所以它是易失的,当服务器重启,或者memcached进程中止,数据便会丢失,所以 memcached不能用来持久保存数据。很多人的错误理解,memcached的性能非常好,好到了内存和硬盘的对比程度,其实memcached使用内存并不会得到成百上千的读写速度提高,它的实际瓶颈在于网络连接,它和使用磁盘的数据库系统相比,好处在于它本身非常"轻",因为没有过多的开销和直接的读写方式,它可以轻松应付非常大的数据交换量,所以经常会出现两条千兆网络带宽都满负荷了,memcached进程本身并不占用多少CPU资源的情况。
4.
Memcached的重要特征
1)基于C/S结构,协议简单
例如
存储命令:"set", "add", "replace", "append","prepend" and "cas"
获取命令:get和gets
2)基于libevent的网络并发连接事件处理,使得在高并发情况下,依然保持了非常高的响应能力
3)优化的内存存储管理
4)基于客户端的MemCached的分布式
MemCached是分布式的,但是对Cache而言是集中式的,它通过client端的处理,让key对应的Hash值相同,cache数据存放在同一个server上:
例如:

- 大小: 67.1 KB
分享到:
相关推荐
在这篇题为“Memcached系统中的延迟建模和分析”的研究论文中,作者们深入探讨了影响Memcached系统延迟性能的关键因素,并通过建立理论模型进行量化分析。Memcached作为一种广泛应用于大规模搜索场景的内存缓存解决...
总结来说,NoSQL数据库学习教程涵盖了分布式系统的基础理论、核心算法、各种NoSQL数据库的特性以及实际应用案例,为理解和应用NoSQL数据库提供了全面的知识框架。通过学习,可以深入了解如何在大数据云计算环境下...
本文旨在全面介绍NoSQL数据库的基础概念、核心技术以及代表性数据库系统。 #### 思想篇 ##### CAP理论 - **一致性(Consistency)**:每次读操作都能返回最新的数据。 - **可用性(Availability)**:系统总能...
在应用篇,文章分享了eBay、淘宝、Flickr和Twitter等公司在实际运营中的架构经验,强调了NoSQL数据库在解决高并发、大数据量等问题上的优势。同时,书中也探讨了云计算架构中的反模式,如单点故障、同步调用缺乏回滚...
标题“征服 Kestrel + XMemcached”暗示了这篇博文主要关注的是两个技术组件:Kestrel和XMemcached。Kestrel是一个高性能、异步的分布式消息队列,而XMemcached则是一个广泛使用的Java客户端,用于连接到Memcached...
在应用篇中,eBay、淘宝、Flickr和Twitter分享了他们的架构经验,包括如何利用NoSQL技术解决高并发、海量数据的问题,以及在运维、代码协同、缓存和云计算架构方面的心得。这些实战经验揭示了NoSQL在实际业务场景中...
- **Memcached**:一个高性能的内存对象缓存系统,用于加速动态Web应用程序的速度。 - **HBase**:Hadoop的分布式数据库,基于Google的BigTable论文。 - **Cassandra**:由Facebook开发,现由Apache软件基金会维护,...