Senior
41
Tâche de conception : Le service de likes écrit les likes dans Kafka, le service de tableau de bord doit calculer le classement des publications. Comment établir l'interaction ?
Entreprises à qui on a demandé
Позитив Технолоджис
Réponse de l'IA
sobes.tech IA
Для организации взаимодействия между 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-сервисе.