在Aiven for Apache Kafka®中引入Kafka配额

在Aiven for Apache Kafka®中引入Kafka配额。

2023年7月11日 -> 二零二三年七月十一日

在Aiven for Apache Kafka®中引入Kafka配额。

“Aiven for Apache Kafka®引入了Kafka配额,使客户端应用能够控制在Kafka集群中可用的资源。”

Aiven for Apache Kafka®可以帮助您利用Apache Kafka®的强大和可扩展性来满足流式数据的需求,而无需担心基础架构和管理开销。在生产级别的Kafka环境中,经常会有多个团队共享集群资源,每个团队都有专门的主题来生成、消费、丰富和转换数据。

在有Kafka集群的情况下,对于组织来说,使用Kafka环境带来了稳定的性能和易于操作的许多优势,但对于运行该平台的团队来说,也存在着有关治理和标准化的挑战。如果多个团队使用同一个集群,特定的应用程序可能会过度使用集群,对其他主题的性能造成负面影响,这被称为”嘈杂邻居问题”可能会发生。为了避免这种情况,数据平台团队和工程管理人员利用Apache Kafka中的配额限制控制特定集群内客户端应用程序的资源使用方式。

今日,我们宣布Aiven for Apache Kafka已经支持使用Kafka配额。Aiven的客户可以直接通过Aiven控制台、Aiven的API或CLI来定义、更新和验证每个应用程序的使用资源。在下面的段落中,我们将介绍Apache Kafka中的配额是什么,以及在共享Kafka配置中的优势,以及在Aiven平台上支持的配额类型。请查看详细信息!

Kafka 配额的简单说明

Apache Kafka的配额提供了一种管理和限制Kafka客户端使用的代理资源数量的机制。通过定义Kafka的配额,Apache Kafka的管理员可以设置默认值并监控指定集群中不同生产或消费应用程序对资源的使用情况。当生产者/消费者应用程序达到配额上限时,集群会减慢相关事件的接收/生产速度,以维持集群的稳定性能。Kafka的配额非常适用于不同团队、应用程序或用例在同一个共享Kafka集群上消费/产生事件的场景。在这种情况下,通过控制每个应用程序在集群中可使用的资源,可以确保集群的性能一致,并且没有潜在的性能下降。

为什么需要Kafka配额

本番等級的工作負載有主要的兩種部署選項。首先,Kafka管理者可以定義應用程式的分組、使用場景和合規性要求,然後部署專用的單一目的Kafka集群,以滿足應用程式的特定需求。或者,Kafka用戶可以部署共享的多用途Kafka集群,為多個應用程式和內部應用程式團隊的使用案例提供對流式數據的訪問,這些都來自於主要的Kafka集群。

无论选择哪种部署方式,拥有独立的、专用于单一应用程序的隔离Kafka集群是很少见的。在大多数情况下,集群代表了多个数据流和用例的后端。因此,由于应用程序使用模式不同,数据流量和性能也会变动,可能会对正在使用的应用程序以及共享相同集群资源的其他所有使用客户端产生影响。

Apache Kafka的配额功能可以通过强制集群资源的预定义使用限制来防止这种情况发生,从而避免了性能下降和集群完全停止的可能性。例如,一个使用伦敦市交通信号灯传感器数据的物联网提供商可能在白天交通量较高,夜间交通量较低(因为大多数巴士和伦敦地铁在午夜左右停止运营)。为了防止集群恶化或停止,可以减少非实时应用程序在白天向主题写入数据的量,而不是允许所有应用程序整天都对Kafka集群进行读写操作。

Apache Kafka的配额提供了一种安全方法,通过在用例和应用程序之间创建资源边界,使Kafka管理员能够为集群内每个Kafka代理的各个客户端应用程序设置生成/消费流量,以确保所有用例有效运行并保障适当的资源分配。根据分配的资源,Kafka代理通过限制客户端应用程序的请求流量,避免了潜在的资源饱和和由少数恶意客户端引起的整个配置性能下降,以防止集群停止。Kafka的配额是维护和管理Kafka运营健全性的关键组成部分。特别是在多个团队共享的生产级Kafka工作负载中,如从集中的Kafka实例访问、生成或消费流式数据时,配额变得尤为重要。

在Apache Kafka中,配额的主要优点是什么?

