在我在MySQL数据库和应用程序之间有缓存的架构中。我遇到了数据一致性的问题,因为我的缓存时间超过20分钟,因为它是一个非常高的负载服务器。
我的问题是如果我使用noSql数据库,是否还需要一个缓存服务器?这个想法是应用层和数据库层之间的内存缓存。
考虑替代我当前的架构。
答案 0 :(得分:6)
Memcached现在对Cassandra的重要性不如几年前的情况。 Cassandra读取延迟已经有了很大改进,SSD也有所帮助。它主要取决于您的延迟需求。这是Netflix关于如何从示例群集中删除缓存层并在AWS中获得与基于SSD的节点相同的性能的有趣链接:Netflix TechBlog
简短版本是通过切换到基于SSD的EC2节点,他们能够将80个节点的Cassandra +缓存集群降至15个节点。
我将从基于SSD的Cassandra集群开始,如果需要极低延迟读取,则添加缓存层。
答案 1 :(得分:0)
我们使用Cassandra进行繁重的读/写加载而根本没有缓存。人们通常无法想到使用关系数据库。好吧,即使Solr generatePDF(){
console.log("outside: this.problem.length = " + this.problems.length);
html2canvas(document.getElementById('graph')).then((canvas) => {
console.log("inside: this.problem.length = " + this.problems.length);
// ...
});
// ...
}
处理程序或ElasticSearch的检索文档也不需要中间的任何东西。当然这取决于你的负载,但一般情况下,缓存是适应关系后端的要求,而不是没有SQL的情况。
答案 2 :(得分:-1)
如果您指的是数据库层中的一致性,Cassandra将不会为您提供所需的一致性,因为它仅提供eventual consistency。 Cassandra将为您提供快速写入,但无法保证数据在整个群集中的一致性。是的,如果您设置了ALL
一致性标志,它可以保证写入另一个节点的提交日志。但这只意味着数据被安全复制,因为数据将最终写入数据库。
@stinkymatt是对的,你甚至可以添加SSD,如果钱不是加速在整个群集中持久保存数据的过程的选项。