Streaming mit Apache Kafka - Überblick

Oracle Cloud Infrastructure (OCI) Streaming mit Apache Kafka ist ein vollständig verwalteter OCI-Service, mit dem Sie Kafka-Cluster in einem OCI-Mandanten mit allen Funktionen von Apache Kafka erstellen und ausführen können.

Apache Kafka ist eine Open-Source-Event-Streaming-Plattform, mit der Daten-Streaming-Anwendungen in Echtzeit erstellt werden. Mit Apache Kafka können Sie:

  • Schreiben und Lesen von Ereignisströmen
  • Speicher-Streams von Ereignissen
  • Verarbeitung von Ereignisströmen in Echtzeit oder später

Mit Streaming mit Apache Kafka erhalten Sie alle Funktionen von Apache Kafka, ohne den Overhead für das Provisioning und die Verwaltung der zugrunde liegenden Infrastruktur.

Bild, das alle Anwendungsfälle von OCI Streaming mit Apache Kafka zeigt.

Features

Streaming mit Apache Kafka wurde mit den folgenden Features erstellt:

Vollständig verwaltet
Streaming mit Apache Kafka wird vollständig verwaltet und automatisiert Aktivitäten wie Patching, Upgrades, Backups, Hochverfügbarkeit, regionsübergreifende Replikation, Skalierung und Performance-Management.
Dauerhaftigkeit und Dauerhaftigkeit
Jedes Cluster ist mit High Availability- und Speicherredundanz über Availability-Domains oder Faultdomains hinweg konfiguriert. Sie können entweder ein Cluster mit einem einzelnen Broker für die Entwicklung oder Testmandanten erstellen oder ein Cluster mit mindestens 3 Brokern für Produktionsmandanten erstellen, um High Availability bereitzustellen.
Streaming mit Apache Kafka erkennt und repariert automatisch gängige Clusterausfallszenarios. Dadurch wird sichergestellt, dass die Producer- und Consumer-Anwendungen bei Schreib- und Lesevorgängen nur minimal unterbrochen werden. Wenn Streaming mit Apache Kafka einen Brokerfehler erkennt, wird der Fehler entweder minimiert oder der fehlerhafte oder nicht erreichbare Broker durch einen neuen ersetzt. Wenn möglich, wird der vorhandene Speicher vom ausgefallenen Broker wiederverwendet, um die Datenmenge zu minimieren, die Apache Kafka replizieren muss. Die Auswirkungen auf die Verfügbarkeit sind auf die Zeit begrenzt, die für Streaming mit Apache Kafka erforderlich ist, um den Fehler zu erkennen und wiederherzustellen. Nach der Wiederherstellung können Producer- und Consumer-Anwendungen weiterhin mit denselben Broker-Endpunkten wie zuvor kommunizieren und so einen nahtlosen Betrieb gewährleisten.
Apache Kafka-Kompatibilität
Das Streaming mit Apache Kafka ist zu 100% mit Apache Kafka-APIs kompatibel, sodass Sie Anwendungen verwenden können, die für Apache Kafka geschrieben wurden, ohne den Code neu zu schreiben.
Integrierte OCI-Services
  • OCI Vault zum sicheren Speichern und Verwalten von Superuser-Zugangsdaten verwenden
  • OCI Monitoring für Clustermetriken verwenden
  • OCI Logging für Logs auf Clusterebene verwenden

Anwendungsfälle

Verwenden Sie Streaming mit Apache Kafka in den folgenden Szenarios:

