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

这篇具有很好参考价值的文章主要介绍了深入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()方法来对消息进行相应的定制化

原理分析

深入Kafka核心设计与实践原理读书笔记第二章文章来源地址https://www.toymoban.com/news/detail-400804.html

  1. 主线程中由KafkaPartition创建消息
  2. 通过拦截器
  3. 通过序列化器
  4. 通过分区器
  5. 到达消息累加器(RecordAccumulator)主要是用来收集消息方便 Sender可以批量发送

到了这里,关于深入Kafka核心设计与实践原理读书笔记第二章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Kafka:架构、设计原则及最佳实践

    Kafka是一款由Apache开发的分布式流处理平台,它最初是由LinkedIn公司在2010年开发的。从最初的消息队列到如今的分布式流处理平台Kafka经历了一个逐步演化的过程。 Kafka最开始的设计目的是解决LinkedIn内部存在的海量数据传输问题,在其不断的发展中Kafka逐渐发展成为一种可持

    2024年02月07日
    浏览(60)
  • 【深入理解Kafka系列】 第二章 生产者

          生产者就是负责向Kafka发送消息的应用程序。Kafka一共两个大版本的客户端,第一个是开源之处使用Scala编写的客户端;第二个是0.9.x版本开始推出的java编写的客户端。 一个正常的生产逻辑需要以下几个步骤: (1)配置生产者客户端参数及创建相应的生产者实例。 (

    2023年04月26日
    浏览(33)
  • 《Kafka权威指南》读书笔记

    《Kafka权威指南》第一、三、四、六章,是重点。可以多看看。 kafka是一个发布与订阅消息系统 消息:kafka的数据单元称为\\\"消息\\\"。可以把消息看成是数据库中的一个\\\"数据行\\\"。 消息的key:为key生成一个一致性散列值(HashCode),然后使用散列值对主题分区数进行取模,为消息选

    2024年02月04日
    浏览(39)
  • JS深入学习笔记 - 第二章.类和对象

    3.1面向对象 这里顺带提一句学习JAVA时,老师说的面向对象和面向过程的区别: 面向过程:强调做什么事情,具体什么步骤。举个把大象放进冰箱的例子: 打开冰箱门 把大象放进冰箱 关上冰箱门 面向对象: 强调的是做动作的主体(称之为对象) 冰箱 :打开操作 冰箱 :放

    2024年02月08日
    浏览(51)
  • 深入理解Java虚拟机(读书笔记)

    JCP:Java Community Process(Java社区) JSR:Java Specification Requests(Java规范提案) JEP:JDK Enhancement Proposals(Oracle Java版本管理) JMM:Java Memory Model(Java内存模型) OSR:On-Stack Replacement(栈上替换) TCK:Technology Compatibility Kit(技术兼容性测试工具) AOT:Ahead of Time Compilation(提前编

    2024年02月08日
    浏览(70)
  • 《DevOps实践指南》- 读书笔记(二)

    如何在组织中迈开 DevOps 转型的第一步?谁需要参与?如何组建团队?如何保障团队成员投入精力并在最大程度上获得成功机会?本章将回答这些问题。 本部分重点讨论如下话题 : 选择合适的价值流作为切入点 ; 理解待转型价值流中的工作 ; 参考康威定律设计组织架构

    2024年02月09日
    浏览(41)
  • 《DevOps实践指南》- 读书笔记(一)

    DevOps 的三步工作法 :流动、反馈以及持续学习与实验。 流动原则 :它加速了从开发、运维到交付给客户的流程。 反馈原则 :它使我们能建设出更安全可靠的工作体系。 持续学习与实验原则 :它打造出一种高度信任的文化和一种科学的工作方式,并将对组织的改进和创新

    2024年02月09日
    浏览(41)
  • 《DevOps实践指南》- 读书笔记(八)

    在前几章中,我们讨论了如何构建从代码提交到发布的快速工作流,以及反向的快速反馈流。我们还探索了加强组织学习和放大微弱故障信号的文化惯例,有助于创造更安全的工作系统。 在第六部分中,我们会进一步扩展这些活动,不仅实现开发和运维目标,还要同时实现信

    2024年02月07日
    浏览(38)
  • 《DevOps实践指南》- 读书笔记(九)

    附录 1 DevOps 的大融合 我们认为 DevOps 正在得益于一场令人难以置信的管理实践大融合,各种实践相互促进和衔接在一起,并形成了一种独特的实践集合,它能对组织的软件开发转型和 IT 产品或服务交付模式的转型产生极大的帮助。 John Willis 称之为“DevOps 的大融合”。下面尽

    2024年02月07日
    浏览(36)
  • 《深入理解Java虚拟机》读书笔记:垃圾收集算法

    由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程。 垃圾收集算法概要   标记-清除算法最基础的收集算法是“标记-清除”(Mark-Sweep)算法,算

    2024年02月13日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包