Konzepte in Streaming mit Apache Kafka

Um OCI Streaming mit Apache Kafka besser zu verstehen, lesen Sie einige Begriffe und Konzepte.

Bestimmungen

Apache Kafka
Apache Kafka ist eine Open-Source-Event-Streaming-Plattform. Es läuft als verteiltes System, das aus Servern und Clients besteht. Mit OCI Streaming mit Apache Kafka können Sie vollständig verwaltete Kafka-Cluster in einem Mandanten mit 100% Kompatibilität mit Apache Kafka ausführen.

Mit der OCI-Konsole, -API oder -CLI können Sie Cluster und Broker erstellen und aktualisieren.

Cluster
Ein verteiltes System von Apache Kafka-Servern oder -Brokern, die Streaming-Daten speichern und verwalten. In OCI Streaming mit Apache Kafka können Sie zwei Clustertypen erstellen: Startcluster oder High Availability-Cluster.
Makler
Ein Kafka-Server, der Daten speichert und Clientanforderungen verarbeitet. Je nach Workload können Sie in jedem Cluster 1-30 Broker erstellen. Jeder Broker in einem Cluster ist ein Compute Node, der zum Speichern von Themen verwendet wird.

Mit der Apache Kafka-API oder -CLI können Sie Themen, Partitionen, Datensätze sowie Producer- und Consumer-Vorgänge erstellen und aktualisieren.

Topic
Benutzerdefinierte Kategorien in einem Broker, in dem Daten gespeichert werden. Jedes Thema kann viele Partitionen für die Datenverteilung und parallele Verarbeitung enthalten.
Partitionen
Themen werden in eine vom Benutzer angegebene Anzahl von Partitionen aufgeteilt, in denen Datensätze gespeichert werden. Datensätze werden innerhalb jeder Partition sortiert, und jedem Datensatz wird ein eindeutiger, sequenziell zunehmender Offset zugewiesen.
Datensätze
Schlüsselwert-Datenpaare, die in Themen geschrieben und aus diesen gelesen werden.
Producer
Anwendung, die Datensätze in Themen schreibt.
Verbraucher
Anwendung, die Datensätze aus Themen liest.
Koordinatorcluster
Eine interne Koordinatorinstanz in jedem Cluster, die Aktivitäten in einem Cluster verfolgt, z.B. Partitionen. Ein Cluster mit 2 oder weniger Brokern erhält ein Single Node Coordinator Cluster. Größere Cluster erhalten ein 3-Knoten-Koordinator-Cluster. Sie können keine Details des Koordinatorclusters anzeigen.

Servicelimits

Limit Wert
Cluster pro Mandant 5
Broker pro Cluster 30
Broker pro Mandant 150
Speicher

Min. 50 GB bis Max. 5 TB pro Broker

Max. 150 TB pro Cluster

Ingress pro Cluster Keine Grenzwerte
Egress pro Cluster Keine Grenzwerte
Ingress pro Partition Keine Grenzwerte
Egress pro Partition Keine Grenzwerte
Partitionen Keine Grenzwerte
Max. Clientverbindungen Keine Grenzwerte
Maximale Verbindungsversuche Keine Grenzwerte
Max. Anfragen (pro Sekunde) Keine Grenzwerte
Max. Nachrichtengröße (MB) Keine Grenzwerte
Maximale Anforderungsgröße (MB) Keine Grenzwerte
Max. Fetch-Byte (MB) Keine Grenzwerte
API-Schlüssel Nicht anwendbar
ACLs Keine Grenzwerte
Konfigurationen 100 pro Mandant
Konfigurationsaktualisierungen Keine Grenzwerte

Featurelimits

Feature Support
Exakt einmal Semantik Ja
Schlüsselbasierter komprimierter Speicher Ja
Benutzerdefinierte Connectors Nein
Native ksqlDB-Unterstützung Nein
Öffentliches Networking Nein
Privates Networking Ja
OAuth Nein
Auditlogs Ja
Selbstverwaltete Verschlüsselungsschlüssel Nein
Automatische elastische Skalierung Nein
Streamfreigabe Nein
Kundenkontingente Ja

