kafka key的作用_Kafka消息从发送到消费---发送篇

Kafka作为一个常用消息中间件,他具备很多优秀的特点,在此,文章从消息的发送到kafka存储,然后到消费方进行消费,进行一个流程性的介绍,希望能够对kafka有个基本的了解

首先,我们如何向kafka发送消息的呢?

其中 客户端的代码连接到kafka集群地址,设置所有的消息都需要ack返回,重试次数为0等信息。生成消息生产者producer,producer连接到Kafka集群,根据消息进行分区计算,将消息发送leader分区的broker。

那么如何进行分区确定?

如何寻找到leader分区,如何感知leader分区的变化?

如何确保消息发送的可靠性?

消息分区的确定:

其中ProducerRecord,就提供了参数,让生产者对消息指定分区

<1> 若指定Partition ID,则ProducerRecord被发送至指定Partition

<2> 若未指定Partition ID,但指定了Key, ProducerRecord会按照hasy(key)发送至对应Partition

<3> 若既未指定Partition ID也没指定Key,ProducerRecord会按照round-robin模式发送到每个Partition

<4> 若同时指定了Partition ID和Key, ProducerRecord只会发送到指定的Partition (Key不起作用,代码逻辑决定)

寻找分区leader

当生产者发送消息失败(分区消失,不可用),生产者会更新topic分区元信息,

正常情况下,每隔topic.metadata.refresh.interval.ms(缺省10分钟)去轮询分区变化。在生产者的代码中

消息发送的可靠性

props.put(“acks”,”all”) ,这个acks作为消息发送的可靠性重要的参数,

acks=0 生产者不会等待broker的任何确认,消息会被立即添加到缓冲区并被认为已经发送

acks=1,在leader服务器的副本收到消息的同一时间,生产者会接收到broker的确认

acks=all(或-1),一旦所有的同步副本接收到消息,生产者才会接收到broker的确认。这是最安全的模式。

以上是kafka发送消息流程的一些思考和总结

Kafka作为一个常用消息中间件,他具备很多优秀的特点,在此,文章从消息的发送到kafka存储,然后到消费方进行消费,进行一个流程性的介绍,希望能够对kafka有个基本的了解 首先,我们如何向kafka发送消息的呢? 其中 客户端的代码连接到kafka集群地址,设置所有的消息都需要ack返回,重试次数为0等信息。生成消息生产者producer,producer连接到Kafka集群,根据消息进行分区计算,将消息发送leader分区的broker。 那么如何进行分区确定? 如何寻找到leader分区,如何感知leader分区的变化? 如何确保消息发送的可靠性? 消息分区的确定: 其中ProducerRecord,就提供了参数,让生产者对消息指定分区 <1> 若指定Partition ID,则ProducerRecord被发送至指定Partition <2> 若未指定Partition ID,但指定了Key, ProducerRecord会按照hasy(key)发送至对应Partition <3> 若既未指定Partition ID也没指定Key,ProducerRecord会按照round-robin模式发送到每个Partition <4> 若同时指定了Partition ID和Key, ProducerRecord只会发送到指定的Partition (Key不起作用,代码逻辑决定) 寻找分区leader 当生产者发送消息失败(分区消失,不可用),生产者会更新topic分区元信息, 正常情况下,每隔topic.metadata.refresh.interval.ms(缺省10分钟)去轮询分区变化。在生产者的代码中 消息发送的可靠性 props.put(“acks”,”all”) ,这个acks作为消息发送的可靠性重要的参数, acks=0 生产者不会等待broker的任何确认,消息会被立即添加到缓冲区并被认为已经发送 acks=1,在leader服务器的副本收到消息的同一时间,生产者会接收到broker的确认 acks=all(或-1),一旦所有的同步副本接收到消息,生产者才会接收到broker的确认。这是最安全的模式。 以上是kafka发送消息流程的一些思考和总结
经验分享 程序员 微信小程序 职场和发展