记一次kafka的high level和low level

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

 

你可能感兴趣的:(kafka)