Hallo Habr! Um mich herum hat sich ein positiver Informationshintergrund zum Thema Event-Handling durch Kafka Streams gebildet. Dieses Tool besticht durch zahlreiche Videoberichte und Artikel zu Habré, detaillierte Dokumentation, verständliche API und schöne Architektur. Einige meiner Freunde und Kollegen nutzen es, um ihre Systeme zu entwickeln. Aber was passiert im wirklichen Leben, wenn diese Systeme in Produktion gehen?
In diesem Artikel werde ich die Einführung in Kafka Streams weglassen, vorausgesetzt, der Leser ist bereits damit vertraut, und ich werde am Beispiel eines ziemlich geladenen Systems über unsere Erfahrungen mit dieser Bibliothek sprechen.
Kurz über das Projekt
Ein internes Team arbeitet zusammen mit Partnern an Ad Exchange, um den Anzeigenverkehr weiterzuverkaufen. Wir haben die Besonderheiten solcher Werkzeuge bereits in einem Artikel über Habré beschrieben . Mit zunehmender Anzahl von Partnern zwischen SSP und DSP steigt die Belastung der Exchange-Server. Und um den Wert der Börse selbst zu steigern, müssen wir detaillierte Analysen aus diesem Datenverkehr sammeln. Hier haben wir versucht, Kafka Streams zu verwenden.
Die Implementierung eines neuen Tools in Ihrer Produktion ist immer ein Risiko. Wir waren uns dessen bewusst, haben es aber in Kauf genommen, da Kafka Streams im Allgemeinen konzeptionell gut für die Berechnung von Aggregaten geeignet sein sollten. Obwohl der erste Eindruck großartig war, werde ich über die Probleme sprechen, die dazu geführt haben.
, , . , - Kafka Streams. .
. , , - . , " ". , : , , ..
Kafka Streams: groupBy aggregate . , : changelog-. Kafka log compaction. ?
, , Kafka Streams repartition-, , changelog-. , " " UUID. ? , , repartition-. Kafka. , ?
, 100 . +600 (300 300 ). . Kafka Streams. , .
, , . Kafka Streams. - . , "" , Kafka Streams . / repartition-. , , . , .. , . - ( , ).
, . . . , Kafka Streams, . state-store RocksDB ( ), .
, , , - , . . , , - , , all(), . , . . , RocksDB Postgres.
, . , , HTTP? - Kafka Streams: , - . - . , - . . . ? Kafka Streams , .
Kafka Streams
. , , , . - Kafka, Kafka Streams DEAD , . , Kafka Spring @KafkaListener. , .
Kafka Streams : . , - Kafka Streams. . , . - . , - , . - Kafka Streams . : , Kafka Streams. " " , , .
Kafka Streams , watchdog: Kafka Streams, , .
, Kafka Streams Spring, StreamsBuilderFactoryBean, CleanupConfig. , RocksDB. , , changelog-. , .
KStream-KStream Join
: . Kafka . . , production.
Kafka Streams . , , DevOps . , .
, Kafka, , - : " ? ". . Kafka Streams.
, - (co-partitioning), , , , . ?
, : , , . production, , . , , , . Kafka Streams . , . Kafka Streams , -, .
, , . , Kafka Streams, , Kafka Streams . : Matthias J. Sax , , Kafka Streams application.id. , , , .
, . . , , - KSQL.
: , .
P.S. . VK, FB, Instagram Telegram-, Maxilect.