新浪发起的UNIX开源软件项目

| |
[不指定 2008-1-10 08:45 | by 张宴 ]
  Memcachedb

  协议:New BSD License
  作者:stvchu, gary.caokai, forever.sky81
  团队:新浪互动社区事业部──博客产品
  网址:http://www.memcachedb.org/

  Memcachedb = memcache + Berkeley DB

  Memcachedb是一款支持高并发的分布式持久存储系统,对任何原有memcached客户端来讲,它仍旧是个memcached,但是,它的数据是可以持久存储的。
  前端:memcached的网络层
  后端:Berkeley DB存储

  写速度:从本地服务器通过memcache客户端(libmemcache) set 2亿条16字节长的key,10字节长的Value的记录,耗时16572秒,平均速度12000条记录/秒。
  读速度:从本地服务器通过memcache客户端(libmemcache) get 100万条16字节长的key,10字节长的Value的记录,耗时103秒,平均速度10000条记录/秒。

  • 支持的memcache命令
  get, set, add, replace
  incr, decr
  delete
  stats
  flush_all

  • 私有命令
  db_checkpoint, db_archive
  db_ismaster, db_whoismaster (for replication)

  编译及安装方法:
  http://blog.csdn.net/simonlsy/archive/2008/01/07/2027940.aspx

  点击在新窗口中浏览此图片



  ncache

  协议:New BSD License
  作者:shinepf, shuiyang
  团队:新浪互动社区事业部──博客产品
  网址:http://code.google.com/p/ncache/

  ncache是一款基于nginx的缓存系统,比Squid更快更高效。

  01
  点击在新窗口中浏览此图片

  02
  点击在新窗口中浏览此图片

  03
  点击在新窗口中浏览此图片

  04
  点击在新窗口中浏览此图片

  05
  点击在新窗口中浏览此图片

  06
  点击在新窗口中浏览此图片

  07
  点击在新窗口中浏览此图片

  08
  点击在新窗口中浏览此图片

  09
  点击在新窗口中浏览此图片

  10
  点击在新窗口中浏览此图片

  以上图片来自PPT:http://ncache.googlecode.com/files/ncache.ppt



技术大类 » Cache与存储 | 评论(41) | 引用(0) | 阅读(49395)
乐百氏
2008-1-10 11:26
memcachedb,关注它比较长时间了,总体感觉:鸡肋
ncache有意思,不过,bug不少。
希望实现其rfc2616关于cache部分的描述。支持Expire等。

#####################
-----------------Build dir /tmp/data-------------------------------


/bin/chown: 参数太少
请尝试执行‘/bin/chown --help’来获取更多信息。

-----------------Build dir cachedir-------------------------------

