Olá, Habr! Uma base informativa positiva sobre o tópico de gerenciamento de eventos por meio do Kafka Streams se formou ao meu redor. Esta ferramenta atrai com uma grande quantidade de reportagens em vídeo e artigos sobre Habré, documentação detalhada, API compreensível e bela arquitetura. Alguns de meus amigos e colegas usam para desenvolver seus sistemas. Mas o que acontece na vida real quando esses sistemas entram em produção?
Neste artigo, irei omitir a introdução ao Kafka Streams, presumindo que o leitor já esteja familiarizado com ele, e falarei sobre nossa experiência de conviver com esta biblioteca no exemplo de um sistema razoavelmente carregado.
Resumidamente sobre o projeto
Uma equipe interna junto com parceiros está trabalhando no Ad Exchange, o que ajuda a revender o tráfego de publicidade. Já descrevemos as especificidades de tais ferramentas em um artigo sobre Habré . Conforme o número de parceiros entre SSP e DSP aumenta, a carga nos servidores de troca aumenta. E para aumentar o valor da troca em si, devemos coletar análises detalhadas desse tráfego. É aqui que tentamos usar o Kafka Streams.
Implementar uma nova ferramenta em sua produção é sempre um risco. Estávamos cientes disso, mas toleramos isso, porque, em geral, Kafka Streams deve ser conceitualmente adequado para calcular agregados. Embora a primeira impressão tenha sido ótima, falarei sobre os problemas que geraram.
, , . , - 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.