#apache-kafka
Вопрос:
Я недавно начал изучать apache кафку. Получив некоторое первоначальное представление, я нахожусь в точке, где я не понимаю, как кафка вписывается в архитектуру приложений.
Я имею в виду, как мы введем его в простое приложение, которое ранее имело только три слоя. Интерфейс (приложение для Android), серверная часть (Node.js), MySQL. Пользователь может создать сообщение из приложения , приложение вызовет конечную точку на node.js и он сохранит сообщение в бд.
В этой простой, прямолинейной архитектуре какие дополнительные вещи добавит кафка ? Как это будет интегрировано?
Комментарии:
1. Это неправильный подход-пытаться втолкнуть кафку в существующие системы без необходимости. Для этого могут быть веские причины, и веские причины не делать этого. Зависит от архитектуры.
2. Вы можете использовать Кафку для репликации базы данных.
3. Вам это не нужно, пока вы этого не сделаете, и когда вы это сделаете, вам, возможно, будет лучше использовать что-то гораздо более простое, чем Кафка. Не ставьте телегу впереди лошади. Каков ваш вариант использования?
4. Кафка (и другое промежуточное программное обеспечение), скорее всего, будет полезна на уровне распределенного предприятия, а не пытаться встроить ее в «3-уровневое приложение». Пропускная способность Kafka используется в системах, управляемых событиями большого объема (например, IoT), ее эффективные возможности сохранения и поддержки pub имеют множество вариантов использования, включая механизмы обработки больших данных, потоковой передачи и правил, а согласованное разделение хэшей позволяет горизонтально масштабировать службы с отслеживанием состояния, такие как модель актора. Если вам не нужен один из этих вариантов использования, вам не нужен распределенный журнал, такой как Kafka.
5. @Evert я специально не изучаю кафку с учетом прецедента. В настоящее время я изучаю кафку и пытаюсь понять, где она используется.
Ответ №1:
Давайте приведем пример — обновления базы данных, которые требуют простоя.
Что произойдет, если ваше приложение NodeJS не сможет подключиться к базе данных в течение этого периода, но сможет успешно выполнить запись в Kafka? (Вы бы переписали свое приложение узла для записи в Кафку вместо базы данных.)
В этом случае Кафка действует как буфер, пока вы занимаетесь обслуживанием базы данных.
Это всего лишь один пример, но вы также можете использовать тему Кафки как в MySQL, так и в Elasticsearch (или другой базе данных) для поддержки других вариантов использования, таких как поиск или анализ журналов. Вам не нужно будет редактировать код вышестоящего узла для записи в несколько нижестоящих систем, за исключением публикации нескольких типов событий в Kafka.