Мне нужно разработать приложение, которое прослушивает тему kafka и сохраняет данные в DB (cassandra). Это будет поток данных с высокой плотностью, поэтому сохранение данных будет дорогостоящим ресурсом. После сохранения данных он будет запрашиваться и отображаться через REST API.Запустить два процесса в одном контейнере докера или два контейнера, подключающихся к одному и тому же БД?
Я вижу два варианта, но оба из них имеют недостатки:
Вариант 1
Создание двух услуг, каждый из них в отдельном контейнере Докер. Один из них будет запускать только процесс прослушивания кафки на питоне, а другой - на флеш-сервере.
Преимущества: Каждый контейнер работает только один процесс
МИНУСЫ: Обе услуги подключения к одной и той же БД, что не является идеальным в соответствии с архитектурой microservices картины, за услуги не полностью развязаны.
Вариант 2
Run как Кафка слушателем и веб-службы в одном контейнере.
Преимущества: Только одна услуга для подключения к БД.
Недостатки: более одного процесса, работающего в одном контейнере докеров, и один из них (сохранение и обновление) будет намного дороже, чем другой, поэтому он не будет масштабироваться равномерно.
Есть ли еще один способ пойти, который не предполагает переход к монолитной архитектуре? Или какой из них - лучшая практика?
Перед созданием собственного решения вы должны проверить Kafka Connect. Для меня это звучит, если Kafka Connect предоставит все, что вам нужно из коробки. (И это часть Apache Kafka). –