深入Kafka核心设计与实践原理读书笔记第二章

1 生产者

生产逻辑

  1. 配置生产者客户端参数及创建相应的生产者实例。
  2. 构建待发送的消息。
  3. 发送消息
  4. 关闭实列

参数说明

  1. bootstrap.servers :用来指定生产者客户端链接Kafka集群搜需要的broker地址清单,具体格式 host1:port1,host2:port2,可以设置一个或多个地址中间,号分割,参数默认 空串。这里要注意并不需要配置所有的broker地址,应为生产者会在broker中找到其他的broker地址,但是建议配置两个以上,当其中一个broker宕机时还可以通过另外一个工作。
  2. key.serializer和value.serializer:broker端接受的消息必须以字节数组的形式存在。
  3. client.id : 默认 “” 用来设置KafkaProducer对应的客户端id
  4. max.block.ms:默认值 60000 用来控制KafkaProducer 中send()方法和partitionsFor()方法的阻塞时间
  5. partitioner.class:用来指定分区器
  6. enable.idempotence:默认值 false 是否开启幂等性
  7. interceptor.classes 用来设置生产者拦截器
  8. max.in.flight.requests.per.connection:5 限制每个连接最多缓存的请求数
  9. metadata.max.age.ms: 300000 5分钟 如果在这个时间内元数据没有更新的话就强制更新。
  10. transactional.id:null 设置事务id 必须唯一
  11. batch.size 16384(16KB): 生产者客户端中用于缓存消息的缓冲区大小。

序列化器(Serializer)

生产者发送消息到kafka是需要将对象序列化城流才能访问到kafka,消费者需要把流反序列化 才能进行 消费。

分区器

消息在通过send()方法发送到broker的过程中,有可能需要经过拦截器、序列化器和分区器(partitioner)的一系列作用之后才能被真正的发往broker。拦截器一般不是必须的,而序列化器时必须的必须的。消息经过序列化之后就需要确定它发送的分区,如果消息ProducerRecord中指定了partition字段,那么就不需要分区器的作用,因为partition代表的就是所要发往的分区。
分区器时通过kay来计算partition的值,分区器的作用就是为消息分配分区。
kafka的默认分区器是 org.apache.kafka.clients.producer.internals.DefaultPartitioner

生产者拦截器(Interceptor)

生产者拦截器主要用来在消息发送前做一些准备工作,如按照规则过滤不符合条件的消息,修改消息等,也可以用来做一些定制化的需求,kafkaProducer在将消息序列化和计算分区之前会调用拦截器的onSend()方法来对消息进行相应的定制化

原理分析

在这里插入图片描述

  1. 主线程中由KafkaPartition创建消息
  2. 通过拦截器
  3. 通过序列化器
  4. 通过分区器
  5. 到达消息累加器(RecordAccumulator)主要是用来收集消息方便 Sender可以批量发送
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
深入理解Kafka_核心设计实践原理》是一本关于Kafka的重要著作,以下是对该书的简要回答。 该书主要通过系统地介绍Kafka核心设计实践原理,帮助读者深入理解Kafka的内部机制和工作原理。首先,书中详细介绍了Kafka的基本概念,包括Kafka集群的组成、主题和分区的概念等,为读者建立起对Kafka的基础认识。 接着,该书深入探讨了Kafka消息的存储和传输机制。阐述了Kafka如何将消息持久化到磁盘,并通过基于磁盘的顺序写性能实现高吞吐量的特点。同时,还介绍了Kafka的消息分区和副本机制,解释了如何通过分区和副本分散消息的负载并提供数据的冗余性。 此外,该书还深入研究了Kafka的消息传输过程。对生产者和消费者的工作原理进行了详细解读,包括消息的发送和订阅过程以及Kafka如何保证消息的可靠性传输。同时,介绍了Kafka的消费组和分区再均衡机制,以及与ZooKeeper的整合。 最后,该书还对Kafka的高级特性进行了介绍,包括事务支持、使用Kafka Streams进行流处理、使用Kafka Connect进行数据集成等内容,帮助读者进一步了解和应用Kafka的高级功能。 综上所述,《深入理解Kafka_核心设计实践原理》是一本全面而深入Kafka技术指南。通过阅读本书,读者可以深入理解Kafka核心设计实践原理,掌握Kafka的基本概念和工作原理,并能够应用Kafka解决实际问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值