kafka群集中主题的分区和副本之间有什么区别。 我的意思是将消息的副本存储在主题中。那真正的差异是什么?
答案 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主题分为多个分区。写入特定主题的任何记录都将进入特定分区。每个记录都由唯一的偏移量分配和标识。复制是在分区级别实现的。主题分区的冗余单元称为副本。决定消息分区的逻辑是可配置的。分区通过拆分分布在多个代理中的不同分区,有助于并行读取/写入数据。每个副本都有一个服务器充当领导者,其他服务器充当跟随者。当跟随者复制数据时,领导者处理读/写。如果领导者失败,则任何一名跟随者都将当选为领导者。
希望这可以解释!
答案 3 :(得分:0)
分区:每个主题都可以划分为多个分区,以实现负载平衡(您可以同时写入不同的分区)和可伸缩性(该主题可以扩展而不受实例限制);在同一分区内对记录进行排序;
副本:主要用于容错耐久性;
日志的分区分布在Kafka集群中的服务器上,每个服务器处理数据并请求共享分区。每个分区都跨可配置数量的服务器复制,以实现容错功能。
有一个非常直观的教程来解释Kafka中的一些基本概念:https://www.tutorialspoint.com/apache_kafka/apache_kafka_fundamentals.htm
此外,还有一个工作流程可帮助您度过混乱的时光:https://www.tutorialspoint.com/apache_kafka/apache_kafka_workflow.htm
答案 4 :(得分:0)
答案 5 :(得分:0)
简单来说,分区是为了可扩展性,复制是为了可用性。