用于消息传递的Cassandra

时间:2015-09-07 12:20:58

标签: cassandra messaging

我现在正在进行一项小型研究,以找到一种方法来存储大量数据(暂时,直到一些消费者使用这些消息)来自各种消息生产者。 (资源)。数据来自不同的来源,比如HTTP,FTP,SMPP或文件上传,每种类型可能有数十或数百个实例创建消息。它们产生的消息可能会变得如此巨大,以至于消息消费者在消费消息时可能会落后,因为这些消息可能需要很长或很短的时间。现在,系统在某些部分使用RabbitMQ,但是当大量未消耗的消息增长时,它的性能下降(我也在考虑改进其性能,但情况有所不同)。作为替代方案,我正在寻找使用磁盘来保存消息的Apache Kafka。

在我阅读互联网上的许多文章时,我阅读了一些文章,这些文章谈论Apache Cassandra,写入非常快,每秒处理一百万次插入和类似的卷读取。我很惊讶,并试图在我的案例中使用Cassandra找到一些线索,但没有明确的结果。

假设我有大量的消息生成器,Cassandra(集群)可以处理插入(批量)如此快(总体高吞吐量)生产者不会扼制吗?

我相信你们中的一些人可以使用Cassandra来处理这种或类似的用例,分享你的经验。 (如果这还不够,我准备为您提供更多信息)

1 个答案:

答案 0 :(得分:3)

是的! Cassandra可以非常有效地处理写入。但根据我的经验,将其用作消息传递系统(队列等)会因tombstones而带来一些技术限制。

Cassandra不会立即删除已删除的行,并使用tomstone将其标记为稍后收集的garbarge。加班,如果有很多删除(例如,出列消息),整体表现会受到伤害,而且很快。

你可以去Cassandra,但你必须为tomstone问题(时间段,多个状态表)实施解决方法。

恕我直言,Apache Kafka更适合于消息传递用例,也可以大规模扩展。