Sobes.tech
Senior
52

დიზაინის დავალება: Like-სერვისი წერს ლაიქებს Kafka-ში, Dashboard-სერვისი უნდა ითვლიდეს პოსტების რეიტინგს. როგორ დავაყენოთ ურთიერთქმედება?

კომპანიებმა სადაც სთხოვეს
Позитив Технолоджис

პასუხი AI-სგან

sobes.tech AI

Для организации взаимодействия между Like-сервисом и Dashboard-сервисом через Kafka можно использовать следующий подход:

  1. Like-сервис публикует события лайков в топик Kafka с ключом, например, ID поста.
  2. Dashboard-сервис подписывается на этот топик и обрабатывает события в режиме стриминга, аккумулируя количество лайков по каждому посту.
  3. Для подсчёта рейтинга можно использовать Kafka Streams или отдельный consumer, который обновляет агрегированные данные в базе или кэше.

Пример на Java с использованием Kafka Streams:

KStream<String, LikeEvent> likes = builder.stream("likes-topic");
KTable<String, Long> likeCounts = likes
    .groupByKey()
    .count(Materialized.as("like-counts-store"));

likeCounts.toStream().to("post-ratings-topic", Produced.with(Serdes.String(), Serdes.Long()));

Такой подход обеспечивает масштабируемость, устойчивость и актуальность данных рейтинга в Dashboard-сервисе.