kafka的延迟操作-pull操作详解

kafka的延迟操作和正常我们服务端处理事件的方式不一样,我们服务器正常情况下处理数据都是尽可能快的返回当前的结果,但是kafka的延迟操作不一样:
比如生产者发送ack=-1的数据到服务端leader分区所在的主broker上,此时主broker在把消息写入本地文件后要进行等待,此时会创建一个延迟操作,等到其他副本broker同步了该消息并写入对应的日志文件后才会提前触发这个延迟操作的执行,否则需要等待超时时间到了之后再执行.
由此延伸出kafka消息拉消费模式的理解:其实拉的时效性和主动推送是差不多的,原因在于消费端在pull拉取消息的时候,如果当时还没有消息,那么kafka服务端会创建一个拉取的延迟操作,等到有消息写入broker端的时候消息数量满足时,kafka就会把数据返回给消费者,所以这里其实几乎和推送消息是一样的时效性.所以如果消费端是专门用一条线程来pull消息的话,实时性和服务端的主动推送几乎是一样的.

你可能感兴趣的:(kafka,kafka)