kafka基础四
消费者消费过程(二)
消费组状态机:消息的产生存储消费看似是杂乱无章的,但万物都会遵循一定的规则成长,任何事物的发展都是有迹可循的。
开始消费组初始状态为Stable,经过第一次Rebalance之后,正常的还没有向消费组注册过的消费者会执行状态为Stable,在经过第一次rebalance之后,每个消费者都分配到了一个成员编号,系统又进入Stable状态(Stable稳定状态分为两种:一是没有任何消费者时的状态;二是消费者稳定的状态)。
Kafka提供了两套API:高级API和低级API
高级API:提供了一个从Kafka消费数据的高层抽象,消费者客户端代码不需要管理offset的提交,并且采用了消费者组的自动负载均衡功能。消费者线程断线后自动根据上次记录在zookeeper的offset去接着获取数据(默认设置1分钟更新一次zookeeper中存的offset)。
高级API的缺点:不能自行控制offset;不能控制分区,副本,zk等
低级API:需要自己实现一些Kafka服务端相关的底层逻辑,比如选择Partition的Leader,拉取消息,处理Leader的故障转移等。
低级API的优点:可以自己控制offset;自己控制连接分区,并对分区进行负载均衡;对zk的依赖性降低;
低级API的缺点:实现过于复杂;