Sobes.tech
Senior
47

Sarcină de proiectare: Serviciul Like scrie like-urile în Kafka, serviciul Dashboard trebuie să calculeze clasamentul postărilor. Cum să stabilim interacțiunea?

Companiile au fost întrebate
Позитив Технолоджис

Răspuns de la 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-сервисе.