Я занимаюсь разработкой приложения, которое транслирует видео и / или аудио из разных объектов. Идентификаторы и конфигурации этих объектов хранятся в виде записей в моей БД. Текущая архитектура моего приложения выглядит примерно так:
- конечная точка API CRUD для общесистемных функций, таких как вход в систему или редактирование конфигурации объекта.
- N-количество другие конечные точки (где N - это число объектов, а маршрут каждой конечной точки определяется указанным идентификатором c объекта, например:
"/:id/api/"
) для определенных c функциональных возможностей каждого объекта. Каждый объект загружается приложением при инициализации. Эти конечные точки являются одновременно обработчиком REST API и сервером WebSocket для потоковой передачи мультимедиа, полученной от серверной части, которая была настроена для этого объекта.
Кроме того, существует экземпляр NGINX, который действует в качестве прокси-сервера и размещает наши клиентские файлы.
Очевидно, что в данный момент это не очень масштабируемо (один экземпляр сервера обрабатывает постоянно растущее количество объектов) и требует перезапуска экземпляра моего сервера при добавлении / удалении сущность - которая не идеальна. Я думал о том, чтобы разделить сервер моего приложения на микросервисы: один для общесистемного CRUD, и N других для каждого объекта, определенного в моей БД. В конечном счете, я бы хотел, чтобы эти микро-сервисы работали как Docker контейнеров. Проблемы (или вопросы, на которые я не знаю ответов), с которыми я сталкиваюсь в данный момент:
- Как можно динамически запускать Docker контейнеров в соответствии с БД (или программно )? Возможно ли это вообще?
- Как можно обновить работающий контейнер Docker, чтобы иметь возможность перенастроить эту сущность во время выполнения?
- Как можно настроить NGINX для прокси тех Dynami c микро-услуги? Я предполагаю, что мне придется использовать что-то вроде Consul?
Я не очень хорошо осведомлен, поэтому простите меня, если я слишком наивен, чтобы думать, что могу достичь такой архитектуры. Кроме того, если вы можете придумать лучшую архитектуру, я хотел бы услышать ваши предложения.
Спасибо!