Elasticsearch vs Kafka:将生产者的智慧

Nic*_*son 3 distributed-system elasticsearch apache-kafka

Elasticsearch和Kafka是分布式系统的两个示例,但是它们都采用不同的方法来提高数据生产者的智能-在ES数据生产者中,没有关于数据存储位置的发言权。他们只是要求集群存储数据。在Kafka中,生产者知道群集的内部状态(它知道主题的分区位于哪个节点上),并能够告诉群集将数据存储在特定分区上。

显然,Kafka和ES是为不同的用例而构建的,但是我正在努力将这些用例与该设计决策联系起来-为什么Kafka允许生产者确定存储数据的位置,但ES却不这样做?

Val*_*Val 5

他们只是要求集群存储数据

这不是真的。在ES中,您可以利用routing它来决定文档将以哪个分片结尾。与决定将消息存储在哪个Kafka主题分区上的概念几乎相同。

Kafka和ES显然是为不同的用例而构建的。前者是分布式提交日志,后者是搜索和分析引擎。不同的产品,不同的用例。

即使它们有所不同,它们是互补的,并且可以通过Logstash一起“很好地”工作,Kafka可以在其中充当Elasticsearch的输入缓冲区