当前位置: 首页 > wzjs >正文

秦皇岛做网站公司汉狮价格十大免费货源网站免费版本

秦皇岛做网站公司汉狮价格,十大免费货源网站免费版本,智慧团建系统官方网站,wordpress+仿简书模板以下是 Kafka 生产者工作流程的清晰分步解释,结合关键机制与用户数据: 1. 生产者初始化与数据发送 主线程创建生产者对象,调用 send(ProducerRecord) 发送消息。 拦截器(可选):可添加自定义逻辑&#xff08…

以下是 Kafka 生产者工作流程的清晰分步解释,结合关键机制与用户数据:


1. 生产者初始化与数据发送

  • 主线程创建生产者对象,调用 send(ProducerRecord) 发送消息。

    • 拦截器(可选):可添加自定义逻辑(如日志、过滤),但默认不启用。


2. 数据预处理

  • 序列化(Serializer)
    将消息的 Key 和 Value 转换为字节流(如使用 StringSerializer 或自定义序列化器)。

    java

    producer.send(new ProducerRecord<>("topic", "key", "value"));
  • 分区器(Partitioner)
    决定消息写入 Topic 的哪个分区:

    • 规则:若指定 Key,按 Key 哈希值分配分区;若未指定 Key,采用轮询或粘性分区策略(Kafka 2.4+ 默认粘性)。

    • 目的:确保相同 Key 的消息进入同一分区,支持顺序消费。


3. 数据缓存(RecordAccumulator)

  • 核心组件

    • 双端队列(Deque):每个分区对应一个队列,存放 ProducerBatch(批次)。

    • 批次(ProducerBatch):默认 16KB(batch.size),装满后立即发送;若未满,等待 linger.ms(默认 0ms,立即发送)。

    • 总缓存大小:默认 32MB(buffer.memory),若缓存满则阻塞发送线程。


4. Sender 线程发送数据

  • Sender 线程独立运行,从 RecordAccumulator 拉取就绪批次。

  • 网络请求封装

    • NetworkClient 将批次按 Broker 分组,封装为 ProducerRequest

    • InFlight Requests 控制:每个 Broker 最多允许 5 个未确认请求(max.in.flight.requests.per.connection)。

      • 作用:防止生产者压垮 Broker,保证网络负载均衡。

      • 示例:若向 Broker1 发送的 5 个请求未收到 ACK,后续请求需等待。


5. 请求重试与 ACK 确认

  • ACK 机制acks 参数):

    • acks=0:不等待确认,吞吐量最高,可能丢失数据。

    • acks=1:Leader 副本写入即成功,平衡可靠性与性能。

    • acks=all:所有 ISR 副本同步成功,可靠性最高,延迟较高。

  • 重试机制retries 参数):

    • 默认不重试(retries=0),需根据业务需求配置(如 retries=3)。


6. 数据写入 Kafka 集群

  • Broker 处理

    • 将数据写入对应分区的 Leader 副本。

    • 若 acks=all,Follower 副本从 Leader 拉取数据完成同步。

  • 分区分布

    • 一个 Topic 的分区分布在多个 Broker 上(如用户示例的 13 个分区可能分布在 Broker1、Broker2 等)。


关键纠正与易混淆点

  1. InFlight Requests 与分区的区别

    • InFlight 限制的是每个 Broker 的未确认请求数,与分区无关。

    • 例如:Broker1 有分区1、分区2,但向 Broker1 发送的请求总数不能超过 5。

  2. 分区选择逻辑

    • 分区由分区器在发送时确定,不会因 Broker 负载高而自动切换

    • 若某分区的 Leader Broker 请求队列已满,生产者会等待,而不是发送到其他分区。

  3. 批次合并优化

    • Sender 线程会合并同一分区的多个小批次,减少网络请求次数,提升吞吐量。


全流程总结图

[Main线程]  ↓ 创建生产者对象  ↓ 调用 send() → 拦截器 → 序列化 → 分区器  ↓ 写入 RecordAccumulator(缓存批次)  |  |(批次满或时间到)  ↓  
[Sender线程]  ↓ 拉取批次 → 按 Broker 分组  ↓ NetworkClient 封装请求 → 发送至 Broker  |  |(等待 ACK 或重试)  ↓  
[Kafka集群]  ↓ Broker 接收请求 → 写入 Leader 副本  ↓ 副本同步(acks=all 时) → 返回 ACK
http://www.dtcms.com/wzjs/77700.html

相关文章:

  • 德阳 网站建设晋江怎么交换友情链接
  • 新疆交通建设管理局厅网站百度认证有什么用
  • 设计网页的工作叫什么北京网络推广公司wyhseo
  • 企业网站常见问题网络广告策划书案例
  • inurl 湖北 网站建设品牌推广是做什么的
  • 新冠人数最新统计武汉网站seo推广
  • 盐城网站建设多少钱沈阳seo排名公司
  • 网站建设公司上海做网站公司哪家好百度小说app
  • 老酒街wordpress百度关键词seo优化
  • 怎么做电影网站徐州新站百度快照优化
  • c 做网站后台搜索引擎优化什么意思
  • 天津市做网站的公司有哪些深圳网站优化培训
  • 网站开发人员调试做推广
  • 顺德做网站公司阿里云空间+1对1私人专属设计师
  • 网站建设程序结构微信小程序官网
  • 深圳网站建设设计首选公司推广链接怎么自己搞定
  • 一站式网站开发服务平台提高工作效率的方法不正确的是
  • 做动态网站的素材怎么收集网络营销公司名字
  • 哪里有网站建设商家如何开展网络营销
  • 莱芜最新招工招聘启事深圳seo云哥
  • 58重庆网站建设互联网宣传推广
  • 公务员报名网站怎么做如何制作自己的链接
  • 建设部高级职称查询官方网站神马关键词快速排名软件
  • 容桂网站制作价格扬州百度seo公司
  • 南京做企业网站公司考研最靠谱的培训机构
  • 企业网站建设研究论文软文推广
  • 网站建设实训日志网络推广方案书模板
  • 平原网站建设费用韶关seo
  • 服务器建设网站国外免费ip地址
  • 徐州 网站 备案 哪个公司做的好广告公司简介