kafka集群中主题的分区和副本之间有什么区别

时间:2014-11-26 13:51:12

标签: hadoop apache-kafka

kafka群集中主题的分区和副本之间有什么区别。 我的意思是将消息的副本存储在主题中。那真正的差异是什么?

6 个答案:

答案 0 :(得分:9)

将消息添加到主题时,可以调用生产者API的send(KeyedMessage message)方法。这意味着您的邮件包含密钥和值。创建主题时,指定希望它具有的分区数。当你拨打"发送"对于此主题的方法,数据将根据您的密钥的哈希值仅发送到一个特定分区(默认情况下)。每个分区可能都有一个副本,这意味着两个分区及其副本存储相同的数据。限制是您的生产者和消费者都只使用主副本,并且其副本仅用于冗余。

请参阅文档:http://kafka.apache.org/documentation.html#producerapi 并进行基本培训:http://www.slideshare.net/miguno/apache-kafka-08-basic-training-verisign

答案 1 :(得分:7)

主题在多个节点之间进行分区,因此主题可以超出节点的限制。复制分区以实现容错。复制和领导者接管是Kafka和其他经纪人/ Flume之间最大的区别之一。来自Apache Kafka site

  

每个分区都有一个服务器充当“领导者”,零或   更多服务器充当“粉丝”。领导者处理所有阅读和   被动地跟随者写入分区请求   复制领导者。如果领导者失败,其中一个粉丝将会   自动成为新的领导者。每个服务器充当领导者   它的一些分区和其他人的追随者因此负载很好   在集群内平衡。

答案 2 :(得分:0)

Kafka主题分为多个分区。写入特定主题的任何记录都将进入特定分区。每个记录都由唯一的偏移量分配和标识。复制是在分区级别实现的。主题分区的冗余单元称为副本。决定消息分区的逻辑是可配置的。分区通过拆分分布在多个代理中的不同分区,有助于并行读取/写入数据。每个副本都有一个服务器充当领导者,其他服务器充当跟随者。当跟随者复制数据时,领导者处理读/写。如果领导者失败,则任何一名跟随者都将当选为领导者。

希望这可以解释!

Further Reading

答案 3 :(得分:0)

  • 分区:每个主题都可以划分为多个分区,以实现负载平衡(您可以同时写入不同的分区)和可伸缩性(该主题可以扩展而不受实例限制);在同一分区内对记录进行排序;

  • 副本:主要用于容错耐久性;

Quotes

  

日志的分区分布在Kafka集群中的服务器上,每个服务器处理数据并请求共享分区。每个分区都跨可配置数量的服务器复制,以实现容错功能。

有一个非常直观的教程来解释Kafka中的一些基本概念:https://www.tutorialspoint.com/apache_kafka/apache_kafka_fundamentals.htm

此外,还有一个工作流程可帮助您度过混乱的时光:https://www.tutorialspoint.com/apache_kafka/apache_kafka_workflow.htm

答案 4 :(得分:0)

分区

一个主题由一堆桶组成。每个这样的存储桶都称为一个分区。

当您要发布项目时,Kafka会获取其哈希值,并将其添加到适当的存储桶中。

enter image description here

复制因子

这是您要在网络上复制的主题数据的副本数。

答案 5 :(得分:0)

简单来说,分区是为了可扩展性,复制是为了可用性。