Kafka consumer API简介

Kafka consumer API简介

接口

org.apache.kafka.clients.consumer
Class KafkaConsumer<K,V>

java.lang.Object
org.apache.kafka.clients.consumer.KafkaConsumer<K,V>
All Implemented Interfaces:
java.io.Closeable, java.lang.AutoCloseable, Consumer<K,V>

简介

Kafka采用生产/消费模型。Kafka Client从kafka集群中消费记录。该SDK具备以下特性:
1. 屏蔽了Server集群的错误处理;
2. 不用感知服务器端分区的迁移;
3. 利用consumer groups可以实现消费端的负载均衡;
客户端保持了和Brokers的连接,如果连接异常关闭,可能引起连接的泄露。客户端为非线程安全模型,具体参见“多线程处理”相关描述。

1. Offsets and Consumer Position

Kafka为分区内的每条记录分配一个Offset。该Offset作为记录在分区的唯一标识。也方面记录消费者在分区中的位置。例如某消费者的Position为5,意味着:
1. 已经消费0-4的记录;
2. 下次从记录5开始消费。
消费者获取数据的同时,会不停的确认已经消费的position。一旦发生错误或者重启,可以从该position继续处理。确认的方式有两种可选:
1. 自动确认;
2. 手工控制,通过commitSync/commitAsync 进行同步或异步的确认。

2. Consumer Groups and Topic Subscriptions

Kafka 用Consumer Groups提供并发消费模型。同一Consumer Groups里的多个消费者共同从Kafka中消费记录。每个Consumer得到的所有内容的子集。Consumer Groups提供了弹性的消费分担模型。当某个Consumer挂掉或者新的Consumer加入,可以rebalence。举个栗子:

场景
1.某个Topic 有4个分区p0、p1、p3、p4;
2.有两个消费者consumer1和consumer2,同属于一个Consumer* Groups(名字不重要啊);

效果
1.初始状态
  consumer1消费p0 和 p1;
  consumer2消费p2和p3;
2.consumer2 down掉后
  consumer1消费p0、p1、p3、p4;
3.consumer2活过来了,还来了个consumer3,可能的效果就是:
  consumer1消费p0 和 p1;
  consumer2消费p2;
  consumer3消费p3;

tree new bee Time:
1. 同一Topic 支持N多的consumer groups ,没有多余的数据拷贝;
2. 提升了消息系统的bigger。提供了像queue类型消费系统的易用语法,同时又搞定传统发布订阅模型中groups内每个consumer都是取用数据全集的问题。
3. 提供了更加底层灵活的操作,ConsumerRebalanceListener可以让消费者感知到reblance。结合offset控制,状态控制,分区指定等,处女座、手动党、需要特殊服务党会很爽。

说明

来自于官方API文档的翻译和YY。我说原创,你咬我啊。官网地址:
http://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值