./mkdir_ngx_cache.sh: line 36: [: too many arguments
/bin/chown: 参数太少
请尝试执行‘/bin/chown --help’来获取更多信息。
乐百氏
2008-1-10 11:48
ncache貌似还不能缓存。

如下情况还是不能被缓存阿。已经包含了:(Cache-Control: max-age=8640000)
HTTP/1.1 200 OK
Server: nginx/0.5.34
Date: Thu, 10 Jan 2008 03:54:26 GMT
Content-Type: text/html
Connection: keep-alive
ID: 12345678
Set-Cookie: 1234555
Cache-Control: max-age=8640000
Content-Length: 217
代码罐头
2008-1-10 12:53
想不到新浪里面还是有很多前瞻性的开发项目.
能有这样的团队真的很不错.
可以写自己喜欢的代码和做很多实验.
看来有了前进的目标了.
项目除了在GOOGLE CODE上开.
有没有放到SF上?
那里能得到更多协助.
lizongbo Email Homepage
2008-1-10 18:34
我曾经打算拿java版的 Berkeley DB 和apache mina 来做java版的memched ,不过还没动手实现.

新浪有的缓存用的所谓的 CachePower,把 squid改了名字,却连 X-Squid-Error 都没改,显得不厚道!

比如:http://218.30.66.101/


Generated Thu, 10 Jan 2008 10:34:00 GMT by xa-176.sina.com.cn (CachePower/1.3.1.dev)


HTTP/1.x 403 Forbidden
Server: CachePower/1.3.1.dev
Mime-Version: 1.0
Date: Thu, 10 Jan 2008 10:34:00 GMT
Content-Type: text/html
Content-Length: 1063
Expires: Thu, 10 Jan 2008 10:34:00 GMT
X-Squid-Error: ERR_ACCESS_DENIED 0
X-Cache: MISS from xa-176.sina.com.cn
Connection: close
代码罐头
2008-1-10 22:03
JAVA的话性能可以满足么?
这种底层程序.本来就很讲求性能吧
好的程序甚至需要调整内核性能来满足应用的性能.
改名字只是表面
一样没有改反馈信息也是表面
很多东西.比如内部性能.只有开发人员才知道了
非狐外传 Email
2008-1-11 00:54
ncache不知道和varnishd比有什么特色
outrace
2008-1-12 09:06
楼主最好可以给一个ncache的配置例子。
http://code.google.com/p/ncache/wiki/HowToUseNCache
这个上面没有完整的配置信息(比如fcgi的配置)

然后给一个ncache和varnish的性能比较看看。
hooo。谢谢
freeway
2008-1-16 09:34
memcachedb的客户端怎么没有?是不是就用memcached的客户端就可以访问memcachedb的服务?请问是这样吗?
张宴 回复于 2008-1-16 09:38
是的。所有memcached的客户端都可以访问memcachedb
sofire
2008-1-17 23:15
memcachedb 最大的应用是用来做点击数的存储。
pangfan Email Homepage
2008-1-18 00:28
谢谢大家对NCACHE的关心,在这里也非常感谢楼主的关注!
回复 outrace :NCACHE本身不支持FCGI,本来NGINX是支持的,不过我们只提取NGINX的核心模块,有很多功能都去掉了.varnish我们之前做过测试,效果并不好,尤其是跑了一段时间之后性能急剧下降,而且它是一种纯内存CACHE,相比来说NCACHE目前的版本还不具备内存CACHE功能,等NCACHE的内存CACHE功能出来后,我们会进行一个比较详细的生产环境测试和比较,谢谢

回复 乐百氏: 谢谢你提出了这个BUG,SIMON同学已经根据你的描述修改了这个SH文件,谢谢. 目前新的版本中NCACHE已经将MAX-AGE自动转为了分钟,最大支持65535分钟的缓存过期时间,超过的就全都按这个时间来计算, 8640000(100天不过期) 是不是大了点?不用这么设置吧?我们公司最大设置才30天左右,够用就好~.ncache 确实不支持RFC的很多描述,因为我们本来就是想让它成为一个完全定制的,精简的小系统,这也是我们为什么更快的原因之一,谢谢
乐百氏
2008-1-18 11:17
to:pangfan
谢谢,诚恳的答复
gyro
2008-1-21 14:30
sofire 2008-1-17 23:15
memcachedb 最大的应用是用来做点击数的存储。
================================
zanzan
其实是适合对于点状数据,无关联的数据存储,点击量只是其中一种,如果以这个来做文章的存储,然后用另外的关系数据库存储文章的关系,就挺合适的,只是不知道这样的性能会不会下降了
代码罐头
2008-1-24 14:21
为什么不将网站程序放在tmpfs下
然后用nginx直接做对外服务呢
varnish或者squid都是利用内存和它的连接数来做到加速服务.
但是如果是squid->nginx->fastcgi->mysql
这样当中很多连接是开销在内部的连接之中
而且如果客户端请求php.squid还需要将请求再转发至nginx,然后nginx再转发至fastcgi
对于动态内容的多加了一个步骤.
考虑到nginx有了不低于squid以及varnish的连接能力
那么可以将网站程序直接放在tmpfs中
这样如果是静态的.就会直接从内存读取后返回给用户(和其他缓冲服务器的效果一样)
如果是PHP就丢给后面的fastcgi处理
这样更快.

至于程序同步的问题.
在程序更新的时候使用svn或者rsync去同步tmpfs里面和文件服务器中的内容就可以了

至于服务器重启tmpfs清空的问题
只需要在服务器重启之前,需要将内存中的程序复制到本地硬盘
然后启动之后,将硬盘数据再复制到tmpfs中然后启动服务即可

至于服务器宕机以后无法事先保存tmpfs内容
既然服务器都挂了.在它启动之后用10分钟20分钟把程序全部重新同步过来也不是什么大的开销.
如果是多节点的负载均衡或者HA,那就更没必要担心tmpfs内容丢失的问题.

至于上传文件
如果你都用这么样的架构来加速了.
你的图片还会直接上传到web服务器么?
肯定是直接传到图片服务器了.
Chanix Homepage
2008-3-13 10:45
是否支持内存式缓存,我觉得不是太重要,可以通过 /dev/shm 这些内存文件系统来模拟,效率上的差别很小。

我觉得最重要的是利用 nginx 的功能,在硬盘上保存缓存数据,提供最大的并发请求和吞吐。squid 在缓存文件个数多了以后,效率下降的比较厉害。

纯内存的 cache 非常有用,但内存是有限的稀缺资源(别和我说现在内存便宜,我现在用的CACHE机都是16G插满的内存),可能对 web 页面等比较适合,但是对于图片等大字节的东西就不太适合了。我目前也只在静态专区上使用这种方式。图片?动不动就上几百G的量,不可能了。

而图片恰恰是同步最麻烦的,如果 ncache 能和 squid 一样,自动拉和保存大量的缓存文件,并提供优秀的吞吐量,我觉得就可以满足我对缓存的需要了。

varnish 我也测试过,感觉不太稳定,有跑着跑着就崩掉的现象,当时我测试时用的版本是 1.0.x 的,新版本的没测试过,不敢乱说,应该在稳定性上有提高。

术数有专攻,在 ncache 中集合太多的功能,感觉不好,还是做精来的合适。

另:为什么 ncache 不作为 nginx 的一个补丁来开发?这样可以集成到nginx里面,让用户在编译时选择?
影之迷惑
2008-3-30 00:26
安装最新的 1.0.3 错误信息:

[root@localhost memcachedb-1.0.3]# make
make  all-recursive
make[1]: Entering directory `/usr/local/src/bdb/memcachedb-1.0.3'
Making all in doc
make[2]: Entering directory `/usr/local/src/bdb/memcachedb-1.0.3/doc'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/src/bdb/memcachedb-1.0.3/doc'
Making all in tools
make[2]: Entering directory `/usr/local/src/bdb/memcachedb-1.0.3/tools'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/usr/local/src/bdb/memcachedb-1.0.3/tools'
make[2]: Entering directory `/usr/local/src/bdb/memcachedb-1.0.3'
gcc -DHAVE_CONFIG_H -I.   -I/usr/local/BerkeleyDB.4.6/include   -g -O2 -MT memcachedb.o -MD -MP -MF .deps/memcachedb.Tpo -c -o memcachedb.o memcachedb.c
memcachedb.c: 在函数 ‘do_store_item’ 中:
memcachedb.c:696: 错误:‘DB’ 没有名为 ‘exists’ 的成员
memcachedb.c: 在函数 ‘process_stat’ 中:
memcachedb.c:885: 错误:‘DB_REPMGR_SITE’ 未声明 (在此函数内第一次使用)
memcachedb.c:885: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
memcachedb.c:885: 错误:所在的函数内只报告一次。)
memcachedb.c:885: 错误:‘list’ 未声明 (在此函数内第一次使用)
memcachedb.c:895: 错误:‘DB_ENV’ 没有名为 ‘repmgr_site_list’ 的成员
memcachedb.c:921: 错误:‘DB_ENV’ 没有名为 ‘rep_get_priority’ 的成员
memcachedb.c:924: 错误:‘DB_ENV’ 没有名为 ‘repmgr_get_ack_policy’ 的成员
memcachedb.c:927: 错误:‘DB_ENV’ 没有名为 ‘rep_get_timeout’ 的成员
memcachedb.c:927: 错误:‘DB_REP_ACK_TIMEOUT’ 未声明 (在此函数内第一次使用)
memcachedb.c:930: 错误:‘DB_ENV’ 没有名为 ‘rep_get_config’ 的成员
memcachedb.c:930: 错误:‘DB_REP_CONF_BULK’ 未声明 (在此函数内第一次使用)
memcachedb.c: 在函数 ‘process_rep_command’ 中:
memcachedb.c:1377: 错误:‘DB_REPMGR_SITE’ 未声明 (在此函数内第一次使用)
memcachedb.c:1377: 错误:‘list’ 未声明 (在此函数内第一次使用)
memcachedb.c:1394: 错误:‘DB_ENV’ 没有名为 ‘repmgr_site_list’ 的成员
memcachedb.c:1417: 错误:‘DB_ENV’ 没有名为 ‘rep_set_priority’ 的成员
memcachedb.c:1433: 错误:‘DB_ENV’ 没有名为 ‘repmgr_set_ack_policy’ 的成员
memcachedb.c:1449: 错误:‘DB_ENV’ 没有名为 ‘rep_set_timeout’ 的成员
memcachedb.c:1449: 错误:‘DB_REP_ACK_TIMEOUT’ 未声明 (在此函数内第一次使用)
memcachedb.c:1464: 错误:‘DB_ENV’ 没有名为 ‘rep_set_config’ 的成员
memcachedb.c:1464: 错误:‘DB_REP_CONF_BULK’ 未声明 (在此函数内第一次使用)
make[2]: *** [memcachedb.o] 错误 1
make[2]: Leaving directory `/usr/local/src/bdb/memcachedb-1.0.3'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/usr/local/src/bdb/memcachedb-1.0.3'
make: *** [all] 错误 2
[root@localhost memcachedb-1.0.3]#


不知道怎么回事,请赐教。
shineyear Email Homepage
2008-4-22 18:23
to :Chanix

谢谢你的建议,目前我们也是这么做的,尤其在相册上做的测试,吞吐比SQUID大了很多,内存缓存已经开发完了,但效果并不明显,作为一个编译选项进行了提供,至于整个NCACHE为什么没座位NGINX的MODULE提供,主要是由于NGINX的MODULE开发结构本身并不适合开发CACHE 尤其是PROXY CACHE,所以改了很多源代码,今后可能会考虑给每个NGINX打PATCH
freeke Email Homepage
2008-6-5 15:34
张兄


再次请教一个问题,这个memcachedb是否也可以使用cacti 监控呢(跟cacti的模块memcache 同样的)
张宴 回复于 2008-6-28 02:20
可以
大侠 Email Homepage
2008-6-27 15:27
请问memcachedb的flush_all 我这边为什么会失效呢?
codeant
2008-7-16 16:56
memcachedb不支持cas方式的get和set吧?
coolsun
2008-8-18 10:30
你好!
我想问一下memcachedb不支持expire吗?
我测试了一下,好像不支持啊,能回复一下吗,因为我们正在准备用这个memcachedb,谢谢!
张宴 回复于 2008-8-18 13:40
Memcachedb所有的数据都是永久存储,除非删除某条记录,expire过期对Memcachedb来说是无效的。
分页: 1/3 第一页 1 2 3 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]