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

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

Kafka Performance调整

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

2. Kafka Performance Tuning是什么?

在咱们讨论Kafka性能调优时,须要考虑的配置参数不多。所以,为了提升性能,最重要的配置是控制磁盘刷新率的配置。
此外,咱们能够在组件的基础上划分这些配置。那么,让咱们首先谈谈制片人。所以,生产者方面须要注意的最重要的配置是 -服务器

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

并且,在消费者方面,重要的配置是 -多线程

  • 获取大小

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

Kafka性能调整图

Kafka性能调整图异步

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

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 Performance调整

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个生产服务器配置。

相关文章
相关标签/搜索