深入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日
    浏览(63)
  • 【深入理解Kafka系列】 第二章 生产者

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

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

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

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

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

    2024年02月08日
    浏览(53)
  • 深入理解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日
    浏览(72)
  • 《DevOps实践指南》- 读书笔记(九)

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

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

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

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

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

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

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

    2024年02月07日
    浏览(39)
  • 《深入理解Java虚拟机》读书笔记:内存分配策略

    Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理,现在我们再一起来探讨一下给对象分配内存的那点事

    2024年02月13日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包