Bonjour, Habr! Un arrière-plan informatif positif sur le thème de la gestion des événements via Kafka Streams s'est formé autour de moi. Cet outil attire avec de nombreux rapports vidéo et articles sur Habré, une documentation détaillée, une API compréhensible et une belle architecture. Certains de mes amis et collègues l'utilisent pour développer leurs systèmes. Mais que se passe-t-il dans la vraie vie lorsque ces systèmes entrent en production?
Dans cet article, je vais omettre l'introduction de Kafka Streams, en supposant que le lecteur le connaisse déjà, et je parlerai de notre expérience de vie avec cette bibliothèque sur l'exemple d'un système assez chargé.

En bref sur le projet
Une équipe interne et des partenaires travaillent sur Ad Exchange, qui permet de revendre le trafic publicitaire. Nous avons déjà décrit les spécificités de tels outils dans un article sur Habré . À mesure que le nombre de partenaires parmi SSP et DSP augmente, la charge sur les serveurs d'échange augmente. Et pour augmenter la valeur de l'échange lui-même, nous devons collecter des analyses détaillées de ce trafic. C'est là que nous avons essayé d'utiliser Kafka Streams.
Implémenter un nouvel outil dans votre production est toujours un risque. Nous en étions conscients, mais nous l'avons supporté, car en général, les flux Kafka devraient être conceptuellement bien adaptés au calcul des agrégats. Bien que la première impression ait été excellente, je parlerai des problèmes qui ont conduit.
, , . , - 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.