我们正在部署一个高度动态的网站。峰值容量每分钟处理和更新大约 20,000 个项目。每个项目的大小范围从 1kb 到 500kb。这些项目需要每分钟在缓存中检索、处理和更新。
我们预计前两三个月的用户流量将达到 1000 人。当每个用户登陆网站时,他们可能会请求一些受欢迎的内容,但其他人可能会请求不受欢迎的内容。所有内容都是持久存储中内容的更高级别的处理形式。因此,绝对有必要将所有已处理的项目放在低延迟存储中,以获得出色的用户体验,无论是受欢迎的还是不受欢迎的。
我们分别尝试过 Memcache、Redis 和 Couchbase。
Memcache 速度非常快,但我们遇到了某些板块内存不足和活动项目开始被驱逐的问题。
Redis,比 Memcache 相对慢,如果你想要项目的持久性,那就太好了。
然而很快我们就意识到我们需要分片和复制。
Couchbase 提供了开箱即用的功能。与 Couchbase 服务器接口的 Moxi 客户端有其自身的问题,即无法处理繁重的并发进程。它会开始丢失集合并时不时地获取。移至与之交互的 Python SDK。当集群中的一个节点出现故障时,它的性能很差,它根本无法发现新的拓扑。最终在缓存中丢失了一些数据,并且在网站上闲置了几个小时。
当我们意识到没有完美的产品可以满足我们的需求时。您必须了解所有技术和您自己的需求。您必须预见您的数据将如何演变并做好相应的准备。最好的解决方案可能是多种技术的混合。然而,把它说出来是希望那里可能有其他东西。我们正在接近 2012 年底。对于一个由强大硬件支持的开箱即用解决方案来提供我们需要的东西有多难。
任何想法和有见地的文章的链接将不胜感激。谢谢!