Kafka生产者

1.acks

  • 如果acks=0,生产者在成功写入消息之前不会等待任何来自服务器的响应。
    • 缺点:如果当中出现了问题,导致服务器没有收到消息,那么生产者就无从得知,消息就丢失了
    • 优点:因为生产者不需要等待服务器的响应,所有他可以以网络能够支持的最大速度发送消息,从而达到很高的吞吐量
  • 如果acks=1,只要集群的leader节点收到消息,生产者就会收到一个来自服务器的成功响应
    • 如果无法到达首领节点(如leader节点崩溃,新的leader还没有被选举出来),生产者会收到一个错误响应,为避免数据丢失,生产者会重发消息
  • 如果acks=all,只有当所有参与复制的节点全部收到消息,生产者才会收到一个来自服务器的成功响应
    • 优点:最安全,保证不止一个服务器收到消息,就算有服务器发生崩溃,整个集群仍可以运行
    • 缺点:延迟比acks=1更高

2.buffer.memory

  • 该参数用来设置生产者内存缓冲区的大小,生产者用它缓冲要发送到服务器的消息。如果应用程序发送消息的速度超过发送到服务器的速度,导致生产者空间不足,send()方法调用要么被阻塞,要么抛出异常

3.compression.type

  • 该参数可以设置为snappy、gzip、lz4,指定消息被发送给broker之前使用哪种压缩算法

4.retries

  • 决定生产者可以重发消息的次数,如果达到这个次数,生产者会放弃重试,并返回错误

5.batch.size

  • 当有多个消息需要被发送到同一个分区时,生产者会把他们放在同一个批次里。该参数指定了一个批次可以使用的内存大小
    • 如果设置的很大,也不会造成延迟,半满或者只包含一个消息的批次也有可能被发送
    • 设置的太小,生产者需要更频繁地发送消息,会增加一些额外开销

6.linger.ms

  • 指定了生产者在发送批次之前等待更多消息加入批次的时间
    • 缺点:增加延迟
    • 优点:提升吞吐量

7.client.id

  • 服务器会用它来识别消息的来源,还可以用在日志和配额指标

8.max.in.flight.requests.per.connection

  • 生产者在收到服务器响应之前可以发送多少个消息。值越高,越占用内存,提升吞吐量

9.max.request.size

  • 控制发送者发送的请求大小

10.kafka保证同一个分区里的消息是有序的,消费者会按照生产者的插入顺序进行读取

如果某些场景要求消息是有序的,那么消息是否写入成功是很关键的,不要把retries设为0,可以把max.in.flight.requests.per.connection设为1,这样生产者尝试发送第一批消息时,就不会有其他的消息发送给broker

缺点:严重影响生产者的吞吐量

优点:消息严格有序

相关推荐
向夏威夷 梦断明暄13 小时前
从架构特点到功能缺陷,重新认识分析型分布式数据库
数据库·分布式·架构
Wang's Blog14 小时前
Go-Zero 项目开发19:基于 Kafka 的异步消息存储与转发实战
golang·kafka
Devin~Y15 小时前
互联网大厂 Java 面试实录:Spring Boot、MyBatis、Redis、Kafka、Spring Security、RAG 与 MCP 全链路问答
java·redis·kafka·mybatis·spring security·spring mvc·sprint boot
AAA@峥15 小时前
Ceph 集群配置管理完整指南
运维·数据库·分布式·ceph
心如鉄补16 小时前
分布式链路追踪系统之docker-compose安装skywalking
分布式·docker·skywalking
努力努力再努力wz16 小时前
【分布式系统与 RPC 框架系列】从单机瓶颈到远程调用:一文理解分布式架构与 RPC 原理
linux·网络·c++·分布式·网络协议·rpc·架构
ACP广源盛1392462567318 小时前
此芯 P1 AI BOX / AI NAS@ACP#IX8008、IX8024 应用场景与市场机会
大数据·人工智能·分布式·单片机·嵌入式硬件
网络工程小王2 天前
【HCIE-AI】12.deepspeed分布式并行训练进阶版
人工智能·pytorch·分布式·学习·昇腾·deepspeed
ACP广源盛139246256732 天前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
花生了什么事o2 天前
分布式 ID 生成方案:从数据库自增到雪花算法
数据库·分布式·算法