KAFKA特性 一

目录

1 架构图

2 生产者

3 消费者


1 架构图

2 生产者

 

解读
ProducerRecord:每个消息是一个ProducerRecord对象,其中Topic和Value值必填,partition和key非必填。
过程
send()方法大致过程为:
设置序列化器->设置分区->放入队列缓存->等待时机push到broker
注:
不是直接发送给服务端,而是先在客户端把消息放入队列中, 然后由一个消息发送线程从队列中拉取消息,以批量的方式发送消息给服务端。 Kafka的记录收集器( RecordAccumulator)负责缓存生产者 客户端产生的消息,发送线程(Sender)负责读取记录收集器的批量消息,通过网络发送给服务端。为了保证客户端网络请求的快速响应,Kafka使用选择器( Selector) 处理网络连接和读写处理,使用 网络连接( NetworkClient)处理客户端网络请求。

3 消费者

Kafka使用消费组(consumer group)统一 了上面两种消息模型 。Kafka使用队列模型时,它可以将处理
工作平均分配给消费组中的消费者成员;使用发布订阅模式时,它可以将消息 广播给多个消费组。
采用多个消费组结合多个消费者,既可以线性扩展消息的处理能力,也允许消息被多个消费组订阅。
kafka的消费模式


 Kafka采用消费组保证了“一个分区只可被消费组中的一个消费者所消费” ,这意味着:
(1)在一个消费组中,一个消费者可以消费多个分区 。
(2)不同的消费者消费的分区一定不会重复,所有消费者一起消费所有 的分区 。
(3)在不同消费组中,每个消费组都会悄费所有的分区 。
(4)同一个消费组下消费者对分区是互斥的,而不同消费组之间是共享的。

 

由图中,我们知道,kafka的消费者客户端不断德调用poll()方法去轮询,从Broker中拉取消息。
topic下的一个分区只能被同一个consumer group下的一个consumer线程来消费,但反之并不成立,即一个consumer线程可以消费多个分区的数据
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值