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 можно использовать следующий подход:
- Like-сервис публикует события лайков в топик Kafka с ключом, например, ID поста.
- Dashboard-сервис подписывается на этот топик и обрабатывает события в режиме стриминга, аккумулируя количество лайков по каждому посту.
- Для подсчёта рейтинга можно использовать 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-сервисе.