kafka关于顺序消费和分区的共存问题 + broker 被kill掉后,发送/消费异常?

√锋²º¹8ヾ/❤ 发表于: 2018-08-24   最后更新时间: 2018-08-24 14:30:55   3,834 游览

顺序消费和分区的共存问题:

假设有一个公共的参数设置系统,通过它进行参数配置,然后发送到kafka。各个子系统订阅相关的主题,获取最新的参数。

这种场景,顺序消费是确保参数正确性。所以我的理解是,只能将该主题设置一个分区,这样参数就全部写在这里了。正常来讲应该能最大限度的按修改的先后顺序被生产者发送到这里,然后消费者也能顺序的消费。这样才能保证最后一次的修改在子系统中体现出来。

如果有多个分区,能减缓发送的压力。但是一个消费者只能按分区消费,不能跨分区。如果修改记录被均匀的分散在各个分区,那么最终会导致消费者获取的消息并不一定是最新的。

broker 被kill掉后,发送/消费异常

我配置了 bootstrap.servers=192.168.100.238:9092,192.168.100.238:9093,192.168.100.238:9094

同样,在kafka服务器查看:

[root@localhost kafka_2.12-0.11.0.3-1]# bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181  --topic QQQQQQ_topic7
Topic:QQQQQQ_topic7     PartitionCount:1        ReplicationFactor:3     Configs:
    Topic: QQQQQQ_topic7    Partition: 0    Leader: 0       Replicas: 0,1,2 Isr: 2,0,1

然后我将 broker0的进程kill掉了。再看:

[root@localhost kafka_2.12-0.11.0.3-1]# bin/kafka-topics.sh --describe --zookeeper 127.0.0.1:2181  --topic QQQQQQ_topic7
Topic:QQQQQQ_topic7     PartitionCount:1        ReplicationFactor:3     Configs:
    Topic: QQQQQQ_topic7    Partition: 0    Leader: 1       Replicas: 0,1,2 Isr: 2,1

这个时候,Leader: 1 , Isr: 2,1

程序中配置的bootstrap.servers 没有变化。

此时出现的情况是:生产者能发送消息,但是间歇性出现

java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:712)
at org.apache.kafka.common.network.PlaintextTransportLayer.finishConnect(PlaintextTransportLayer.java:50)
at org.apache.kafka.common.network.KafkaChannel.finishConnect(KafkaChannel.java:95)
at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:370)
at org.apache.kafka.common.network.Selector.poll(Selector.java:334)
at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:433)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:224)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:162)
at java.lang.Thread.run(Thread.java:745)

而消费者就一直在刷刷。。。。并不能正常消费消息。

问题:Leader 不是已经重新选举了吗?是它内部又分配到了 broker0?

请指导。

发表于 2018-08-24

持续的吗,消费者?
我看你已经切换成功了。

你的客户端的版本和生产一一对应吗?

你的答案

查看kafka相关的其他问题或提一个您自己的问题