Kafka是邮件队列吗?Kafka可以用作数据库吗?

时间:2019-11-18 06:23:19

标签: apache-kafka

某些地方提到Kafka是发布-订阅消息传递。提到Kafka的其他来源是消息队列。我可以问一下两者之间的区别,并且可以将Kakfa用作数据库吗?

2 个答案:

答案 0 :(得分:2)

有两种模式,分别称为发布-订阅和消息队列。有一些地方讨论了差异。 here

Kafka特别支持这两种模式。对于发布-订阅模式,Kafka拥有支持该模式的发布者/订阅者。发布者将消息发送到一个主题,而订阅者可以订阅和接收关于那个主题的消息。对于排队模式,Kafka有一个名为Consumer Group的概念。在同一个消费者组中,所有消费者将共享工作,从而平衡了工作量。

由于从一开始就具有灵活的设计,因此在设计系统时,Kafka被广泛用于许多软件模式。 就个人而言,我不会将Kafka本身称为数据库,但是您可以使用Kafka作为存储,尤其是通过诸如log compaction之类的某些机制。 Ref1 Ref2

答案 1 :(得分:0)

Kafka是像数据库一样的基础存储,但是没有索引,每个查询都是对数据的完整扫描。 Kafka将数据存储在无法修改的文件中。例如,如果您使用事件源,则可以将系统的所有事件保存在Kafka中,并在系统出现错误时重新处理所有事件。

想象一下,Kafka可以在多台服务器上分割一个非常大的文件(10TB或更多),并提供一种使用分区以分布式方式读取该文件的方式(您拥有更多的分区,可以并行读取更多的应用程序)。

Kafka由于具有存储功能,因此还可以用作消息队列或发布-订阅系统。