Change Data Capture
Change Data Capture (CDC) ist ein Stil des Anwendungsdesigns, bei dem Änderungen am Anwendungsstatus als zeitgesteuerte Folge von Datensätzen protokolliert werden. OCI Streaming mit der Unterstützung von Apache Kafka für die Speicherung von Cloud-Logdaten macht es zu einem hervorragenden Backend für eine Anwendung, die in diesem Stil entwickelt wurde. Sie können beliebige Open-Source-Kafka-Connectors oder Oracle Golden Gate in einer virtuellen Maschine (VM) bereitstellen, mit der die Quelldatenbanken basierend auf einer Aktualisierungszeitstempelspalte nach neuen oder geänderten Daten abgefragt und die Daten einfach mit Apache Kafka in OCI Streaming übertragen werden. Beispiel: E-Commerce-Unternehmen verwenden CDC mit Kafka, um Auftragsaktualisierungen in ihrer Datenbank zu verfolgen, um die Auftragsverarbeitung und andere Microservices für die Auftragsabwicklung zu initiieren.
Bild mit der Change Data Capture-Architektur
Metrik- und Logerfassung
Verwenden Sie OCI Streaming mit Apache Kafka als Metriken oder Logprozessor aus verschiedenen Quellen. Logaufnahme-Tools wie Fluentd, Logstash oder die Kafka Producer-API können Protokolle aus verschiedenen Anwendungen erfassen und sie zur Datenanreicherung und -aggregation in Kafka-Themen platzieren. Mit Apache Kafka-APIs können Sie die Daten anreichern, indem Sie die Details der Logs abstrahieren und an nachgelagerte Analysetools zur weiteren Verarbeitung und erweiterten Logsuchfunktionen senden.
Bild mit der Aufnahmearchitektur für Metriken und Logs
Echtzeitanalysen
Verwenden Sie OCI Streaming mit Apache Kafka, um kontinuierliche Datenströme von IOT-Geräten oder anderen Upstream-Anwendungen zu verarbeiten und zu analysieren, um Echtzeiteinblicke, Anomalieerkennung und Vorhersageanalysen zu erhalten. Zum Beispiel nutzen Finanzinstitute den Service, um Marktdatenfeeds zu verarbeiten, Handelsanomalien zu erkennen und Echtzeit-Handelsentscheidungen zu treffen. Einzelhändler analysieren Kundenverhalten und -präferenzen in Echtzeit, um personalisierte Empfehlungen und Werbeaktionen anzubieten.
Bild mit Echtzeit-Analysearchitektur
Erfassung von Web- und App-Aktivitätsdaten
Verwenden Sie OCI Streaming mit Apache Kafka, um eine Benutzeraktivitäts-Tracking-Pipeline als eine Gruppe von Feeds zum Veröffentlichen und Abonnieren in Echtzeit neu zu erstellen. Diese Feeds können für eine Reihe von Anwendungsfällen abonniert werden, einschließlich Echtzeitverarbeitung, Echtzeitüberwachung und Laden in Hadoop- oder Offline-Data Warehousing-Systeme zur Offlineverarbeitung und -berichterstattung. Sie können diese Lösung für folgende Zwecke verwenden:
  • Clickstream: Clickstream-Anwendungsfälle beinhalten das Sammeln von Website-Aktivitätsdaten von mehreren Herstellern und die Analyse der Daten in Echtzeit, um Empfehlungen zu geben, wie zum Beispiel Produkte zu kaufen, Nachrichtenartikel zu lesen und Videos zu sehen.
  • Spielanalyse: Spieleunternehmen überwachen ständig Netzwerkverzögerungen, Benutzerverhalten und Aktivitäten im Spiel, um Kunden Mikrotransaktionen im Spiel anzubieten, die Netzwerklast auszugleichen, die Parameter der Rendering-Engine zu ändern und vieles mehr. Alle diese Aktionen werden in Echtzeit in der Reihenfolge von Millisekunden bis zu einigen Sekunden ausgeführt.
Bild zur Aufnahme von Aktivitätsdaten für Web und Mobilgeräte
Messaging
Nutzen Sie OCI Streaming mit Apache Kafka, um die Komponenten großer Systeme zu entkoppeln. Producer und Consumer können OCI Streaming mit Apache Kafka beispielsweise als asynchronen Nachrichtenbus verwenden und unabhängig und in ihrem eigenen Tempo handeln.
Abbildung der Messaging-Architektur

OCI Streaming mit Apache Kafka Vs OCI Streaming verwenden

Sehen Sie sich die Details für OCI Streaming mit Apache Kafka und OCI Streaming an, um die beste Lösung für Ihre Streaminganforderungen zu finden.

OCI Streaming OCI OCI-Streaming mit Apache Kafka
Empfohlen als Messaging-Bus für App-to-App-Kommunikation. Ideal für kleine bis mittlere Workloads mit weniger als 500 Partitionen pro Region und Mandant. Empfohlen für verteilte Datenspeicherung und Echtzeit-Datenverarbeitung, einschließlich CDC, Stream-Analysen und Verarbeitung von IOT-Daten, ohne Begrenzung der Anzahl der Partitionen.
Verwaltet und serverlos Verwaltet, aber nicht serverlos
Partielle Kompatibilität mit Apache Kafka 100% kompatibel mit Apache Kafka
Performancelatenz ~ 200 ms im Durchschnitt, wenn Cluster richtig optimiert ist. Performancelatenz weniger als 100 ms, wenn das Cluster ordnungsgemäß optimiert ist.
Mehrmandantenfähig: Ein einzelnes Cluster enthält mehrere Kundenmandanten. Einzelner Mandant: Jedes Cluster ist für einen einzelnen Mandanten dediziert.
Authentifizierung und Autorisierung mit IAM. Authentifizierung mit mTLS oder SASL/SCRAM und Autorisierung mit ACL.
Soft-Limit 15 und Hard-Limit 500 auf Partitionen Kein Limit
Speicheraufbewahrung 7 Tage Kein Limit
Kein Speichergrößengrenzwert Speichergrößenlimit 16 TB pro Broker
Schreibdurchsatz pro Partition 1 MB pro Sekunde und Lesedurchsatz pro Partition 2 MB pro Sekunde. Durchsatz ~ 10 MB pro Sekunde.

