我们正在部署一个高度动态的网站.在峰值容量时,每分钟处理和更新大约20,000个项目.每个项目的范围从1kb到500kb.每分钟都需要在缓存中检索,处理和更新这些项目.
我们预计在前两三个月内流量高达1000个用户.当每个用户登陆网站时,他们可以请求一些流行的内容,但其他人可能会请求不受欢迎的内容.所有内容都是持久性存储中的更高级别处理形式.因此,绝对有必要将所有处理过的物品放置在低延迟的商店中,以获得极好的用户体验,无论是受欢迎还是不受欢迎.
我们分别尝试了Memcache,Redis和Couchbase.
Memcache超级快,但我们遇到了某些问题,其中某些板块内存耗尽,活动项目开始被逐出.
Redis,比Memcache慢,如果你想在项目中持久化,那就太棒了.
然而很快我们意识到我们想要分片和复制.
Couchbase提供了开箱即用的功能.与Couchbase服务器连接的Moxi客户端有自己的问题,即无法处理繁重的并发进程.它将开始缺少集合,并且时不时地获取.移动到与其连接的Python SDK.如果群集中的一个节点发生故障,它的性能很差,根本无法发现新的拓扑.在几个宝贵时间内,在网站上丢失一些数据并在网站上不活动.
在这一点上,我们意识到没有完美的产品可以满足我们的需求.您必须了解所有技术和您自己的需求.您必须预见您的数据将如何发展并相应地做好准备.最好的解决方案可能是技术的混合体.然而,把它放在希望可能还有其他东西.我们即将迎来2012年底.通过强大的硬件支持开箱即用的解决方案,提供我们所需的功能有多难.
任何想法和链接到有见地的文章将不胜感激.谢谢!
我正在使用gcc 3.4.6编译Sundance-4.37.SUNDANCE(判断提取和概念提取的句子)和自动注释是由犹他大学的NLP实验室开发的软件.Sundance预装了OpinionFinder.
它是使用安装脚本编译的.在编译期间,抛出以下错误:
creating ../src/Makefile
g++ -Wall -Wno-deprecated -pipe -g -static -I../include -DHOME=\"/home/shahw/opinionfinder/software/sundance-4.37/\" -c -fPIC -o shared/activation.o activation.C
constituent.h:131: error: extra qualification ‘Constituent::’ on member ‘getWordhelper’
make: *** [shared/activation.o] Error 1
Run Code Online (Sandbox Code Playgroud)
composition.h的第130-132行是:
protected:
Word* Constituent::getWordhelper(unsigned int&, unsigned int) const;
};
Run Code Online (Sandbox Code Playgroud)
任何提示将不胜感激.
我正在使用Python Queue cclass来管理多个工作线程之间共享的任务列表.实际的代码是很棒的,我仍然在使它完全没有bug.工作线程会不时崩溃,我必须重新启动整个例程.在此过程中,我将丢失已排队的所有任务.有没有办法将队列保存到文件中,这样每当我重新启动进程时,任务列表都会从该文件中预先加载?
首先想到的是,当我将任务放入队列时,我应该同时读取和写入文件.但是,这并没有给我queue.task_done()的功能,可能不是最优化的解决方案.任何想法将不胜感激.