若在Apache Kafka中使用配额功能,对于组织来说有多个好处,并且对于企业的Kafka用户来说,将有更多的使用案例。以下是其中一些优点:

1. 对 Kafka 环境进行更准确的运维和管理。

随着对Apache Kafka的使用增加,管理几十个(甚至数百个)Kafka集群往往成为利用实时数据更好的瓶颈。因此,利用像Klaw和Conduktor这样的技术来进行Apache Kafka数据治理,对提升整个组织的Apache Kafka治理非常有帮助。此外,有效管理数据模式对于Kafka的设置是必不可少的。

通过利用Apache Kafka的配额功能,数据平台团队和Apache Kafka的运营人员可以更好地控制使用Kafka集群的用户、他们可以访问的内容(从Kafka主题和ACL的角度来看),以及他们被允许消耗的资源量(配额限制)。
2. **优化Kafka资源的成本。

在流媒体世界中,尤其是在多用途场景中,由于吞吐量的变化,预测资源使用量是复杂的。因此,在很多情况下,应用团队会过度配置资源,以确保达到最终目标。Kafka的配额可以根据需求进行调整,因此数据平台团队可以根据需要更改工作负载的优先级。因此,数据平台团队可以在高峰时段将上限设得更高,并在不需要时释放给其他应用程序。

Kafka的配额可以进一步提高Kafka集群的性能稳定性,同时通过共享单个Kafka实例在整个用例中,并将相关支出分散给组织内的团队来优化固定成本。特别是在企业试图降低云基础设施成本并利用成本最优化策略的时代,有效利用Kafka资源的能力对于数据平台团队和FinOps以及技术高管来说都是关键。

在最近的技术组织中,采用多用途Apache Kafka集群时的最大障碍之一是性能的可预测性。利益相关者需要的不仅仅是从生产者到消费者的数据流。Apache Kafka的配额提供了一种保证为每个应用程序定制资源限制的机制,从而提高了整个Kafka集群性能的可预测性。

以前,绝大多数用例在专用而单一目的的Kafka集群中进行处理,而现在可以在共享且多目的的集群中进行相同的管理,并提供了数据和模式的整合作为额外的优势。

通过设置Apache Kafka的配额,数据平台团队能够最大限度地减少为找到适用于不同Kafka主题的新数据模式所需的时间。这将大大减少在集群之间重复模式所需的时间,提高团队的速度,缩短上市时间,从而增加市场价值。

Apache Kafkaにおけるクォータの主な利点:Kafka環境の正確な運用とガバナンス、Kafkaリソースのコスト最適化、日付とスキーマの重複の最小化

Aiven for Apache Kafka支持的配额类型

Aiven for Apache Kafka为了有效管理资源,提供了多个配额选项。这些配额可以更灵活地管理网络带宽和CPU使用量。

    • コンシューマスロットル(ネットワーク帯域幅クォータ)***:このクォータにより、コンシューマーが1秒間にKafkaクラスターから取得できるデータ量を制限できます。最大ネットワークスループットを設定することで、単一のコンシューマーが過剰なネットワーク帯域幅を使用することを防ぎます。

 

    • Producer throttle (Network bandwidth quota):コンシューマスロットルと同様に、このクォータは、プロデューサーが1秒間にKafkaクラスターに送信できるデータ量を制限します。プロデューサが過剰なデータを送信してシステムに負荷をかけないようにし、システムの安定性を維持します。

 

    CPUスロットル**:このクォータはCPU使用量の管理に関するものです。総 CPU 時間のパーセンテージを設定することで CPU 使用量を管理できます。特定のクライアントIDやユーザーのCPUリソースを制限することで、個人がCPUリソースを独占することを防ぎ、公平で効率的なリソース利用を促進します。

请参阅相关文件以获取有关客户端ID和用户以及Quotas实施的详细信息。

首先 ​​)

您可以使用Aiven控制台或Aiven API轻松地添加和管理Aiven for Apache Kafka®服务的配额。有关在Aiven for Apache Kafka实例中添加、配置和更改配额的详细步骤,请按照文档中的指引进行操作。

您还不是Aiven的客户吗?您可以预订演示,直接尝试使用Aiven for Apache Kafka,或者从这里免费使用30天!

bannerAds