Kafka副本和broker的关系

1. 关系

主题(Topic)可以分为多个分区(Partition),每个分区有多个副本(Replica),其中一个为Leader副本,其余为Follower副本。在Kafka集群中,每个Broker可以同时作为生产者和消费者。当生产者向某个主题的分区发送消息时,消息首先写入Leader副本,然后同步到Follower副本。这样,如果Leader副本宕机,Follower副本会自动接替,确保集群持续可用。
Broker是Kafka集群中的服务器,负责存储和管理消息,处理消费者请求,并管理主题、分区和消费者组等信息,是Kafka架构的关键角色。

2. 举个例子

使用命令创建主题:
	kafka-topics.sh --create --topic ods_mall_log --partitions 4 --replication-factor 2 --bootstrap-server bigdata1:9092
  • --topic ods_mall_log:主题名称为ods_mall_log。
  • --partitions 4:分区数为4。
  • --replication-factor 2:副本数为2(1个主副本(Leader)和1个备份副本(Follower))。
  • --bootstrap-server bigdata1:9092:指定Kafka集群的Broker地址和端口号
为了确保数据冗余,至少需要3个Broker。若主副本和备份副本在同一Broker上,Broker损坏会导致数据丢失。建议分配副本时,确保主副本和备份副本分布在不同的Broker上,以提高可用性和容错性。

这将创建一个名为ods_mall_log的Topic,其中包含4个分区和2个副本,那么至少需要在3个broker里开启kafka服务

3.解释原因

那么为什么至少需要3个副本呢???

如果副本只有两个,即一个主副本和一个备份副本,且它们在同一个Broker上,当该Broker损坏时,包含这些副本的分区会出现故障,导致数据丢失。
有人可能会建议如下分配:
  • 第一个分区的主副本在Broker1,备份副本在Broker2;
  • 第二个分区的主副本在Broker1,备份副本在Broker2;
  • 第三个分区的主副本在Broker1,备份副本在Broker2;
  • 第四个分区的主副本在Broker1,备份副本在Broker2。
但这样仍然存在问题:如果Broker1损坏,Broker2上的备份副本变为主副本,Kafka会在Broker2上重新建立备份副本。此时,Broker2同时存在一个主副本和一个备份副本,无法实现数据冗余和故障转移,导致可用性和容错性降低。而我们使用Kafka的目的是提高工作效率,所以就需要考虑到borker出现故障的情况。

4. 总结

  1. 建议使用3、5、7等奇数个Broker。
  2. 创建Topic时,副本数需大于或等于可用Broker数量,以避免数据丢失或不可用。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值