2015-05-02 2 views
-1

Привет всем,Как спроектировать архитектуру микро-службы с помощью Spring загрузки базы

Я пытаюсь выяснить, как переместить мою текущую архитектуру системы на базе модулей (war's), работающих в Wildfly. В настоящее время все инфра-ресурсы размещены в дереве JNDI, например, Datasources, JMS и т. Д. ... В рамках моих проектов используется Spring 4 и family, что позволяет мне искать эти ресурсы и другие вещи.

Моя цель - создать архитектуру микросервиса с использованием Spring-Boot и Spring Cloud Netflix, где каждый из этих WAR будет новым независимым приложением, интегрированным службой шины.

Но я сомневаюсь, как поделиться этими источниками данных Jndi со всеми приложениями Spring Boot, имея в виду, что неплохо настраивать пользователя/пароль для каждого приложения/источника данных в каждом приложении application.properties.

Есть ли способ иметь главную Spring Boot, управляющую всеми подпроектами, поскольку большое преимущество состоит в том, чтобы приложение работало в одном порту, а другое - в другом, поэтому, если какая-либо проблема возникает, например, Wildfly wouldn «Остановите их все, что происходит в моей нынешней архитектуре.

(весна загрузки) + (Spring Cloud) + (один JNDI дерево для всех проектов) + (независимые модули между собой)

Позвольте мне знать ваши мысли!

Благодаря ...

+0

Идея весеннего ботинка была основана на микросервисах (на мой взгляд) с облачными компонентами, у вас есть различия, чтобы интегрировать ваши услуги с использованием толстых банок. –

ответ

3

Spring Облако имеет модуль под названием Spring Cloud Config, который именно для этой цели. Сервер конфигурации позволяет централизованно определять вашу конфигурацию, и каждый микросервис автоматически извлекает эту конфигурацию (и при необходимости обновляет ее). Что касается единственного дерева JNDI, я думаю, это немного противоречит архитектуре микросервисов. Поскольку у каждого микросервиса есть своя база данных, вы только сконфигурировали бы один источник данных на один микросервис, поэтому настройка его в application.properties или с помощью сервера конфигурации не так много накладных расходов.

+0

Говоря о модели микросервисов, вы имеете в виду, когда у меня есть база данных, я должен централизовать все службы в одно приложение для загрузки Spring? По-моему, у меня могут быть любые приложения Spring Boot, означающие функциональность, поэтому она может указывать на одну и ту же базу данных. В этом случае многие проекты могут использовать один и тот же источник данных, не так ли? – Ofbizbrazil

+0

Если у вас есть одна база данных, которую вы хотите использовать для всех микросервисов, вы должны спросить себя, действительно ли каждая из служб обеспечивает единую функциональность, и если разделение вашего приложения на микросервисы действительно дает вам преимущества, такие как масштабируемость и доступность. Но это сложная тема и не так просто обсуждается на такой платформе. – dunni

+0

Предположим, я действительно хочу иметь много приложений Spring Boot, указывающих на одну и ту же базу данных, как я могу ее решить? Я имею в виду это, потому что у каждого из этих приложений будет другой порт http, который отличается при развертывании в Wildfly, получающем тот же http-порт. Децентрализовать войну от приложения Wildfly to Spring Boot, даст мне другую парадигму для управления и обеспечения безопасности сервера, но, с другой стороны, сложнее управлять инфра-ресурсами. Это то, что я имею в виду, как облегчить управление. – Ofbizbrazil