Der Standarddurchsatz pro Partition in Apache Kafka ist kein festes, festes Limit, sondern eine Kombination von Faktoren. Es wird auf etwa 10 MB pro Sekunde pro Partition geschätzt. Der maximale Durchsatz pro Partition hängt von der zugrunde liegenden Infrastruktur und den Konfigurationen ab, wie Batching-Größe, Komprimierungscodec, Replikationsfaktor und Bestätigungstyp.

Max. Nachrichtengröße 1 MB Die maximale Standardgröße für Nachrichten wird auf 1 MB gesetzt, damit Broker den Speicher effektiv verwalten können. Dies kann in der Clusterkonfiguration geändert werden. Keine Begrenzung der maximalen Größe, aber sehr große Nachrichten werden in Apache Kafka nicht empfohlen und als ineffektiv und anti-Muster betrachtet.
Skalierung wird nicht unterstützt Skalieren Sie die Anzahl der Broker auf bis zu 30 Broker pro Cluster, und skalieren Sie die Anzahl der OCPUs bis zum von den Compute-Ausprägungen definierten Maximum.
50 Consumer-Gruppen pro Thema Keine Begrenzung, aber je mehr Nutzungsgruppen, desto mehr Netzwerknutzung.
Komprimiertes Thema für Funktionalitäten, idempotentes Produzieren, Transaktion und Stream-API nicht verfügbar. Funktionalitäten kompaktiertes Thema, idempotent produzieren, Transaktion, Stream-API unterstützt.
Begrenzte niedrige Kardinalitätsmetriken verfügbar Umfangreiche hohe Kardinalitätsmetriken verfügbar

Ressourcen-IDs

Streaming mit Apache Kafka unterstützt Cluster und Arbeitsanforderungen als Oracle Cloud Infrastructure-Ressourcen. Die meisten Ressourcentypen verfügen über eine eindeutige, von Oracle zugewiesene ID, die als Oracle Cloud-ID (OCID) bezeichnet wird. Informationen zum OCID-Format und zu weiteren Möglichkeiten zur Identifizierung Ihrer Ressourcen finden Sie unter Ressourcen-IDs.

Regionen und Availability-Domains

Oracle hostet seine OCI-Services in Regionen und Availability-Domains. Eine Region ist ein erworbener geografischer Bereich. Bei einer Availability-Domain handelt es sich dabei um mindestens einen geografischen Bereich innerhalb einer Region. Streaming mit Apache Kafka wird in allen Regionen der Realm OC1 gehostet.

Authentifizierung und Autorisierung

Jeder Service in Oracle Cloud Infrastructure kann zur Authentifizierung und Autorisierung für alle Schnittstellen (Konsole, SDK oder CLI und REST-API) in IAM integriert werden.

Ein Administrator in der Organisation muss Gruppen , Compartments  und Policys  einrichten, die den Zugriffstyp sowie den Zugriff der Benutzer auf Services und Ressourcen steuern. Beispiel: Die Policys steuern, wer neue Benutzer erstellen, das Cloud-Netzwerk erstellen und verwalten, Instanzen erstellen, Buckets erstellen, Objekte herunterladen kann usw. Weitere Informationen finden Sie unter Erste Schritte mit Policys.

Möglichkeiten für den Zugriff auf Streaming mit Apache Kafka

Auf Oracle Cloud Infrastructure (OCI) können Sie über die Konsole (eine browserbasierte Schnittstelle), die REST-API oder die OCI-CLI zugreifen. Anweisungen zur Verwendung der Konsole, API und CLI sind in verschiedenen Themen in dieser Dokumentation enthalten. Eine Liste der verfügbaren SDKs finden Sie unter Software Development Kits und Befehlszeilenschnittstelle.

Konsole: Um mit der Konsole auf Streaming mit Apache Kafka zuzugreifen, müssen Sie einen unterstützten Browser verwenden. Um zur Anmeldeseite der Konsole zu wechseln, öffnen sie das Navigationsmenü am Anfang dieser Seite, und wählen Sie Infrastrukturkonsole aus. Dort werden Sie aufgefordert, Ihren Cloud-Mandanten, Benutzernamen und Ihr Kennwort einzugeben.

API: Um über APIs auf Streaming mit Apache Kafka zuzugreifen, bietet die REST-API-Dokumentation die meisten Funktionen, erfordert jedoch Programmierkenntnisse. In API-Referenz und -Endpunkten sind Endpunktdetails und Links zu den verfügbaren API-Referenzdokumenten enthalten, einschließlich Streaming mit der Apache Kafka-API. Mit Streaming mit der Apache Kafka-API können Sie die Kafka-Cluster und Konfigurationsdateien erstellen und verwalten. Verwenden Sie die Apache Kafka-APIs für Clientvorgänge.

CLI: Mit der OCI-CLI können Sie die Kafka-Cluster und Konfigurationsdateien erstellen und verwalten. Verwenden Sie die Apache Kafka-CLIs für Clientvorgänge. Verwenden Sie die Cloud Shell-Umgebung, um die CLIs auszuführen.