`
cleaneyes
  • 浏览: 342509 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

分布式缓存系统Memcached的讨论

阅读更多

楼主好像并不很了解memcached,我们公司已经用了好久,非常稳定,非常快,并发连接可以上到1w,我手头的应用常常保持在3-5k;它的快不仅是 因为用了libevent,还因为它采取了“用内存冗余换存取速度”的内存管理策略,网上有文章专门分析它的内存分配回收管理的源码,讲的很清楚,在这上 面jboss cache、ehcache、oscache跟它没法比;memcached的集群也非常好,听说国外有200+的memcached集群,我们也有这方 面的尝试,效果也很好,一台down掉根本不会引起其他机器down掉,只是这台的数据丢了,需要慢慢积累回来;而且支持多客户端,java、php、 python、ruby可以共享数据,就把它当作数据库用。
我的建议是:你的应用访问量比较大,对响应速度要求很高,对数据一致性要求一般时,用 它,挡在数据库前面,非常爽(memcached是互联网公司开发的,正好满足这三个条件);如果应用不忙,用用ehcache就行了。

 

to oldyoungj,

ehcache、oscache 的数据都是在本机服务器上的,访问时走的仅是系统总线。而memcached走的是网络。俺不相信网络传输速度还会快过系统总线。



并不需要那么快。我们的应用读取memcached的网络流量是每秒有2MB的流量,是读取数据库的网络流量的大约5倍。但是你要知道现在随便的 PC机都是千兆网卡,因此memcached的get/set操作的延时非常少,并不比echache的get/set慢多少。在一个完整的web应用当 中,我的压力测试表明,性能差异 <= 5%

 

论坛、sns这样的应用,会使用多种技术进行缓存。

拿sohu的bbs来说吧,pv为5000w,峰值8000w

其中帖子、评论读写频繁,其他部分读频繁。
帖子列表、评论列表使用c开发(其中排序算法很巧妙),socket调用
帖子、评论内容使用squid缓存

其他读频繁的部分使用memcached、squid、定时生成静态页面等多种技术。


数据库用mysql,分表。


个人认为,小规模应用中,jvm级别的cache可以用用,memcached可用可不用

大规模网站应用,肯定是系统水平切分,多种cache结合。

 

memcached非常快,但我没说过比本机的ehcache还快,但用本地缓存有两点不爽:
1.缓存放在内存or放在磁盘?应用重启会导致内存缓存丢失,放在磁盘又不够快。内存开多大合适?如果是大访问量应用,缓存对象集中淘汰可能引起 服务器load急剧波动(我们吃过亏,现在也开ehcache,但缓存对象的上限开的很小)
2.集群应用里缓存对象如何共享?jboss cache用的是广播,访问量大的时候,可以把你的服务拖死,这个我们也吃过亏

当然,有人谈到了sohu的例子,一旦访问量大了,各种缓存都得用着,目前我们就是squid + memcached + ehcache。squid也是好东西,但缓存内容删除不太灵活,比较适合web1.0,比如新浪搜狐的新闻


另外,java memcached client用1.6好了,没必要升级到2.1,2.X似乎还不太稳定。

 

 

 

分享到:
评论

相关推荐

    20120102 net下memcached 分布式缓存系统应用

    "20120102 net下memcached 分布式缓存系统应用" 这个标题表明这是一个关于在.NET环境中使用Memcached作为分布式缓存系统的实践教程或参考资料。时间戳“20120102”可能指的是资料的创建日期,暗示了这是较早时期的...

    Xmemcached一个java实现的分布式缓存

    Xmemcached是一个高性能、线程安全的Java实现的分布式缓存系统,专为Memcached设计。这个库的主要目标是提供简单、快速、无阻塞的客户端API,以便于开发人员在Java应用程序中集成和利用Memcached的强大功能。下面将...

    memcached-笔记资料

    3. "ConsistenHashingandRandomTreesDistributedCachingprotocolsforrelievingHotSpotsontheworldwideweb.pdf":这篇论文深入探讨了一致性哈希算法,可能是从...,以及在分布式缓存系统(如Memcached)中应用的效果...

    memcached完全剖析ehcache memcached redis 缓存技术总结

    1. **Memcached** - 是一个分布式内存对象缓存系统,用于减轻数据库负载,通过将数据存储在内存中来加速动态Web应用。它支持多语言,提供简单的键值对存储,适合短期存储非结构化数据。 2. **Ehcache** - 是一个...

    大规模分布式系统架构与设计实战

    知识点包括了缓存架构设计、数据一致性保证、缓存失效策略、以及常见的分布式缓存系统(例如Redis和Memcached)。缓存系统的设计必须考虑缓存雪崩、穿透和击穿等问题的解决方案。 第5章中,消息队列的实现部分讲解...

    memcached+asp.net4.0

    memcached是一个分布式内存对象缓存系统,常用于提高Web应用程序的性能,通过存储数据到内存中,避免了频繁的数据库查询,从而提高了响应速度。 **描述分析:** "memcached+asp.net4.0 的demo" 描述提到这是一个...

    分布式数据库面试专题系列:Memcached+Redis+MongoDB.zip

    Memcached是一款高性能、轻量级的分布式内存对象缓存系统,主要用于减少数据库负载,提升应用性能。它通过存储数据到内存中,实现了快速访问。Memcached支持多语言客户端,采用键值对存储模式,适用于存储小块数据,...

    分布式信息的缓存方法、装置、计算机设备以及存储介质.zip

    综上所述,这份文档全面探讨了分布式环境下的信息缓存,从方法到具体实现,从硬件配置到软件设计,再到存储介质的选择和管理,涵盖了构建高效分布式缓存系统所需的关键技术和实践。对于理解并优化大型分布式系统的...

    memcached-win64-1.4.4-14下载,无需积分

    Memcached是一款高性能、分布式内存对象缓存系统,用于在动态系统中减少数据库负载,通过将数据存储在内存中来加速访问。它是一个简单的键值存储系统,最初由Danga Interactive开发,现在被广泛应用于各种Web应用...

    分布式系统概念与设计 原书第5版

    此外,分布式版本控制(如Git)、分布式数据库(如Cassandra、HBase)、分布式缓存(如Redis、Memcached)和分布式文件系统(如Hadoop HDFS)也是本书会覆盖的重要主题。这些技术在大数据处理、云计算和实时数据分析...

    memcached在SSH中的配置

    标题“memcached在SSH中的配置”指的是如何在SSH(Spring Security、Struts2和Hibernate)这个Java Web开发框架组合中集成和配置缓存系统memcached。memcached是一个高性能、分布式内存对象缓存系统,常用于加速动态...

    memcached缓存数据库jar包

    `memcached`是一种高性能、分布式内存对象缓存系统,它广泛用于减轻数据库负载,提高Web应用的响应速度。它通过在内存中存储数据,提供快速的数据访问,从而减少了对数据库的直接访问次数。在这个场景中,我们讨论的...

    memcached权威指南.pdf

    《Memcached权威指南》是一本深入探讨分布式内存缓存系统Memcached的专业书籍,旨在帮助读者全面理解并熟练掌握这一高效能的技术。Memcached是互联网上广泛使用的开源软件,用于缓解数据库负载,提升Web应用的性能。...

    java_memcached-release_2.0.1.zip

    Java Memcached 2.0.1 是一个针对Java平台的Memcached客户端库,它使得Java开发者能够方便地与Memcached缓存系统进行交互。Memcached是一个高性能、分布式内存对象缓存系统,广泛用于减轻数据库负载,提高Web应用的...

    详解大型网站web服务器缓存.zip

    分布式缓存系统如Memcached和Redis,它们提供了高效的键值存储,可以在集群环境中快速获取和更新数据,避免了昂贵的跨服务器通信。 设置缓存过期时间是必要的,因为缓存的数据可能存在时效性问题,如新闻、价格等...

    memcached For NET 3.5

    memcached 是一个高性能、分布式内存对象缓存系统,它广泛用于加速动态Web应用,通过在内存中缓存数据和对象来减少数据库访问,从而提高性能。 **描述分析:**描述中的"memcached For NET 3.5"进一步强调了这是针对...

    memcached安装及java应用使用memcached

    “memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...

Global site tag (gtag.js) - Google Analytics