記一次kafka的high level和low level

地球沒有花發表於2018-10-10

php  rdkafka

之前的業務用的rdkafka的low level進行訊息消費,沒什麼問題

今天一個新業務,申請的新的broker和topic,結果low level就消費不到資料了

後來改成了high level(https://arnaud-lb.github.io/php-rdkafka/phpdoc/rdkafka.examples-high-level-consumer.html)可以消費到了,問題是解決了,但新的疑問又來了:high level 和 low level 有啥區別。

看了看,大致瞭解了一下。以前以為 high level 比 low level 有 "higher" 、"deeper" 的用法,通過查閱,發現理解反了,他這high和low就像語言一樣,php是高階語言,彙編是低階語言,是這麼個high和low,越low越高效,但要求也越高。

總的區別就是,high level 和 low level 的區別就是 high level遮蔽了一些細節,比如往哪個partition發,offset咋存往哪兒存,說白了只把kafka作為純fifo使用,low level的話,自己可以自定義往哪個partition上發訊息,包括存offset的處理都可以自己搞,去自定義。

我當時讀不到,只是說明“驢脣對不上馬嘴”,訊息的生產者把訊息發到了哪個partition我不知道,但我用low level消費的時候指定了partition(這也說明對這個擴充套件的瞭解還是不夠),只消費這個partition的訊息,當然不一定有了。改成high level後就變了,我不管你哪個partition有新鮮的訊息,我都要消費。

 

參考:http://www.infoq.com/cn/articles/kafka-analysis-part-4

 

相關文章