Kafka生产者开发,原理分析,以及参数配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kafka生产者开发,原理分析,以及参数配置相关的知识,希望对你有一定的参考价值。

参考技术A 生产者开发(基于java),生产者发送消息主要有以下三步

那么我们进行抽象,大致可以得到这两个类。

另外Kafka为了表现以下封装的特性,把准备生产者的参数配成了一个Properties类,
以这个类为KafkaProducer构造函数入参。

那么KafkaProducer的参数具体可以配置什么呢?

由123步可知,可以配置拦截器,序列化器,分区器。
这些都可以自己实现特定接口(ProducerInterceptor,Serializer,Partioner),
然后放到Properties里面,最后给KafkaProducer
拦截器就是对ProducerRecord做一些处理,然后返回处理过的新的ProducerRecord(自定义拦截策略)
序列化器是要讲java对象转成byte[]数组然后进行网络传输(自己定义序列化策略)
分区器就是为消息选择分区(这里自己可以设计分区策略)

再次回到这张图

可以看到,有两个线程在完成消息的发送,一个是主线程,一个是Sender线程。
主线程经过123步后,会将同一个partition的多个Record封装(压缩)到一个ProducerBatch对象中,
这样的目的是方便传输,提高效率,RecordAccumulator里面维持着一个双端ProducerBatch队列数组,

然后Sender线程从队头取ProducerBatch封装成Request,这里设计到一个逻辑到物理的转换。
分区是逻辑的,而broker才是物理的,一个区对应一个broker,所以要转换。

另外Sender线程里面维持了一个以Nodeid(就是对应broker)为Key,Deque<Request>为值的Map,
这里面的Request指的是那种没有Response的Request。一旦有了Response就会清理掉的。

这个是由通过leastLoadedNode节点实现的,不多说了。

其实除了123步中的参数,还有其它参数,这里就说一个
ack
acks=1。默认值即为1。生产者发送消息之后,只要分区的leader副本成功写入消息,那么它就会收到来自服务端的成功响应。
acks=0。生产者发送消息之后不需要等待任何服务端的响应。
acks=-1或acks=all。生产者在消息发送之后,需要等待ISR中的所有副本都成功写入消息之后才能够收到来自服务端的成功响应。

java开发实战经典视频,面试经历分享

一、对Kafka的认识

1.Kafka的基本概念

image

2.安装与配置

image

3.生产与消费

image

4.服务端参数配置

image

二、生产者

1.客户端开发

  • 必要的参数配置
  • 消息的发送
  • 序列化
  • 分区器
  • 生产者拦截器

image

2.原理分析

  • 整体架构
  • 元数据的更新

image

3.重要的生产者参数

image

三、消费者

1.消费者与消费组

image

2.客户端开发

  • 必要的参数配置
  • 订阅主题与分区
  • 反序列化
  • 消息消费
  • 位移提交
  • 控制或关闭消费
  • 指定位移消费
  • 再均衡
  • 消费者拦截器
  • 多线程实现
  • 重要的消费者参数

image

四、主题与分区

1.主题的管理

  • 创建主题
  • 分区副本的分配
  • 查看主题
  • 修改主题
  • 配置管理
  • 主题端参数
  • 删除主题

image

2.初识KafkaAdminCilent

  • 基本使用
  • 主题合法性验证

image

3.分区的管理

  • 优先副本的选举
  • 分区重分配
  • 复制限流
  • 修改副本因子

image

4.如何选择合适的分区数

  • 性能测试工具
  • 分区数越多吞吐量就越高吗
  • 分区数的上限
  • 考量因素

image

五、日志存储

1.文件目录布局

image

2.日志格式的演变

  • v0版本
  • v1版本
  • 消息压缩
  • 变长字段
  • v2版本

image

3.日志索引

  • 偏移量索引
  • 时间戳索引

image

4.日志清理

  • 日志删除
  • 日志压缩

image

5.磁盘存储

  • 页缓存
  • 磁盘I/O流程
  • 零拷贝

image

六、深入服务端

1.协议设计

image

2.时间轮

image

3.延时操作

image

4.控制器

image

5.参数解密

image

七、深入客户端

1.分区分配策略

image

2.消费者协调器和组协调器

image

3._consumer_offsets剖析

image

4.事务

image

八、可靠性探究

1.副本剖析

image

2.日志同步机制

image

3.可靠性分析

image

九、Kafka应用

1.命令行工具

image

2.Kafka Connect

image

3.Kafka Mirror Maker

image

4.Kafka Streams

image

十、Kafka监控

1.监控数据的来源

image

2.消费滞后

image

3.同步失效分区

image

4.监控指标说明

image

5.监控模块

image

十一、高级应用

1.过期时间(TTL)

image

2.延时队列

image

3.死信队列和重试队列

image

4.消息路由

image

5.消息轨迹

image

6.消息审计

image

7.消息代理

image

8.消息中间件选型

image

十二、Kafka与Spark的集成

1.Spark的安装及简单应用

image

2.Spark编程模型

image

3.Spark的运行结构

image

4.Spark Streaming简介

image

5.Kafka与Spark Streaming的整合

image

6.Spark SQL

image

7.Structured Streaming

image

8.Kafka与Structured Streaming的整合

image

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案免费分享给大家,希望能帮助到大家,有需要的朋友可以看下面的免费领取方式

资料领取方式:狂戳这里

在这里插入图片描述

在这里插入图片描述

g的整合**

[外链图片转存中…(img-DVRYllKc-1625932712407)]

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案免费分享给大家,希望能帮助到大家,有需要的朋友可以看下面的免费领取方式

资料领取方式:狂戳这里

[外链图片转存中…(img-Y1zog4wx-1625932712407)]

[外链图片转存中…(img-VtuEVZD2-1625932712408)]

以上是关于Kafka生产者开发,原理分析,以及参数配置的主要内容,如果未能解决你的问题,请参考以下文章

Kafka源码分析及图解原理之Producer端

java开发实战经典视频,面试经历分享

java开发转技术支持,含答案解析

Java开发必学!java分布式系统架构

kafka整合springboot以及核心参数的使用

java面试笔试题代码,先收藏了