こんにちは、Habr!KafkaStreamsを介したイベント処理のトピックに関する前向きな情報の背景が私の周りに形成されました。このツールは、Habréに関する多くのビデオレポートや記事、詳細なドキュメント、わかりやすいAPI、美しいアーキテクチャで魅力的です。私の友人や同僚の何人かはそれを使って彼らのシステムを開発しています。しかし、これらのシステムが本番環境に入ると、実際にはどうなるでしょうか。
この記事では、読者がすでにKafka Streamsに精通していることを前提として、Kafka Streamsの紹介を省略し、かなりロードされたシステムの例でこのライブラリを使用した経験について説明します。
プロジェクトについて簡単に
パートナーと一緒に内部チームがAdExchangeに取り組んでおり、広告トラフィックの再販を支援しています。このようなツールの詳細については、Habréに関する記事ですでに説明しています。SSPとDSPの間のパートナーの数が増えると、交換サーバーの負荷が増加します。また、取引所自体の価値を高めるには、このトラフィックから詳細な分析を収集する必要があります。ここで、KafkaStreamsを使用しようとしました。
プロダクションに新しいツールを実装することは常にリスクです。私たちはそれを認識していましたが、一般的に、Kafka Streamsは概念的に集計の計算に適しているはずなので、我慢しました。第一印象は素晴らしかったですが、その原因となった問題についてお話します。
, , . , - 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.