4.3 Kafka 消费者 API
关于消费者 API 有两种:
高级 API
低级 API
1. 高级 API 的特点
高级 API 消费者的封装更加彻底, 所以使用起来比较简单.
高级 API 优点
高级 API 写起来简单.
不需要自行去管理 offset,系统通过 Zookeeper 自行管理。
不需要管理分区,副本等情况,系统自动管理。
消费者断线会自动根据上一次记录在 zookeeper 中的 offset 去接着获取数据(默认设置 1 分钟更新一下 Zookeeper 中存的 offset)
可以使用 group 来区分对同一个 topic 的不同程序访问分离开来(不同的 group 记录不同的 offset,这样不同程序读取同一个 topic 才不会因为 offset 互相影响)
高级 API 缺点
不能自行控制 offset(对于某些特殊需求来说)
不能细化控制如分区、副本、zk 等
2. 低级 API 的特点
低级 API 更加接近于 Kafka 的底层, 所以写起来自由度更高, 但是写起来比较麻烦.
低级 API 的优点
能够让开发者自己控制 offset,想从哪里读取就从哪里读取。
自行控制连接分区,对分区自定义进行负载均衡
对 zookeeper 的依赖性降低(如:offset 不一定非要靠 Zookeeper 存储,自行存储 offset 即可,比如存在文件或者内存中)
低级 API 的缺点
太过复杂,需要自行控制 offset,连接哪个分区,找到分区 leader 等。