Clustertypen

In OCI Streaming mit Apache Kafka können Sie zwei Clustertypen erstellen.

Startercluster
Entwickelt für Test- und Entwicklungszwecke, bei denen Hochverfügbarkeit keine wichtige Anforderung ist. Ein Starter-Cluster bietet ein flexibles Setup, bei dem die Cluster zwischen 1 und 30 Brokern haben können.
High-Availability-Cluster
Für Produktionsumgebungen vorgesehen, in denen High Availability unerlässlich ist. Diese Cluster sind mit mindestens 3 Brokern konfiguriert, die über mehrere Verfügbarkeits- oder Faultdomains verteilt sind, um Redundanz und Fehlertoleranz sicherzustellen. Das Cluster kann auf maximal 30 Broker skaliert werden und bietet Zuverlässigkeit und Resilienz für geschäftskritische Workloads.

Clusterstandardoptionen

Prüfen Sie die folgenden Standardoptionen für ein Kafka-Cluster.

Konnektivität
Standardmäßig werden alle Kafka-Cluster mit privater Konnektivität erstellt und können innerhalb des VCN und Subnetzes aufgerufen werden, das während der Clustererstellung angegeben wurde. Wenn mehr VCNs Zugriff auf das Kafka-Cluster benötigen, konfigurieren Sie VCN-Peering.
Broker-Festplattenquoten
Standardmäßig werden Broker-Festplattenkontingente durchgesetzt, um Stabilität zu gewährleisten und eine Überbeanspruchung der Datenträgerressourcen zu verhindern. Wenn eine Broker-Festplatte eine Kapazität von 97% erreicht, sind Producer-Vorgänge ratenbegrenzt, während Consumer-Vorgänge nicht betroffen sind und weiterhin wie erwartet funktionieren. Wenn eine Broker-Festplatte eine Kapazität von 98% erreicht, werden alle Producer-Vorgänge blockiert, während Consumer-Vorgänge weiterhin Ereignisse konsumieren und Offsets ohne Unterbrechung festschreiben können. Sie können dieses Standardverhalten ändern und benutzerdefinierte Speicherkontingente definieren in einer Clusterkonfigurationsdatei.
Cluster-Konfigurationsdatei
Wenn Sie ein Kafka-Cluster erstellen, wird die Clusterkonfigurationsdatei je nach Clustertyp mit Standardeigenschaften erstellt. Die Eigenschafteneinstellungen wurden entwickelt, um Zuverlässigkeit, Haltbarkeit und Benutzerfreundlichkeit in Einklang zu bringen. Sie können die Standarddatei verwenden oder eine benutzerdefinierte Datei erstellen. Eine Liste der konfigurierbaren und nicht konfigurierbaren Eigenschaften finden Sie unter Clusterkonfigurationen verwalten.

High Availability-Cluster

allow.everyone.if.no.acl.found=true
auto.create.topics.enable=false
leader.imbalance.per.broker.percentage=1
default.replication.factor=3
offsets.topic.replication.factor=3
min.insync.replicas=2
transaction.state.log.min.isr=2
transaction.state.log.replication.factor=3
Eigenschaft Standardwert Zweck
allow.everyone.if.no.acl.found wahr Wenn keine ACL für eine Ressource gefunden wird, können alle Benutzer auf das Cluster zugreifen.
auto.create.topics.enable falsch Themen werden nicht automatisch erstellt. Sie müssen explizit für eine bessere Kontrolle erstellt werden.
leader.imbalance.per.broker.percentage 1 Steuert den Schwellenwert für das Ungleichgewicht von Führungskräften pro Broker für das Rebalancing.
default.replication.factor 3 Neue Themen werden mit 3 Replikaten für hohe Haltbarkeit erstellt.
offsets.topic.replication.factor 3 Das interne Offsets-Thema wird 3-mal für Resilienz repliziert.
min.insync.replicas 2 Mindestens 2 Replikate müssen einen Schreibvorgang für die Dauerhaftigkeit bestätigen.
transaction.state.log.min.isr 2 Minimale synchronisierte Replikationen für das Transaktionsstatuslog.
transaction.state.log.replication.factor 3 Replikationsfaktor für das Transaktionsstatuslog.

