Микросервисы приобретают все большую популярность как стиль архитектуры программного обеспечения, который лучше поддерживает непрерывную поставку, обеспечивает модель для быстрого развертывания и разделения задач.
Vert.x 3 и Vert.x-Apex предоставляют интересную модель для создания микросервисов. Как показывает один из примеров, простая вертикаль может открыть службу HTTP, поэтому доступна служба REST. Вертикаль связывает свой собственный TCP-порт.
При масштабировании до нескольких микросервисов для поддержки полного приложения у вас есть несколько вариантов выбора. Есть мысли о том, какой стиль может в конечном итоге поддерживать непрерывную доставку и минимизировать время простоя при обновлении?
Параметры
- Решением может быть запуск нескольких статей, каждая из которых содержит собственную маршрутизацию, поэтому обработка http содержится в статье. Запрос / ответ может быть полностью обработан по вертикали. Это может означать, что каждая вертикаль работает на своем собственном TCP-порту.
- Используя маршрутизатор, вы можете открыть все пути для одного порта и обработать их соответствующим образом. Данные будут обрабатываться по вертикали, содержащей маршрутизатор, с возможностью передачи их в другие статьи. Тогда это начинает выглядеть как более монолитный подход.
- Запустите отдельные экземпляры vert.x, содержащие службу (возможно, их кластер). Это может упростить использование непрерывной доставки, потому что все это самодостаточно.
- Другие возможные варианты?
Развертывание
Что касается развертывания, было бы желательно быстрое развертывание новых услуг без остановки всего приложения.
- Вариант 3. может предоставить способ для этого, но также может вызвать накладные расходы, особенно когда есть вертикаль DB, работающая в каждой вертикали.
- Вариант 1. Мог бы быть проще, но как насчет перезагрузки новых и обновленных статей?
Отдельные микросервисы предлагают интересный способ разработки, но создают некоторые проблемы в оркестровке и развертывании.
Есть предположения?