今天,我们将讨论Kafka Performance Tuning。在本文“Kafka性能调优”中,我们将描述在设置集群配置时需要注意的配置。此外,我们将讨论Tuning Kafka Producers,Tuning Kafka Consumers和Tuning Kafka Brokers
那么,让我们从Kafka Performance Tuning开始吧。

Kafka性能调优 - Kafka优化的方法

2. Kafka Performance Tuning是什么?

在我们讨论Kafka性能调优时,需要考虑的配置参数很少。因此,为了提高性能,最重要的配置是控制磁盘刷新率的配置。
此外,我们可以在组件的基础上划分这些配置。那么,让我们首先谈谈制片人。因此,生产者方面需要注意的最重要的配置是 -

  • 压缩
  • 批量大小
  • 同步或异步

而且,在消费者方面,重要的配置是 -

  • 获取大小

虽然,当我们考虑批量大小时,总是会混淆批量大小最佳。我们可以说,大批量可能很大,以获得高吞吐量,它带来延迟问题。这意味着延迟和吞吐量彼此成反比。
可能具有低吞吐量和高吞吐量,我们必须为使用队列时间或刷新间隔选择合适的批量大小以找到所需的正确平衡。

Kafka性能调整图

检查你的卡夫卡表演 - 你站在哪里

3.调整Kafka以获得最佳性能

更具体地说,调整涉及两个重要指标:延迟测量和吞吐量测量。延迟度量意味着处理一个事件需要多长时间,类似地,在特定时间内有多少事件到达,这意味着吞吐量度量。因此,大多数系统都针对延迟或吞吐量进行了优化,而Apache Kafka则对两者进行了平衡。此外,我们可以说,一个经过良好调整的Kafka系统只有足够的经纪人来处理主题吞吐量,因为在接收信息时需要处理信息所需的延迟。

一个。调整卡夫卡制片人

众所周知,Kafka使用异步发布/订阅模型。当我们的生产者调用send()命令时,返回的结果是未来。未来提供了检查过程中信息状态的方法。此外,当批处理准备就绪时,生产者将其发送给代理。基本上,代理等待事件,然后接收结果,并进一步响应事务完成。
对于延迟和吞吐量,两个参数对于Kafka性能调优尤其重要:
Apache Kafka用例| 卡夫卡应用程序

一世。批量大小

batch.size不是消息数,而是以总字节数来衡量批量大小。这意味着它在向Kafka代理发送消息之前控制要收集的数据字节数。因此,在不超出可用内存的情况下,将其设置为尽可能高。确保默认值为16384. 
但是,如果我们增加缓冲区的大小,它可能永远不会满。在其他触发器的基础上,例如逗留时间(以毫秒为单位),Producer最终会发送信息。虽然通过将缓冲区批处理大小设置得太高,但我们可能会损害内存使用,这不会影响延迟。
而且,如果我们的制作人一直在发送,我们可能会获得最佳的吞吐量。此外,如果生产者经常闲置,我们可能没有编写足够的数据来保证当前的资源分配。

II。灵儿时间

为了在异步模式下缓冲数据,linger.ms设置最大时间。让我们通过一个例子来理解它,一次设置100个批次100ms的消息。这里,缓冲增加了消息传递延迟,但这提高了吞吐量。
阅读Apache Kafka Streams | 流处理拓扑
但是,默认情况下,生产者不会等待。因此,它会在数据可用时发送缓冲区。
此外,我们可以将linger.ms设置为5并在一个批次中发送更多消息,而不是立即发送。这将为发送的记录增加5毫秒的延迟,但也会减少发送的请求数,即使系统上的负载不能保证延迟。
因此,为了提高生产者的延迟和吞吐量,请增加linger.ms。

湾 调整卡夫卡经纪人

