Senior
48
Tarea de diseño: El servicio de Me gusta escribe los me gusta en Kafka, el servicio de Panel de control debe calcular la clasificación de las publicaciones. ¿Cómo establecer la interacción?
Empresas donde se preguntó
Позитив Технолоджис
Respuesta de la IA
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-сервисе.