¡Hola, Habr! A mi alrededor se ha formado un trasfondo informativo positivo sobre el tema del manejo de eventos a través de Kafka Streams. Esta herramienta atrae con una gran cantidad de informes de video y artículos sobre Habré, documentación detallada, API comprensible y una hermosa arquitectura. Algunos de mis amigos y colegas lo utilizan para desarrollar sus sistemas. Pero, ¿qué sucede en la vida real cuando estos sistemas entran en producción?
En este artículo, omitiré la introducción a Kafka Streams, asumiendo que el lector ya está familiarizado con él, y hablaré sobre nuestra experiencia de vivir con esta biblioteca en el ejemplo de un sistema bastante cargado.
Brevemente sobre el proyecto
Un equipo interno junto con socios está trabajando en Ad Exchange, que ayuda a revender el tráfico publicitario. Ya hemos descrito los detalles de tales herramientas en un artículo sobre Habré . A medida que aumenta el número de socios entre SSP y DSP, aumenta la carga en los servidores de intercambio. Y para aumentar el valor del intercambio en sí, debemos recopilar análisis detallados de este tráfico. Aquí es donde intentamos usar Kafka Streams.
Implementar una nueva herramienta en su producción es siempre un riesgo. Lo sabíamos, pero lo aguantamos, porque en general, Kafka Streams debería ser conceptualmente adecuado para calcular agregados. Aunque la primera impresión fue genial, hablaré de los problemas que me llevaron.
, , . , - 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.