Moleculer фреймворк поддерживает несколько архитектур программного обеспечения.
Архитектура монолита
В этой версии все сервисы работают на одном узле, как монолит. Отсутствует задержка сети и модуль транспорта. Местные вызовы самые быстрые.
Микросервисная архитектура
Это известная архитектура микросервисов, когда все службы работают на отдельных узлах и общаются через транспорт. В этом случае задержкой в сети нельзя пренебречь. Однако сервисы можно масштабировать, чтобы они были гибкими и отказоустойчивыми.
Смешанная архитектура
В этом случае мы запускаем согласованные сервисы в группе на одном узле. Такой подход сочетает в себе преимущества архитектуры монолита и микросервисов. Например, если сервис posts
вызывает сервис users
несколько раз, эти два сервиса следует разместить на одном узле для сокращения сетевых задержек между ними. Перегруженные узлы можно просто масштабировать.
TipServiceBroker сначала пытается вызвать локальные экземпляры сервиса (если существует) для уменьшения задержки сети. Эта логика может быть отключена в настройках брокера с помощью установки
preferLocal: false
свойства в ключеregistry
.
Как выбрать
Выбираете между монолитом и микросервисом при разработке приложения? Выберете монолитный подход, потому что его легко развивать? Предпочитаете микросервисную архитектуру, потому что она надёжна и масштабируема? С Moleculer вам не нужно выбирать. Можно получить лучшее из двух подходов. Во время разработки приложения загружайте все сервисы на одним узле. Таким образом можете быстро отладить и проверить логику приложения. Когда будете готовы, просто распространите свои сервисы на нескольких узлах. Не волнуйтесь, для этого не нужно менять код в сервисах. Просто укажите транспорт, разместите каждый сервис на отдельном узле и всё готово. Ваше приложение работает на микросервисной архитектуре.