Kafka-Failover笔记

原文链接:

Kafka Tutorial: Kafka clusters, Kafka consumer failover, and Kafka broker failover (cloudurable.com)

本文主要介绍Kafka集群的容错机制。

在上文中我们在本地windows系统中配置好了Kafka,这里我们开始起一个Kafka集群,然后往集群里发信息,检查消息是否能正确收到。

好了,废话不多说,我们开始。

首先,要起一个Kafka集群。

我们先在上次建好的data目录下面新建三个目录,分别是kafka-0、kafka-1、kafka-2,作为三个集群的日志目录。
 


然后创建3个Kafka 的server.properties 配置文件。
我们在kafka根目录下创建一个lab2/config目录,然后把文件从config下的server.properties 拷贝到/lab2/config下,


命名成server-0.properties,server-1.properties,server-2.properties

然后修改对应的properties文件:

主要修改一下broker.id,log.dirs和listeners 端口。这里listeners要把hostname 加上,我这里写了localhost。否则Kafka producer 启动的时候,会报一个NETWORK_EXCEPTION的错误。

 

 
接下来就可以启动了Kafka 集群了。
启动命令如下:
首先,我们还是启动Zookeeper

zookeeper-server-start.bat ../../config/zookeeper.properties


然后启动KafKa 1、2、3.

kafka-server-start.bat ../../lab2/config/server-0.properties

kafka-server-start.bat ../../lab2/config/server-1.properties

kafka-server-start.bat ../../lab2/config/server-2.properties


命令执行成功,说明三个Kafka broker 启动好了。中间如果出现一些错误,那么就可以把zookeeper也一并kill掉,然后再重新启动一下。

然后我们来create 一个my-failsafe-topic的topic:

kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 3 --partitions 13 --topic my-failsafe-topic


这样my-failsafe-topic就创建好了。

接下来我们起两个consumer:

kafka-console-consumer --bootstrap-server localhost:9094,localhost:9093,localhost:9092 --topic my-failsafe-topic --from-beginning

kafka-console-consumer --bootstrap-server localhost:9094,localhost:9093,localhost:9092 --topic my-failsafe-topic --from-beginning

然后起一个producer 往my-failsafe-topic 发送消息。

消息发送成功,接收也没有问题。

2022年8月2号更新,今天有一个大新闻。就是我们有可能收复台湾

接着我们可以再新启两个consumer,我们可以看到,我们的consumer还是把原来的数据都冲头到尾都消费了一遍。



这个是因为我们没有给这些consumer assign consumer group,他们分属于不同的consumer group,这样导致所有的consumer 都需要重新消费一遍。
 

接下来,我们来新建新的consumer。并且给它指定到同一个consumer group里去。
脚本稍做改动:

kafka-console-consumer --bootstrap-server localhost:9094,localhost:9093,localhost:9092 --topic my-failsafe-topic --consumer-property group.id=mygroup


同样的我们新起3 个consumer,然后往my-failsafe-topic 里发送消息m1到m15,这样我们看到,同一个消息,只会被消费一次。
consumer 1:消费了m2,m4,m8,m10,m14

Consumer 2:消费了m1,m5,m6,m7,m9,m11,m12,m13,m15

Consumer 3:消费了m3
 

 

接下来我们来看一下kafka consumer的容错机制
首先,我们先把consumer3 关闭。

然后我们再往my-failsafe-topic里发送消息:m16,m17,m18,m19,m20,m21.我们看到两个consumer 消费消息很平均。
consumer1 消费了m16,m18,m19

Consumer2消费了m17,m20,m21


接下来,我们把consumer2给关了。再往topic:my-failsafe-topic里发送消息,我们能看到:kafka consumer 的failover 机制生效了,producer 发送的消息都被consumer1消费到了。
生产者发了m22,m23,m24,m25。Consumer1也就消费了m22,m23,m24,m25.


如果大家还想看kafka的partition和ISR 信息的话,可以使用如下命令: 

kafka-topics.bat --describe --topic my-failsafe-topic --bootstrap-server localhost:2181

--以上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值