Startercluster

allow.everyone.if.no.acl.found=true
auto.create.topics.enable=false
leader.imbalance.per.broker.percentage=1
default.replication.factor=1
offsets.topic.replication.factor=1
min.insync.replicas=1
transaction.state.log.min.isr=1
transaction.state.log.replication.factor=1
Eigenschaft Standardwert Zweck
allow.everyone.if.no.acl.found wahr Wenn keine ACL für eine Ressource gefunden wird, können alle Benutzer auf das Cluster zugreifen.
auto.create.topics.enable falsch Themen werden nicht automatisch erstellt. Sie müssen explizit für eine bessere Kontrolle erstellt werden.
leader.imbalance.per.broker.percentage 1 Steuert den Schwellenwert für das Ungleichgewicht von Führungskräften pro Broker für das Rebalancing.
default.replication.factor 1 Neue Themen werden mit 1 Replikat (keine Redundanz) erstellt.
offsets.topic.replication.factor 1 Das interne Offsets-Thema hat ein einzelnes Replikat.
min.insync.replicas 1 Nur 1 Replikat muss einen Schreibvorgang bestätigen.
transaction.state.log.min.isr 1 Minimale synchronisierte Replikationen für das Transaktionsstatuslog.
transaction.state.log.replication.factor 1 Replikationsfaktor für das Transaktionsstatuslog.

Clustergröße und -speicher planen

Lesen Sie die Richtlinien zur Clustergröße für die Optimierung und das Beste aus einem OCI Streaming mit Apache Kafka-Cluster.

Allgemeine Richtlinien

Wenn Sie mehr Durchsatz benötigen, können Sie die folgenden Aktionen implementieren:
  • Erhöhen Sie die Anzahl der Broker im Cluster
  • Die Anzahl der Partitionen im Cluster erhöhen
  • OCPU pro Broker erhöhen
Wenn Sie eine geringere Latenz benötigen, können Sie die folgenden Aktionen implementieren:
  • Verwenden Sie größere Broker mit höherem Speicher
  • Verwenden Sie kleinere Batches, kürzer linger.ms und optimieren Sie den Netzwerkpfad

Wenn die Dauerhaftigkeit wichtiger ist als die Latenz, sollten Sie den Producer-Konfigurationsparameter acks auf all setzen.

Wenn Sie das Cluster nicht planen und konfigurieren, wirkt sich dies auf die Clusterperformance aus.

  • Die Konfiguration von weniger Brokern führt zu niedrigem Durchsatz, hoher Latenz und Brokerüberlastung.
  • Die Konfiguration von weniger Partitionen führt zu schlechter Parallelität und geringer Verbrauchernutzung.
  • Die Konfiguration von Brokern mit unzureichender Leistung führt zu einem hohen Abruf oder zu Latenz, GC-Problemen und instabilen Brokern.
  • Die Konfiguration zu vieler Partitionen auf kleineren Brokern führt zu einer hohen Speichernutzung, einer aufgeblähten Metadaten und einem instabilen Rebalancing.

Performance-Benchmarks

Prüfen Sie die Performancemetriken für Kafka-Cluster mit Arm-basierten Prozessoren, dem Replikationsfaktor auf 3 und dem Producer-Konfigurationsparameter acks auf 1.

Brokerkonfiguration Partitionen Maximaler Producer-Durchsatz Maximaler Consumer-Durchsatz Latenz
3 Broker, jeder mit der folgenden Konfiguration:
  • 2 A1 OCPU
  • 12 GB Arbeitsspeicher
  • 200 GB Blockspeicher
  • 10 VPU
1.000 161.21 MB pro Sekunde 394.38 MB pro Sekunde 50,70 ms
3 Broker, jeder mit der folgenden Konfiguration:
  • 12 A1 OCPU
  • 72 GB Arbeitsspeicher
  • 300 GB Blockspeicher
  • 10 VPU
