Elasticsearch和Kafka是分布式系统的两个例子,但它们对数据生产者的智能都采取了不同的方法--在ES中,数据生产者对数据的存储位置没有发言权。他们只是要求集群存储数据。在Kafka中,生产者知道集群的内部状态(它知道主题的分区在哪个节点上),并且能够告诉集群将数据存储在特定的分区上。
很明显,Kafka和ES是为不同的用例构建的,但我很难将这些用例与这个设计决策联系起来--为什么Kafka允许生产者决定在哪里存储数据,而ES却没有?
发布于 2017-08-20 05:55:05
他们只是要求集群存储数据。
那是胡说。在ES中,您可以利用routing
来决定您的文档将在哪个碎片中结束。与决定您的消息将存储在哪个Kafka主题分区上几乎是相同的概念。
Kafka和ES显然是为不同的用例构建的。前者是分布式提交日志,后者是搜索和分析引擎。不同的产品不同的用例。
尽管它们是不同的,但它们是互补的,并且可以很好地“一起”工作,在通过Logstash中,卡夫卡可以扮演一个输入缓冲区的角色。
https://stackoverflow.com/questions/45776303
复制相似问题