Я новичок в Kafka и потоковой передаче данных, и мне нужен совет по следующему требованию: наша система ожидает около 1 миллиона входящих сообщений в день. Сообщение содержит идентификатор проекта. Сообщение должно быть отправлено пользователям только этого проекта. В нашем случае, допустим, у нас есть проекты A, B и C. Пользователи, открывающие панель управления проекта A, видят / получают сообщения только проекта A.
Это моя идея пока реализовать решение для требования,
Сообщения должны быть отправлены в тему Kafka по мере их поступления, давайте назовем эту тему корневой темой. Сообщения, однажды отправленные в корневую тему, могут быть прочитаны потребителем / слушателем Kafka и на основе идентификатора проекта в сообщении могут отправить это сообщение в конкретную тему проекта. Таким образом, любое сообщение может попасть в тему A, B или C. Подумайте об использовании веб-сокетов для обновления сообщения по мере его поступления на панели мониторинга пользователей проекта. Для N тем проекта будет N потребителей / слушателей. Эти потребители будут отправлять конкретное сообщение проекта в конкретные конечные точки веб-сокета проекта.
Пожалуйста, сообщите, могу ли я внести какие-либо улучшения в вышеуказанный дизайн.
В качестве системы обмена сообщениями выберите Kafka, поскольку она отличается высокой масштабируемостью и отказоустойчивостью.
Перед отправкой клиенту не требуется сложного преобразования или обогащения данных. Будет ли иметь смысл использовать Apache Flink или Hazelcast Jet для потоковой передачи или потоковую передачу Kafka, достаточно ли для этого простого требования.
Кроме того, когда мне следует рассмотреть возможность использования Hazelcast Jet или Apache Flink в моем проекте.
Должен ли я использовать Flink say, когда мне нужно обновить несколько свойств в сообщении на основе вызова веб-службы или поиска в базе данных, прежде чем отправлять его пользователям?
Должен ли я использовать Hazelcast Jet только тогда, когда мне нужен весь набор данных в памяти, чтобы получить значение свойства? или использование Jet принесет некоторые преимущества даже для моего простого случая использования, указанного выше. Пожалуйста, порекомендуйте.