2.000 368.76 MB pro Sekunde 678.39 MB pro Sekunde 27,79 ms
3 Broker, jeder mit der folgenden Konfiguration:
  • (20) AI OCPU
  • 120 GB Arbeitsspeicher
  • 500 GB Blockspeicher
  • 10 VPU
2.000 505.13 MB pro Sekunde 710.82 MB pro Sekunde 21,11 ms
18 Broker, jeder mit der folgenden Konfiguration:
  • 2 KI OKKU
  • 12 GB Arbeitsspeicher
  • 300 GB Blockspeicher
  • 10 VPU
2.000 379.39 MB pro Sekunde 690.27 MB pro Sekunde 80,18 ms
18 Broker, jeder mit der folgenden Konfiguration:
  • 12 KI OKKU
  • 72 GB Arbeitsspeicher
  • 500 GB Blockspeicher
  • 10 VPU
4.000 788.73 MB pro Sekunde 998.11 MB pro Sekunde 74,53 ms
18 Broker, jeder mit der folgenden Konfiguration:
  • (20) AI OCPU
  • 120 GB Arbeitsspeicher
  • 1000 GB Blockspeicher
  • 10 VPU
4.000 1.08 GB pro Sekunde 1.15 GB pro Sekunde 71,29 ms
30 Broker mit der folgenden Konfiguration:
  • 2 KI OKKU
  • 12 GB Arbeitsspeicher
  • 300 GB Blockspeicher
  • 10 VPU
4.000 617.60 MB pro Sekunde 1.02 GB pro Sekunde 98,27 ms
30 Broker mit der folgenden Konfiguration:
  • 12 KI OKKU
  • 72 GB Arbeitsspeicher
  • 500 GB Blockspeicher
  • 10 VPU
6.000 1.65 GB pro Sekunde 1.34 GB pro Sekunde 65,81 ms
30 Broker mit der folgenden Konfiguration:
  • (20) AI OCPU
  • 120 GB Arbeitsspeicher
  • 1000 GB Blockspeicher
  • 10 VPU
6.000 2.41 GB pro Sekunde 2.09 GB pro Sekunde 56,82 ms

Die Leistungskennzahlen hängen von mehreren Faktoren ab, und Verbesserungen in einer Konfiguration könnten zu Kompromissen bei anderen führen.

Beispiel: Die Durchsatzzahlen variieren je nach Faktoren wie Nachrichtengröße, Komprimierungstyp, Batchgröße und linger.ms. Eine höhere Batch-Größe kann den Durchsatz erhöhen, aber auch zu einer höheren Latenz führen.

Die Erhöhung der Anzahl der Partitionen verbessert in der Regel den Durchsatz und verbessert die Producer-Performance. Es erhöht jedoch auch die Ressourcennutzung von Produzenten und Verbrauchern und führt zu mehr Metadaten-Overhead. Dies kann die Verwaltung von Leader-Wahlen und In-Sync-Replikaten (ISR) verlangsamen und möglicherweise die Latenz von Produktions- und Abrufanforderungen erhöhen.

Sie müssen die Parameter entsprechend den Anforderungen optimieren.

  • Um die Latenz zu optimieren, reduzieren Sie batch.size und linger.ms, und vermeiden Sie eine starke Komprimierung.
  • Um den Durchsatz zu maximieren, erhöhen Sie batch.size, aktivieren Sie die Komprimierung, und verwenden Sie mehr Partitionen und Broker, um horizontal zu skalieren.

Überwachen Sie Latenz- und Durchsatzmetriken immer genau, und optimieren Sie das Cluster iterativ basierend auf realen Workload-Mustern.

Migrieren

Sie können Daten aus einem selbstverwalteten Apache Kafka-Cluster in ein OCI Streaming mit Apache Kafka-Cluster migrieren.

Die empfohlene Lösung für diesen Migrationsanwendungsfall ist das Erstellen eines MirrorMaker 2.0-Connectors in einem Connect-Cluster.

Im Folgenden finden Sie eine Beispielkonfiguration für client.properties:
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
ssl.truststore.location=</path/to/truststore.jks>
ssl.truststore.password=<truststore-password>
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<username>" password="<password>";