Sha*_*h W 5 replication memcached caching redis couchbase
我们正在部署一个高度动态的网站.在峰值容量时,每分钟处理和更新大约20,000个项目.每个项目的范围从1kb到500kb.每分钟都需要在缓存中检索,处理和更新这些项目.
我们预计在前两三个月内流量高达1000个用户.当每个用户登陆网站时,他们可以请求一些流行的内容,但其他人可能会请求不受欢迎的内容.所有内容都是持久性存储中的更高级别处理形式.因此,绝对有必要将所有处理过的物品放置在低延迟的商店中,以获得极好的用户体验,无论是受欢迎还是不受欢迎.
我们分别尝试了Memcache,Redis和Couchbase.
Memcache超级快,但我们遇到了某些问题,其中某些板块内存耗尽,活动项目开始被逐出.
Redis,比Memcache慢,如果你想在项目中持久化,那就太棒了.
然而很快我们意识到我们想要分片和复制.
Couchbase提供了开箱即用的功能.与Couchbase服务器连接的Moxi客户端有自己的问题,即无法处理繁重的并发进程.它将开始缺少集合,并且时不时地获取.移动到与其连接的Python SDK.如果群集中的一个节点发生故障,它的性能很差,根本无法发现新的拓扑.在几个宝贵时间内,在网站上丢失一些数据并在网站上不活动.
在这一点上,我们意识到没有完美的产品可以满足我们的需求.您必须了解所有技术和您自己的需求.您必须预见您的数据将如何发展并相应地做好准备.最好的解决方案可能是技术的混合体.然而,把它放在希望可能还有其他东西.我们即将迎来2012年底.通过强大的硬件支持开箱即用的解决方案,提供我们所需的功能有多难.
任何想法和链接到有见地的文章将不胜感激.谢谢!
以下是您在上面提到的一些技术的一些注意事项.
Memcached只是一个缓存系统,不会为您提供任何数据持久性.如果您选择使用memcached,则需要选择其他类型的持久性存储来保存所有数据.Memcached也是一个非常简单的缓存系统,并没有为您提供复制,但它们是不同的项目(如repcache),它们为memcached添加了这样的功能.如果我想使用关系数据库作为我的持久层,我只会使用memcached.
Redis是一个数据结构服务器,只能用于此目的.Redis的缺点是你只能在一台服务器上运行它,如果你想拥有Redis的多个服务器,那么你需要进行应用程序分片.我见过的Redis大部分部署都是另一种数据库技术.
Couchbase 2.0将把产品变成文档数据库.该产品内置了memcached技术,因此您可以开箱即用memcached,这意味着亚毫秒的延迟.除此之外,您还可以获得复制,跨数据中心复制和查询支持.另请注意,大多数Couchbase SDK不使用moxi,并且Python SDK仍处于测试阶段.
您可能有用的一件事是查看YCSB基准测试项目以及已发布的一些结果.该项目将使您能够很好地了解这些数据库和其他数据库在负载下的性能.然后,一旦你找到了一些你喜欢的东西,你就可以查看它们的功能列表,并找出产品具有最适合你开发的应用程序的功能.
另外,如果我的任何有关上述数据库的信息不正确,请告诉我.这些项目正在快速发展,有时很难跟上.
编辑:我还应该提到Couchbase是列出的唯一提供复制,分片和低延迟的数据库.我想redis将允许你有一个副本服务器,因此复制,但你要做的任何分片必须在应用程序层完成.