我们知道,主题分为几个分区。此外,每个分区都有一个领导者。此外,对于多个副本,大多数分区都写入领导者。但是,如果领导者没有得到适当的平衡,那么与其他人相比,可能会有人过度劳累。
因此,基于我们的系统或我们的数据有多重要,我们希望确保我们有足够的复制集来保存我们的数据。建议从每个物理存储磁盘一个分区和每个分区一个使用者开始。
阅读Apache Kafka Workflow | Kafka Pub-Sub Messaging

C。调整卡夫卡消费者

基本上,Kafka消费者可以创建吞吐量问题。主题的使用者数量必须等于分区数量。因为,为了处理跟上生产者所需的所有消费者,我们需要足够的分区。
在同一个消费者群体中,消费者将分区分开。因此,向组中添加更多消费者可以提高性能,同时添加更多消费者组不会影响性能。
而且,我们使用-replica.high.watermark.checkpoint.interval.ms的方式属性,可以影响吞吐量。此外,我们可以标记从分区读取时读取信息的最后一点。通过这种方式,如果我们必须返回并找到丢失的数据,我们有一个检查点可以向前移动而不必重新读取先前的数据。因此,如果我们为每个事件设置检查点水印,我们将永远不会丢失消息,但它会显着影响性能。此外,我们有一个安全边际,对吞吐量的影响要小得多,相反,我们将其设置为检查每百条消息的偏移量。

4. Kafka Tuning中的生产服务器配置

根据集群环境和机器配置的可用性,以下是我们可以修改的一些配置参数及其值 -

你知道重要的Kafka工具 - 在这里学习

Kafka性能调优 - 生产服务器配置

一个。num.replica.fetchers

此参数定义将数据从leader复制到跟随者的线程数。根据线程的可用性,我们可以修改此参数的值。如果我们有可用的线程,那么让副本获取器的数量并行完成复制是很重要的。

湾 replica.fetch.max.bytes

此参数是关于我们想要从每个获取请求中的任何分区获取多少数据。增加此参数的值是很好的,这有助于在关注者中快速创建副本。

C。replica.socket.receive.buffer.bytes

如果我们有更少的线程可用于创建副本,我们可以增加缓冲区的大小。此外,如果复制线程与传入消息速率相比较慢,则有助于保存更多数据。

d。num.partitions

在实时使用Kafka时,我们应该注意这种配置。我们可以具有并行级别并行并行写入数据,这将自动增加吞吐量。
了解Storm Kafka与配置和代码的集成
但是,如果系统配置无法处理,那么增加分区数会降低我们的性能和吞吐量。基本上,如果系统没有足够的线程或只有单个磁盘,那么在创建大量分区以获得更好的吞吐量时没有意义。因此,我们可以说,为主题创建更多分区直接依赖于可用的线程和磁盘。

即 num.io.threads

基本上,我们在集群中有多少磁盘,它决定了I / O线程的设置值。此外,服务器使用这些线程来执行请求。因此,许多线程必须依赖于多个磁盘。
所以,这完全是关于Kafka Performance Tuning。希望你喜欢我们的解释。

5.结论:Kafka Performance Tuning

因此,我们已经看到了Kafka Performance调整的整个概念。此外,我们研究了Tuning Kafka Producer,Tuning Kafka Broker,调整Kafka Consumer。另外,我们讨论了5个生产服务器配置。

