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