kafka的两种Consumer API
High Level Consumer API和Low Level Consumer API
High Level Consumer API
这个API的重点在于屏蔽
,围绕Consumer Group
这个概念展开,屏蔽了每个Topic的每个Partition的Offset管理(自动读取zookeeper中该Consumer group的last offset )、Broker失败转移以及增减Partition、Consumer时的负载均衡(当Partition和Consumer增减时,Kafka自动进行负载均衡)
- 特点
1.高级 API 写起来简单
2.不需要去自行去 管理offset,系统通过 zookeeper 自行管理
3.不需要管理分区,副本等情况,系统自动管理
4.消费者断线会自动根据上一次记录在 zookeeper 中的 offset去接着获取数据(默认设置1分钟更新一下 zookeeper 中存的的 offset)
5.可以使用 group 来区分对同一个 topic 的不同程序访问分离开来(不同的 group 记录不同的 offset,这样不同程序读取同一个 topic 才不会因为 offset 互相影响)
- 缺点
1.不能自行控制 offset(对于某些特殊需求来说)
2.不能细化控制如分区、副本、zk 等
Low Level Consumer API
- 特点
1.能够开发者自己控制 offset,想从哪里读取就从哪里读取。
2.自行控制连接分区,对分区自定义进行负载均衡
3.对 zookeeper 的依赖性降低(如:offset 不一定非要靠 zk 存储,自行存储 offset 即可,比如存在文件或者内存中)
- 缺点
1.太过复杂,需要自行控制 offset,连接哪个分区,找到分区 leader 等
kafka的两种Consumer API
原文:https://www.cnblogs.com/keke-coding/p/15352801.html