`
zhaohaolin
  • 浏览: 1012134 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Sina的开源项目:Memcachedb与NCache【转】

阅读更多

http://hi.baidu.com/zeorliu/blog/item/4ba513f4a3b7fbe77609d74e.html

http://www.dbanotes.net/opensource/sina_memcachedb_ncache.html Sina 开发团队的开源项目: Memcachedb 与 NCache
作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明
一直以为新浪是国内几家门户网站中技术比较糙的一家(也可能是太低调了),这应该是我比较无知的偏见,无意冒犯。看到这位新浪技术人员介绍的开源软件项目: NCache 与 Memcachedb 。挺欣赏他们这种国内环境下比较少见的分享精神。为他们喝彩!
NCache = Nginx Cache
Memcachedb = Memcached + Berkeley DB
这两个软件,应该都是从实际应用需求上得来的,可以说是"设计以致用",不是纯用于研究的,而设计思路很有些 "Mashup"。 我 没有实际使用经验,不知 Memcachedb 和 Tugela Cache 二者有何差别。我对 Memcachedb 这个项目倒是比较感兴趣的,把 Cache 和 DB 有效结合起来,消除 DB 单点 I/O 承受的应用压力...而且,实现方便且廉价...十分美好的前景。期待能有更多类似的项目涌现出来。国内的 Web 2.0 站点软件设计人员也可以借鉴一下。
--EOF--
更新:【很多人估计从来不仔细看文章的具体内容。我这篇文章里可看不出来 "对Memcachedb的思想比较推崇"的, TBStore 也未必就有多超前,内存 + DB 八百年前就有人想到了。只是赞扬一下 Sina 团队的精神而已,如果只是攀比牛B,去和Google 、eBay 比比好了】
更新2: Memcachedb 现在在有了官方站点:http://memcachedb.org/
http://www.iteye.com/topic/157688 Memcachedb & Ncache 讨论
看了邮件列表:http://groups.google.com/group/python-cn/browse_thread/thread/dd297b13ad14d8dc
比较感兴趣的是:这个结合是用了memcached的内存cache机制和bdb的持久化机制;但是为什么不直接使用bdb呢 ?bdb应该也支持内存cache的呀。看文中也说到memcachedb是使用到了memcached的socket部分,哈bdb的内存管理 ,硬盘存储。这样的话,其实是改了bdb的socket部分,应该叫做enhancebdb
还有,看文中说到,会先把数据存到memcachedb中,然后异步更新到db中。读也直接从memcachdb读。那db变成备份了 。是否有喧宾夺主之嫌?那么它的稳定性足可和db抗衡么?
如果结合Berkeley,cache性能不如memcached,稳定性不如db 。由于不能在python-cn 邮件列表发文,故发于此。有熟悉者,能否就memcachedb得使用加以说明。大家也可以就此进行讨论。。。
又看了这篇blog:http://www.dbanotes.net/opensource/sina_memcachedb_ncache.html
文中最后提到是在bdb之前用memcached作了一个缓冲。那么,如果cache中数据在写入bdb之前down掉了,数据岂不是丢失了?还是有什么机制?如果直接存的话,根直接存数据库,或者直接存bdb有什么区别呢?那还不是相当于做了一个memcached+db.只是这个db换成了bdb,还有就是可能结合的更紧密了点
dogstar
刚看了一下ncache,基本上就是增强了nginx 的静态文件缓存能力 。号称“a web cache system base on nginx web server. faster and more efficient than squid.”。
nginx+ncache做http服务器;memcachedb+mysqlProxy+mysql 组成db数据中心 。这样的组合会不会很爽呀
dogstar
memcachedb牺牲了memcached的高性能换来了持久存储,为了防止cache挂掉,激增的数据库访问对db的压力,基本上,在大型web应用中,严重依赖cache机制,如果一但大部分cache down掉,瞬时db访问压力,绝对会把db压垮 。这样的应用场景下,cache的自我恢复,变得首当其冲,牺牲点性能,来换回自我存储还是很值得的 。但是不知道这个性能的损失由多大?
ncache只是看了一下项目主页介绍,没有评测过。应该算是nginx的缓存增强吧。不知道稳定性,性能如何。整体来说,两者都是在实际的应用场景中对开源项目的二次开发,且不论有多大的惊奇之处,单凭开源出来,也是值得赞赏的。中国开源界需要这样的力量。
robbin
第一眼看到memcachedb,我就知道它是我寻觅良久的“梦中情人”,呵呵。memcachedb的主要用途并不是让cache能够持久化,也许这种用法的确有点意思,但是cache持久化本身没有什么特别用处,既然是cache就没有持久化的必要 。还是引用开发者自己的话来说明memcachedb的真正用途吧:
参考:http://blog.csdn.net/simonlsy/    引用:需要频繁读写的小数据。例如数字类服务就像点击数,需要频繁写入小数据的例如评论系统,需要记录用户状态的例如在线人数以及在线用户等等 。当然,如果您想用来存储单笔超过10K以上的数据,例如新闻或者文章或者论坛帖子也可以.
JavaEye网站现在能够实时跟踪在线用户状态,能够记录用户读过什么帖子,这个功能的实现不能直接读写数据库表,否则性能要吃不消的,但也不能直接使用cache server,否则cache server重起清理缓存的时候,用户状态都丢失了。我们目前是用MySQL的内存表来实现的,性能还可以,但是内存表有很大的限制,妨碍了我们基于用户在线状态开发更多更有意思的功能。 所以我一直在寻找一个能够实现高性能读写,不需要太严格的事务保护,但是带有存储机制的服务,并且这个服务必须能够支持分布式访问的 , 因此Berkeley DB就不适用了。而memcachedb正是我所想要的东西,可以给我们帮上大忙了,以后JavaEye网站会在很多场合用得上memcachedb,很 cool的小东西!是新浪的开发人员搞出来的,国内的互联网公司也可以在技术上向开源社区做出贡献了,很好!
http://blog.csdn.net/simonlsy/archive/2008/01/07/2027933.aspx memcachedb应用指南一:为什么选择memcachedb收藏
为什么要选择memcachedb :没有什么特殊的原因,我们有最好的理由就是,在做到最大不牺牲数据读、写性能的前提下,我们能够让您原来存储在memcache里的数据不再遭受系统宕机或者系统掉电而丢失,即使服务器电源爆炸了,只要硬盘还能够正常工作,换到另外一台服务器上,您的数据依然安然无恙地在硬盘上
性能的担忧 :我们做过小数据测试,小数据(几十个字节)数据的读写,每秒钟并发能够维持在5000+(单块146Scis硬盘,CPU和内存配置几乎可以忽略因为这不是性能瓶颈)。 基本上满足所有互联网高效存储的应用。
应用场合需要频繁读写的小数据。例如数字类服务就像点击数,需要频繁写入小数据的例如评论系统,需要记录用户状态的例如在线人数以及在线用户等等 。当然,如果您想用来存储单笔超过10K以上的数据,例如新闻或者文章或者论坛帖子也可以,但是我们没有尝试过,如果您真的用来这样子玩了,可以反馈给我们。
数据备份&&读写分离 :memcachedb支持主辅实时无差异同步,配置主服务和辅服务仅仅需要很短的一条启动命令。当然,您也可以利用这一便利特性来实现读写分离,那样子会让您的系统更加的高效。
稳定性:memcachedb目前被应用于新浪互动社区多个产品线中,具有钢铁般的品质,Sina出品,品质毋庸置疑。
http://www.ncache.org/ 已经加入 GOOGLE CODE 开源项目
http://code.google.com/p/ncache/ ncache = nginx cache
-What is ncache?
a web cache system base on nginx web server. faster and more efficient than squid.
we have published a release version 2.3 on 32-bit linux and a release version 3.1_64 on 64-bit linux now, you can see the change log here
if you want to improve your ncache performance (32-bit) please see this wiki paper: AdviceIOPerfomance
and we will maintain it be fresh.
you can also visit here by http://www.ncache.org/ or http://ncache.googlecode.com/
and left your message here
there is also have some BUGS, so if you find it please tell us, thanks alot.
shinepf@gmail.com shineyear@msn.com shuiyang@gmail.com shuiyang@live.cn fgxlzh@gmail.com
-Features
The large storage can save over 30,000,000 caches
The self sort share memory hash index
Base on the fastest web server framework : nginx
The high throughput and high concurrent volume of the cache request
Without http headers cache
Low cpu cost and low iowait
Memory cache the hottest data by MMAP like "varnish"
Texturixer storage system
Auto delete cache file when it is cold
-How to use?
You can see it on the wiki paper HowToNcacheV2 and HowToNcacheV3.
-Problem yet~
only support on linux 2.6 up (64-bit can support freebsd).
do not have enough information about the Run-time statistics
-The ncache Subversion repository is available http://ncache.googlecode.com/svn/
http://hi.baidu.com/jabber/blog/item/f556c7fc2959df86b901a0a7.html memcachedb的性能测试 2008-01-24 16:51
这几天听说了memcachedb。
memcachedb故名思义就是 memcached + bdb,是基于memcached Socket层和berkeley-db存储层结构的实现,是新浪互动社区技术团队2007年的一项重大的技术成果,现在应用于新浪互动社区多个产品线 中,其中包括新浪博客等重头产品。能够实现任意 memcache api的调用、数据实时落地以及主辅实时备份。
初步感觉用处不大,无非就是利用memcache协议的一个db,性能应该不会很高。如果有分布式需要用手工分数据库的方法也可以实现。但看了介绍http://blog.csdn.net/simonlsy/archive/2008/01/07/2027933.aspx 说性能可以达到读写5000次/秒,觉得还是有它的价值。所以简单测试了一下
1. 环境
OS: Linux, Ubuntu 7.04 64-bit
Memory: 4G
CPU: Intel(R) Pentium(R) D CPU 2.66GHz
SCSI DISK, ext3 file system
libevent 1.3e
Memcached 1.2.4
Berkeley DB 4.6.21
Java 1.6.0
memcachedb 0.1.1 安装方法 http://blog.csdn.net/simonlsy/
2. 测试方法
client/server在同一机上,使用ethernet interface连接, 不是localhost
本Linux同时在作 ADSL route gateway,可能会对测试造成小量影响。
JAVA CLIENT, 使用3线程
Key: 数字,1~100万
数据:100字节字符串
3. 测试结果
Memcached 写速度 平均速度: 16222 次/秒 最大速度 18799 次/秒
Memcached 读速度 平均速度: 20971 次/秒 最大速度 22497 次/秒
Memcachedb 写速度 平均速度: 8958 次/秒 最大速度 10480 次/秒
Memcachedb 读速度 平均速度: 6871 次/秒 最大速度 12542 次/秒
由于硬件环境,网络环境,线程数,编程语言不同,可能测试结果差别也很大,本测试结果只起相对参考作用。即比较memcached/memcachedb在相同环境下的性能区别。

分享到:
评论

相关推荐

    memcachedb-1.2.0.tar.gz

    2. **持久化存储**:与Memcached不同,Memcachedb具备数据持久化能力,这意味着即使在系统重启或故障后,之前存储的数据仍然可以恢复,这对于需要保证数据完整性的应用至关重要。 3. **Berkeley DB引擎**:...

    memcachedb

    ### Memcachedb:全面解析与应用实践 #### 一、Memcachedb简介 **Memcachedb** 是一种分布式键值存储系统,专为持久化设计。它不是传统的缓存解决方案,而是一个完整的、用于持久化的 memcached 变体。与 ...

    cpp-分布式缓存服务器memcachedb

    Memcachedb是一个基于Memcached的开源项目,由新浪公司的开发团队设计并推出。它的主要目标是在原有Memcached的基础上引入了持久化存储功能,同时实现了异步主辅复制机制,以提升数据的安全性和可靠性。在NoSQL...

    memcachedb 手册

    综上所述,`memcachedb` 手册是一份全面的参考资料,不仅涵盖了基础操作,还深入探讨了高级主题,对于想要在项目中使用 `memcachedb` 的开发人员来说极具价值。通过阅读这份手册,你将能够充分利用 `memcachedb` ...

    Ubuntu 9.04中安装Memcachedb

    在Ubuntu 9.04中安装Memcachedb是一个相对直接的过程,但如果希望在系统上顺利运行Memcachedb,用户需要了解一些前置知识,包括对Memcachedb的基本认识、相关依赖库的安装,以及在Ubuntu系统上进行安装操作的具体...

    Memcached原理和使用详解.docx

    * MemcacheDB:一个基于Memcached的分布式内存数据库 *Tokyo Cabinet:一个日本开源的高性能数据库 *Google的Bigtable:一个分布式的NoSQL数据库 Memcached是一种高性能的分布式内存缓存服务器,广泛应用于Web开发...

    新浪博客架构分享.ppt

    新浪博客架构分享主要介绍了新浪博客这一国内知名博客服务平台的架构设计和面临的挑战,以及为解决这些问题所采取的技术方案。以下是详细的知识点解析: 1. **新浪博客简介**:新浪博客作为一个Web2.0动态应用类...

    内存数据库[](PPT).ppt

    2. 开源产品:FastDB、MemcacheDB、Dbcached等,多用于实时和嵌入式环境,Key/Value操作。 3. 传统数据库的内存表:如SQLite、MySQL的临时表和内存表,提供一定程度的内存优化。 以Oracle Timesten为例,它由内存...

    开源内存数据库的调研与分析.doc

    内存数据库的优劣对比,主要包括fastdb,memcachedb,mangodb等,也涉及到了数据库的设计思路,已经性能比较。对于选择合适的内存数据库有一定的帮助吧。

    Redis实战 中文

    - **定义**:Voldemort是一款分布式键值存储系统,最初由LinkedIn开发,后来开源。 - **特点**: - 支持分区和复制,能够实现数据的高可用性和容错性。 - 提供了丰富的客户端支持,适用于多种编程语言。 **1.1.2 ...

    Memcached_原理和使用详解

    - **MemcacheDB**:新浪开源团队开发的一个基于Berkeley DB的内存数据库,支持持久化。 - **tmcache**:作者heiyeluren开发的项目,可能是一个针对特定场景优化的Memcached变体。 **5. 技巧与应用** - **缓存策略*...

    Redis实战.pdf

    - **ping**:测试与服务器的连接状态。 - **echo**:返回客户端发送给服务器的字符串。 - **select**:选择一个数据库。 - **quit**:关闭连接。 - **dbsize**:返回当前数据库中键的数量。 - **info**:返回...

    redis实战中文 pdf

    - **特点**: Hypertable 是一个开源、高可靠性的、可扩展的分布式数据库系统,类似于Google的Bigtable。 - **应用场景**: 适用于需要大规模数据分析的应用场景。 #### 二、为什么选择Key-Value Store ##### 1.2.1 ...

    架构师系列书籍--Redis实战

    - **简介**:Voldemort是一款分布式Key-Value存储系统,由LinkedIn开发并开源。 - **特点**: - 支持分区和副本机制,提供高可用性。 - 具有容错能力,可以在部分节点故障时继续工作。 - 提供简单的API,易于集成...

    Memcached 原理和使用详解

    - **MemcacheDB**:新浪开源团队开发的项目,提供了持久化存储功能。 - **tmcache**:一个由个人开发者开发的项目,可能具有特定的功能优化。 总的来说,Memcached作为一个简单而高效的分布式缓存系统,在现代Web...

    memcached缓存

    2. **Memcachedb**:Memcachedb是在memcached基础上增加了持久化功能的版本,但在性能上略逊于纯粹的memcached。 **六、优化与注意事项** 1. **内存分配**:合理预估内存需求,避免过度分配导致资源浪费,同时也要...

    Memcached VS Redis

    Memcached VS Redis:2者究竟有哪些区别,什么场景下应用那种类型的缓存服务器。

    memcldj:将JSON Blob快速加载到memcache或memcachedb中

    自述文件 快速将JSON Blob加载到或。 给定一个文件,请使用JSON文档中的值作为键,并将其值设置为JSON Blob。 注意:不支持嵌套键。 安装 ...或通过安装。 ... -addr="127.0.0.1:11211": hostport of memcache ...

    NoSQL数据库详细介绍入门经典

    - **MemcacheDB**:一个基于内存的键值存储系统。 - **Mnesia**:Erlang平台上的分布式数据库管理系统。 - **LightCloud**:基于MongoDB的云托管服务。 - **HamsterDB**:一个高性能的嵌入式数据库。 - **Flare...

Global site tag (gtag.js) - Google Analytics