Cloudflare hat ein neues serverloses Event-Streaming-Produkt namens K2 vorgestellt, und das Unternehmen räumt ein, dass seine eigene Infrastruktur zu ungewöhnlich für Standardsoftware wie Apache Kafka war.
Micah Wyldes und Marc Selwans Ankündigung besagt, dass Cloudflare für sein Basin Pipelines-Projekt einen langlebigen Puffer am Edge benötigte. Pipelines fungiert als Stream-Processing-Engine, die auf einem Pull-basierten Design aufbaut, was bedeutet, dass ein anderes System Ereignisse zurückhalten muss, bis sie gelesen, verändert und dann in R2 platziert werden. Das Unternehmen verspricht, dass es Ereignisse niemals verwirft, sobald sie in den Pipelines Stream akzeptiert wurden; diese Speicherung muss dauerhaft sein — sie darf nicht verloren gehen, auch nicht über längere Zeiträume hinweg.
Die meisten Unternehmen greifen auf Apache Kafka zurück, wenn sie diese Art von Setup benötigen. Cloudflare hingegen befindet sich am Edge, verteilt über eine riesige Anzahl von Maschinen in über 335 Städten. Aufgrund seines Designs kann es herkömmliche verteilte Systemsoftware wie Kafka häufig nicht verwenden und muss stattdessen neu gestalten, wie diese Systeme aufgebaut und am Laufen gehalten werden.
Aufbau eines Logs auf R2
Anstatt eine neue verteilte Datenbank von Grund auf neu zu erstellen, entschied sich Cloudflare, auf das Zustandsprimitiv zu setzen, das es bereits besaß: R2, sein Objektspeichersystem. Diese Art von Speicherung kombiniert extrem dauerhafte Speicherung (11 9s!) mit stark konsistenten APIs. Durch die Verlagerung von Replikation und Konsens in die Speicherschicht wird die Anwendungsschicht — in diesem Fall K2 — radikal vereinfacht, günstiger und leistungsstärker. Es trennt außerdem Compute und Storage voneinander, sodass jede Komponente unabhängig voneinander skaliert werden kann.
R2 unterstützt keine Anhänge, die normalerweise auf einem Log verwendet würden. K2 geht damit um, indem es Schreibvorgänge im Speicher auf einem Edge-Service sammelt, einen kurzen Intervall abwartet, bis Daten auftauchen, und dann alle Ereignisse als Segmentdatei auf einmal schreibt. Die Reihenfolge und streng aufsteigende Offsets stammen von R2s atomaren Operationen, wodurch die Notwendigkeit eines separaten Koordinierungsdienstes entfällt.
Queues, Streams und Pipelines
Cloudflare bietet derzeit Queues und Basin Pipelines an. Queues konzentrieren sich darauf, den Überblick über einzelne Elemente kostspieliger oder zeitaufwändiger Arbeiten zu behalten, die eine asynchrone Fertigstellung erfordern. Sie handhaben komplexe Logik für jedes Arbeitselement, wobei Wiederholungen, Verzögerungen und Dead-Letter-Queues für fehlgeschlagene Versuche zu den Funktionen gehören.
K2s Design konzentriert sich auf die Datenübertragung im großen Maßstab, die langfristige Aufbewahrung und den Fan-Out-Konsum. Es verarbeitet Nachrichten in Batches, wenn sie produziert und konsumiert werden, eine Funktion, die eine effiziente Verarbeitung ermöglicht, aber auf Kosten von Wiederholungen auf Nachrichtenebene geht. Dieser Batching-Ansatz ist der Grund für die höhere Produzenten-Latenz im Vergleich zu Queues.
Wenn die endgültige Ausgabe in Objektspeicher oder Iceberg-Tabellen landet, verweist das Unternehmen auf Pipelines. Für eine benutzerdefinierte Verarbeitung oder ein beliebiges anderes Ziel ändert sich die Empfehlung zu K2.
Was die Latenzkosten verursacht
Der Hauptnachteil von R2 ist die erhöhte Produktionslatenz. Da das Schreiben in Objektspeicher länger dauert als die Verwendung einer lokalen Festplatte, muss K2 warten, bis der lokale Batch aufgebaut ist, bevor der Schreibvorgang gestartet werden kann. Zum Start führt dies zu einer Produktionslatenz von etwa 1 Sekunde beim 99. Perzentil der Antwortzeiten.
Ein anstehendes technisches Deep Dive von Cloudflare wird weitere spezifische Details darüber liefern, wie K2 konzipiert ist.
Erste Schritte
Die öffentliche Beta für K2 ist jetzt live, und Sie können Ihren ersten Stream in Sekunden mithilfe der Anleitung einrichten. Es gibt verschiedene Möglichkeiten, Streams zu erstellen: cf, Wrangler, das Dashboard oder andere Tools.
| Primitive | Zweck |
|---|---|
| Queues | Verfolgen Sie einzelne Elemente kostspieliger oder zeitaufwändiger Arbeiten |
| K2 Streams | High-Scale-Datenbewegung, langfristige Speicherung, Fan-Out-Konsum |
| Basin Pipelines | Serverlose Ingestion zur Transformation und zum Schreiben von Ereignissen in R2- oder Iceberg-Tabellen |
K2 entstand aus der eigenen Architektur von Cloudflare, die den Aufbau konventioneller verteilter Systeme unpraktisch machte. Die Ankündigung beschreibt das Ergebnis: ein dauerhaftes Event-Streaming-Primitive, das auf R2s dauerhaften Speicher zurückgreift.
Quelle: “Cloudflare K2: serverless event streams,” cloudflare.com.
Das Notizbuch abonnieren.
Die besten Geschichten des Tages und jedes neue Urteil, in klarem Deutsch, um sieben im Postfach. Eine Mail am Tag, nicht mehr.

