Kafka 优化:四个最佳实践

Apache Kafka 是一个强大的工具。它允许创建易于扩展的实时、高吞吐量、低延迟数据流。优化后,Kafka 会带来其他好处,例如抵抗集群内发生的机器/节点故障以及集群上数据和消息的持久化。这就是 Kafka 优化如此重要的原因。

优化你的 Kafka 框架应该是一个优先事项。但是,可能很难知道究竟如何优化 Kafka。这就是为什么我们为您带来四个 Kafka 最佳实践,您可以实施这些最佳实践以充分利用该框架。

以下是四个基本的 Kafka 优化技巧:

您的 Kafka 部署可能是一个挑战,因为分布式架构有很多层,并且可以在这些层内调整许多参数。

例如,通常情况下,具有自动数据冗余的高吞吐量发布-订阅 (pub/sub) 模式是一件好事。但是,当您的消费者努力跟上您的数据流,或者如果他们无法阅读消息,因为这些消息在消费者到达它们之前就消失了,那么就需要做一些工作来支持消费应用程序的性能需求。

但是这四种基本的做法应该是你Kafka优化的基础。继续阅读以深入了解这些方法。

实现和维护 Kafka 部署需要持续监控。 Kafka 是一个强大的实时数据流框架。未能优化会导致流式传输缓慢和性能滞后。

Kafka 优化是一个广泛的主题,可以非常深入和精细,但这里有四个高度利用的 Kafka 最佳实践可以帮助您入门:

1.升级到最新版本的Kafka。

这听起来可能非常明显,但您会惊讶于有多少人使用旧版本的 Kafka。一个非常简单的 Kafka 优化举措是升级并使用最新版本的平台。您必须确定您的客户是否使用旧版本的 Kafka(0.10 或更早版本)。如果是,他们应该立即升级。

Kafka 每次更新都会略有变化。最新的 Kafka 版本于 2021 年 4 月发布,提供了 KIP-500 的早期访问版本,使用户即使没有 Apache ZooKeeper 也可以运行 Kafka 代理。这消除了对内部 Raft 实现的需要。其他变化包括支持每个集群更多的分区、更无缝的操作和更严格的安全性。

2. 了解数据吞吐率。

优化 Apache Kafka 部署是优化平台堆栈层的练习。分区是吞吐量性能所基于的存储层。

每个分区的数据速率是消息的平均大小乘以每秒消息数。简而言之,它是数据通过分区的速率。所需的吞吐率决定了分区的目标架构。

这是一个关键的 Kafka 优化技巧:为了提高吞吐量,您可以扩大请求中获取的最小数据量。这导致更少的请求。然后以更大的批次传递消息。这一点至关重要,尤其是在生成的数据量较少时。对 Kafka 吞吐量指标的广泛了解将帮助用户在这种情况下充分优化他们的 Kafka 系统。

3. 在编写主题时坚持随机分区,除非体系结构要求另有要求。

解决方案架构师希望每个分区都支持相似的数据量和吞吐率。实际上,数据速率会随着时间的推移而变化,生产者和消费者的原始数量也会随之变化。

可变性带来的性能挑战是消费者滞后的可能性,也就是消费者读取率落后于生产者写入率。随着 Kafka 环境的扩展,随机分区是一种有效的方法,可确保您不会在不必要地尝试将静态定义应用于移动性能目标时引入人为瓶颈。

分区领导通常是通过由 Zookeeper 维护的元数据进行简单选举的产物。然而,领导选举并没有考虑到各个分区的性能。

根据您的 Kafka 发行版,可以利用专有的平衡器。但由于缺少此类工具,随机分区提供了实现平衡性能的最不干涉途径。

这就是为什么随机分区是我们推荐的关键 Apache Kafka 最佳实践之一。它为消费者平均分配负载。因此,扩展消费者变得更加容易。当您使用默认分区程序而不手动识别特定分区或消息密钥时,这实际上会发生这种情况。随机分区最适合无状态或“令人尴尬的并行”服务。

外卖?在写入主题时坚持随机分区,除非体系结构要求另有要求。

4.调整consumer socket buffer,实现高速摄取。

在较旧的 Kafka 版本中,参数 receive.buffer.bytes 默认设置为 64kB。在较新的 Kafka 版本中,参数为 socket.receive.buffer.bytes,默认为 100kB。

这对 Kafka 优化意味着什么?对于高吞吐量环境,这些默认值太小,因此不够用。当代理和消费者之间的网络带宽延迟乘积大于 LAN(局域网)时,情况就很明显了。

当没有足够的磁盘时,线程会变慢并变得有限。 Apache Kafka 最重要的最佳实践之一是增加网络请求缓冲区的大小。这样做将帮助您提高吞吐量。
如果您的网络以 10 Gbps 或更高的速度运行并且延迟为 1 毫秒或更长,建议您将套接字缓冲区调整为 8 或 16 MB。如果内存有问题,请考虑 1 MB。

优化 Apache Kafka 部署是一项持续的工作,但 Kafka 的这四个最佳实践应该是一个坚实的开始。上面提到的性能优化技巧只是用户可以实施以提高 Kafka 性能的一些优化方法。

Kafka 越来越受到应用程序开发人员、IT 专业人员和数据管理人员的欢迎。并且有充分的理由。有关 Kafka 的更多信息,请查看我们的另一篇博文,其中讨论了将 Kafka 应用于应用程序开发和数据管理的特定领域时的最佳实践。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627