Kafka性能调优 - Kafka优化的方法的更多相关文章

  1. MySQL性能调优的10个方法 - mysql数据库栏目

    摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...

  2. [大牛翻译系列]Hadoop(15)MapReduce 性能调优:优化MapReduce的用户JAVA代码

    6.4.5 优化MapReduce用户JAVA代码 MapReduce执行代码的方式和普通JAVA应用不同.这是由于MapReduce框架为了能够高效地处理海量数据,需要成百万次调用map和reduc ...

  3. [大牛翻译系列]Hadoop(16)MapReduce 性能调优:优化数据序列化

    6.4.6 优化数据序列化 如何存储和传输数据对性能有很大的影响.在这部分将介绍数据序列化的最佳实践,从Hadoop中榨出最大的性能. 压缩压缩是Hadoop优化的重要部分.通过压缩可以减少作业输出数 ...

  4. mysql性能调优——Query优化

    上节谈了关于mysql锁定机制的优化方案,下面来谈一下Query优化——Mysql Query Optimizer 当Mysql Query Optimizer接受到从Query Parser过来的Q ...

  5. 【调优】kafka性能调优

    主要优化原理和思路 kafka是一个高吞吐量分布式消息系统,并且提供了持久化.其高性能的有两个重要特点: 利用了磁盘连续读写性能远远高于随机读写的特点: 并发,将一个topic拆分多个partitio ...

  6. Kafka性能调优分析-线上环境篇

    一.背景介绍: 在平时的开发中,使用kafka来发送数据已经非常熟悉,但是在使用的过程中,其实并没有比较深入的探索kafka使用过程中 一些参数配置,带来的损失可能就是没有充分的发挥出kfka的优势, ...

  7. kafka性能调优(转)

    原文  https://blog.csdn.net/weixin_39478115/article/details/79155287 Broker参数配置 1.网络和io操作线程配置优化 # brok ...

  8. kafka性能调优

    https://blog.csdn.net/u013063153/article/details/73826322

  9. <转>MySQL性能调优的10个方法

    文章原地址:http://mp.weixin.qq.com/s/oRXJRz_Y5drmIrcbxSKOcw 1. 选择合适的存储引擎: InnoDB 除非你的数据表使用来做只读或者全文检索 (相信现 ...

随机推荐

  1. 05-Flutter移动电商实战-dio基础_引入和简单的Get请求

    这篇开始我们学习Dart第三方Http请求库dio,这是国人开源的一个项目,也是国内用的最广泛的Dart Http请求库. 1.dio介绍和引入 dio是一个强大的Dart Http请求库,支持Res ...

  2. [ML] Tensorflow.js + Image segmentPerson

    <!DOCTYPE html> <html> <head> <title>Parcel Sandbox</title> <meta c ...

  3. [ARIA] Add aria-expanded to add semantic value and styling

    In this lesson, we will be going over the attribute aria-expanded. Instead of using a class like .op ...

  4. CLR内部异常(下)

    直接使用SEH 有些情况里直接使用SEH会更合适一些.特别是,如果需要在第一次遍历(first pass - SEH异常处理流程里的第一遍处理)时需要执行某些操作时,也就是在堆栈向上展开之前,SEH是 ...

  5. PowerDesigner 创建表的时候 没有自增长Id的设置项

    今天早上同事创建表的时候,在那个界面没有自增长Id的选项,当时我也纳闷,软件肯定都是一样的,设置的步骤都一样(有些配置好的 我就没改过 然后就忘了还改过些什么步骤了),结果还是没有那个选项 百度了一下 ...

  6. mac 下的 tree 命令 终端展示你的目录树结构

    相信很多使用过Linux的用户都用过tree命令,它可以像windows的文件管理器一样清楚明了的显示目录结构.mac 下使用 brew包管理工具安装 tree 前提:安装了homebrew(安装指令 ...

  7. python学习笔记二:(python3 logging函数中format说明)

    背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...

  8. 【BIRT】汉化设计器

    点击下面文字即可下载汉化包 birt汉化_plugins.rar 下载完成之后,解压: 将上述文件copy到目录../eclipse/plugins/下即可 文件复制后,重新启动eclipse,则已经 ...

  9. fluent将出口温度赋值给入口

    Fluent版本:Fluent18.2 首先我们启动Fluent 然后按照正常的流程进行模型缩放,材料的设置,边界条件的设置等等,然后初始化. 在完成了算例的初始化以后 (define (OutToI ...

  10. OpenFOAM——气泡上升

    计算域的顶部为大气,其余部分为壁面 流体的物性参数为: 首先进行建模操作,任何建模软件均可,本算例采用ICEM直接建模,生成网格,然后利用OpenFOAM下转化网格,划分完成的网格如下: 网格比较密集 ...