首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cassandra集群可以替代内存中的Redis键值存储吗?

Cassandra集群可以替代内存中的Redis键值存储吗?
EN

Stack Overflow用户
提问于 2016-04-19 16:56:58
回答 1查看 484关注 0票数 1

我的应用程序抓取用户的邮箱并将其保存到RDBMS数据库中。我开始使用Redis作为RDBMS数据库的缓存(简单的键值存储)。但渐渐地,我开始在Redis中存储爬虫状态和其他需要持久化的数据。丢失这些数据意味着几个小时的停机时间。我必须确保这些数据无懈可击的一致性。数据不应该在节点故障或大脑分裂的情况下丢失。强大的一致性是必须的。分片是由我的应用程序完成的。一个Redis进程分别在10个EC2 m4.large实例上运行。这些实例中的每一个。我为Redis提供了高达20K的IOPS。我正在进行的写操作多于读操作,尽管我还没有确定两者的实际百分比。我所有的数据都完全在内存中,而不是由磁盘备份。

我唯一的问题是这些实例都是SPOF。我不能使用Redis集群,因为它不保证一致性。我已经评估了更多的工具,如Aerospike,没有一个给出了“无数据丢失保证”。

Cassandra看起来很有前途,因为我可以调整我想要的一致性级别。我计划使用复制因子为2的Cassandra,在考虑已提交之前,必须将写入写入两个副本。这提供了“无数据丢失”的保证。

通过启动足够的cassandra节点(ssd支持),我是否可以替换我的Redis键值存储,并且仍然获得类似的读/写IOPS和延迟?开源的cassandra能满足我的用例吗?如果没有,Datastax企业内存版本会解决这个问题吗?

编辑1:

需要澄清的是:

我认为我需要使用写一致性级别'ALL‘和读一致性级别'One’。我知道,有了这个一致性级别,我的集群将不能容忍任何故障。这对我来说没问题。偶尔几分钟的停机时间并不是问题,只要我的数据是一致的。在我目前的设置中,一个Redis实例故障会导致几个小时的停机。

EN

回答 1

Stack Overflow用户

发布于 2016-04-20 14:53:13

我必须确保这些数据的一致性无懈可击。

当有更多的节点时,Cassandra可以更好地处理故障。假设您的情况允许有更多的节点,这是我的建议。

因此,如果您有5个节点,请使用QUORUM的CL进行读取和写入。这意味着您总是至少写入3个节点,并从3个节点读取。(对于5个节点,QUORUM为3)。

  • 这可确保非常高的consistency
  • Also,从而确保有限的停机时间。即使一个节点关闭,您的写入和读取也不会中断。

如果您使用CL ALL,那么即使一个节点停机或过载,您也必须进行完整的停机。

我希望它能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36713452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档