【Kafka九】Kafka High Level API vs. Low Level API
编程技术  /  houtizong 发布于 3年前   107
在选用哪种Consumer API时,首先要弄清楚这两种API的工作原理,能做什么不能做什么,能做的话怎么做的以及用的时候,有哪些可能的问题
High Level Consumer API围绕着Consumer Group这个逻辑概念展开,它屏蔽了每个Topic的每个Partition的Offset管理(自动读取zookeeper中该Consumer group的last offset )、Broker失败转移以及增减Partition、Consumer时的负载均衡(当Partition和Consumer增减时,Kafka自动进行负载均衡)
对于多个Partition,多个Consumer
关于Offset初始值的问题:
先produce一些数据,然后再用consumer读的话,需要加上一句offset读取设置
props.put("auto.offset.reset", "smallest"); //必须要加,如果要读旧数据
因为初始的offset默认是非法的,然后这个设置的意思 是,当offset非法时,如何修正offset,默认是largest,即最新,所以不加这个配置,你是读不到你之前produce的数据的,而且这个 时候你再加上smallest配置也没用了,因为此时offset是合法的,不会再被修正了,需要手工或用工具改重置offset
Low Level Consumer API,作为底层的Consumer API,提供了消费Kafka Message更大的控制,如:
软件没有银弹,Low Level Consumer API提供更大灵活控制是以复杂性为代价的:
Offset不再透明
Broker自动失败转移需要处理
增加Consumer、Partition、Broker需要自己做负载均衡
注意的是,使用Low Level Consumer API,没有对Broker、Consumer、Partition增减进行处理,如果出现这些的增减时,如何做负载均衡?
参考:
https://cwiki.apache.org/confluence/display/KAFKA/Consumer+Group+Example
https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+SimpleConsumer+Example
http://www.cnblogs.com/fxjwind/p/3794255.html
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接