Apache Kafka ist die zentrale Datenpipeline vieler moderner Unternehmen. Besonders bei enormen Datenmengen und komplexen Infrastrukturen wie bei Datadog stößt Kafka jedoch an seine Grenzen. Die Herausforderung liegt darin, bei massiver Skalierung eine ununterbrochene Verfügbarkeit, hohe Performance und minimale Verzögerungen sicherzustellen. Datadog begegnet diesen Herausforderungen mit der Entwicklung einer spezialisierten Streaming Plattform, die Kafka auf eine völlig neue Ebene bringt. Diese Plattform schafft zuverlässige, skalierbare Datenströme, die den Betrieb auch in multilokalen, hochdynamischen Umgebungen gewährleisten.
Kafka im Großmaßstab – die Herausforderungen bei Datadog Datadog verarbeitet täglich hunderte Billionen Observability-Events. Das bedeutet massive Kafka-Deployments mit hunderten Clustern, tausenden Topics und Millionen Partitionen, die sich über Kubernetes- und Cloud-Umgebungen erstrecken. Solch ein Ausmaß führt täglich zu Problemen, die in kleineren Installationen selten auftreten. Dazu zählen etwa das Füllen von Speichermedien oder der Ausfall von Brokern. In dieser Größenordnung darf es keine Unterbrechungen geben, und Fehler müssen in Echtzeit umgeleitet und behoben werden können, ohne manuelle Eingriffe oder zeitaufwändige Neustarts.
Traditionelle Kafka-Architekturen arbeiten oft statisch: Produzenten und Konsumenten sind fest an bestimmte Topics und Cluster gebunden. Diese Starrheit verhindert schnelle Reaktionen bei Problemen. Wartungsarbeiten oder Ausfälle führen hier zu Verzögerungen mindestens bis zur Wiederherstellung zentraler Komponenten. Die Lösung von Datadog setzt genau an diesem Punkt an, indem das System flexibler und dynamischer gestaltet wird. Designprinzipien der Streaming Plattform Die Streaming Plattform abstrahiert die Komplexität von Kafka und verwaltet eine multifunktionale Steuerungsebene (Control Plane), die Clusterressourcen dynamisch orchestriert.
Kafka wird nicht mehr als starres System angesehen, sondern wie austauschbare, modulare Hardware. Diese Plattform erlaubt ständige Anpassung und lastabhängige Verteilung der Verarbeitungslasten, ersetzt automatisch fehlerhafte Komponenten und garantiert so einen kontinuierlichen Datenfluss. Der Clou besteht darin, Anwendungen von der direkten Verbindung zu Kafka-Topics oder -Clustern zu entkoppeln. Stattdessen erfolgt die Interaktion über stabile Stream-Identifikatoren, welche unabhängig von der zugrundeliegenden Kafka-Infrastruktur sind. Dadurch kann die Plattform Infrastrukturänderungen in Echtzeit durchführen und Datenströme nahtlos umleiten, ohne dass die Anwendungen neu konfiguriert oder neu deployed werden müssen.
Resiliente Pipelines für maximale Verfügbarkeit Die zentrale Einheit der Streaming Plattform sind sogenannte Streams. Diese unterscheiden sich grundlegend von herkömmlichen Kafka-Topics, da sie über mehrere Kafka-Cluster, Verfügbarkeitszonen und Kubernetes-Cluster hinweg operieren können. Die Folge ist eine robuste Grundstruktur, die Single Points of Failure vermeidet und Elastizität bei Ausfällen bietet. Die durch Streams geschaffene Abstraktion ermöglicht also nicht nur eine verteilte Verarbeitung, sondern auch ein transparentes Failover. Sollte ein Cluster ausfallen, wird sofort ein Ersatz-Topic erzeugt, auf das Produzenten automatisch umgeschaltet werden.
Konsumenten verarbeiten verbliebene Daten im alten Topic, bevor sie ebenfalls nahtlos zum neuen Stream wechseln. Das Ergebnis ist eine nie unterbrochene Datenverarbeitung selbst bei unvorhergesehenen Störungen. Darüber hinaus werden Failovers nicht nur reaktiv bei Problemen aktiviert, sondern auch proaktiv genutzt, um den Traffic gleichmäßig zu verteilen, Cluster zu dekommissionieren oder Partitionen dynamisch anzupassen. Dies spart enorm viel Zeit und Ressourcen gegenüber statischen Kafka-Setups. Neudefinierte Konsumentensemantik für Skalierbarkeit und Zuverlässigkeit Das traditionelle Kafka-Modell setzt sehr stark auf strikte Reihenfolgen und Single-Pointer-Offsets, was zwar einfache Garantien bietet, in großen Systemen aber zu Engpässen führt.
Datadog hat diesen Ansatz aufgelockert und setzt stattdessen auf eine at-least-once Zustellung mit gelockerter Ordnung auf Verarbeitungsebene. Diese Änderung ermöglicht eine massive Parallelisierung der Verarbeitung, da einzelne Events unabhängig betrachtet werden können. Die Reihenfolge wird später in einem dedizierten Event Store wiederhergestellt. Durch diese Architektur lässt sich die Verarbeitungsleistung signifikant erhöhen, wodurch Petabyte von Daten effizient gehandhabt werden können. Die Rolle des Assigners: Echtzeit-Multi-Cluster-Koordination Die einfache Gruppenkoordination von Kafka stößt in Multi-Cluster-Szenarien an ihre Grenzen, da sie stark auf Session-Timeouts angewiesen ist, die mehrere Sekunden oder Minuten dauern können.
Datadogs Antwort darauf ist der Assigner, ein maßgeschneiderter Koordinator, der konstant Cluster-Gesundheit, Ressourcenverbrauch und Lastverteilung überwacht. Dieser sorgt für eine Reaktionszeit im Sekundenbereich und ermöglicht so schnelle Failovers und Lastumverteilungen. Zusätzlich führt der Assigner intelligente Lastbalancierung ein, basierend auf realen Metriken wie CPU-Auslastung und verfügbaren Ressourcen. Dadurch kann die Plattform ressourceneffizient betrieben und kapazitätsbedingte Engpässe automatisch gemanagt werden. Herausforderung Head-of-Line Blocking und smarte Commit-Log-Verbesserungen Ein wesentliches Problem des Kafka-Modells ist das Head-of-Line Blocking.
Wenn ein Event nicht verarbeitet werden kann, blockiert es alle folgenden Events in der Partition, was zu erheblichen Verzögerungen führt. Datadog begegnet diesem Problem mit der Einführung von Stream-Lanes – abgeschotteten Prioritätskanälen innerhalb eines Streams, die unterschiedliche QoS-Anforderungen bedienen. So fließt hochpriorisierter Echtzeit-Traffic durch separate Lanes, die nicht durch langsamere oder fehlerhafte Events blockiert werden. Ein spezieller Dead-Letter-Queue-Kanal sammelt problematische Events (sogenannte Poison Pills). Das Löschfortschritt innerhalb der Partition bleibt erhalten, ohne die Datenintegrität zu gefährden.
Darüber hinaus wurde die Commit-Log-Struktur verfeinert. Anstelle des Kafka-Standardmodells mit einem einzelnen Offset-Pointer pro Partition werden nun mehrere Offsets und Offset-Bereiche parallel getrackt. Dies ermöglicht es Konsumenten, Live-Daten zu verarbeiten und gleichzeitig ältere oder problematische Events im Hintergrund erneut zu bearbeiten. Flexiblere Offset-Verwaltung erhöht die Resilienz und Performance bei komplexen Fehlerbildern signifikant. Echtzeit-Lag-Monitoring zur Aufrechterhaltung der Datenverarbeitung Die Latency oder Verzögerung zwischen Daten-Eingang und Verarbeitung ist eine kritische Metrik.
Kafka liefert standardmäßig nur Offset-Differenzen als Lag-Wert, was aber wenig aussagekräftig ist. Um Echtzeit-Einblicke in zeitlichen Lag zu erhalten, nutzt Datadog die erweiterten Commit-Log-Metadaten, in denen auch Zeitstempel der Events verankert sind. So kann der Control Plane anhand von __consumer_offsets Topics zeitpunktgenaue Lag-Messungen über alle Cluster und Consumergruppen hinweg ermitteln. Diese Daten werden als feingranulare Metriken in Datadog-Visualisierungen und Alerts verwendet. Bei Verzögerungen reagiert das System sofort, indem es Lasten neu verteilt und die Prioritäten von Datenflüssen anpasst, um kritische Pfade frei zu halten.
libstreaming – ein performanter, einheitlicher Kafka-Client Mit steigender Komplexität wurde die Abhängigkeit von Standard-Kafka-Clients zunehmend unzureichend. Insbesondere führte der Versuch, Zstandard-Kompression zu nutzen, zu so genannten „zstd bombs“ – decompressierte Batches wurden extrem groß und blockierten Konsumenten. Standardclients wie rdkafka reagierten darauf instabil und erhöhten den Speicherbedarf rasant, was zu Systemabstürzen führte. Versuche, die Clients durch Patches zu verbessern, waren zwar hilfreich, aber langfristig nicht tragfähig. Als Antwort entwickelte Datadog libstreaming, einen speziell für ihre Anforderungen optimierten Kafka-Client in Rust mit Bindings für mehrere Programmiersprachen.
Durch die Integration von Business-Logik in einem einheitlichen Client gewährleistet libstreaming konsistente Features und Metriken sowie höchste Performance und Stabilität. Der selbstentwickelte Client erlaubt feinste Kontrolle über die Datenhandhabung, komprimiert effizienter, und optimiert Lese- und Schreibvorgänge für maximale Durchsatzraten bei minimaler Latenz. Die Lösung verzichtet bewusst auf zentrale gRPC-Proxies, um die extrem hohen Datendurchsätze direkt in den Anwendungen ohne Engpässe zu gewährleisten. Zukünftige Entwicklungen und kontinuierliche Verbesserung Die Streaming Plattform von Datadog ist kein abgeschlossenes Produkt, sondern ein kontinuierlich wachsendes System, das beständig weiterentwickelt wird. Aktuell liegt der Fokus darauf, die Speicherinfrastruktur von Kafka zu optimieren, die Verfügbarkeit trotz Ausfällen von Verfügbarkeitszonen weiter zu erhöhen und die Kosteneffizienz durch Nutzung von Kafka Tiered Storage zu steigern.
Auch die Verbesserung der Commit-Log-Mechanismen steht im Vordergrund. Dazu gehört die Forschung an prädikatbasiertem Filtern, flexiblerem Offset-Tracking und besserem Umgang mit Reprocessing-Szenarien. Ziel ist es, Konsumenten noch stärker von Zwangsbindung an Partitionen zu lösen und so die Skalierbarkeit und Zuverlässigkeit der gesamten Streaming Pipeline weiter anzuheben. Diese Innovationskraft spiegelt den Anspruch von Datadog wider, das Potenzial von Kafka über traditionelle Grenzen hinaus auszuschöpfen und stetig neu zu denken. Für Fachleute, die sich für große Echtzeit-Datenherausforderungen begeistern, bietet Datadog spannende Möglichkeiten in einem technisch anspruchsvollen Umfeld.