Я собрал несколько небольших REST-сервисов на основе Spring-Boot. Каждый из этих сервисов REST имеет собственную базу данных, собственную конфигурацию и может работать независимо от других сервисов. Каждый сервис сопоставлен с отдельным портом. Вы можете просто запустить его и вызвать каждую из предоставленных конечных точек REST.
Впереди у меня есть «API-шлюз», основанный на Spring-Boot, который действует как агрегированный сервис, взаимодействующий с каждым из небольших REST. услуги по HTTP для сбора некоторых данных или выполнения некоторых операций с использованием одного или нескольких сервисов REST. В настоящее время все работает на моей машине, поэтому все коммуникации проходят через localhost и указанный c порт указанной службы c.
То, чего я сейчас хочу достичь или попробовать, заключается в следующем:
- Текущий шлюз API должен использовать существующие службы REST с пружинной загрузкой в качестве зависимости в файле POM
- Все еще должна быть возможность запуска каждого из небольших ОТДЫХ самостоятельно . Это означает, что я могу просто
spring-boot:run
, и служба предоставляет REST API под указанным c портом. Даже если он используется в качестве жесткой зависимости в моем API-шлюзе - Каждый из небольших сервисов должен по-прежнему использовать свою собственную базу данных, поэтому не должно быть толстой базы данных, содержащей все данные.
- При запуске большого жирного API-шлюза со всеми небольшими службами в качестве зависимости, небольшие службы не должны отображаться на указанный порт c и не должны предоставлять несколько API REST. Я предполагаю, что этого не произойдет, поскольку службы не запускаются с использованием
spring-boot:run
, но я просто хотел указать на это. - С архитектурной точки зрения: связь с зависимостью должна быть реализована с использованием
Interface
определение необходимых методов. Это должно упростить замену вызовов зависимости напрямую на отдельную работающую конечную точку REST, предоставляя другую реализацию этого интерфейса. - Вопрос: Я предполагаю, что большой толстый API-шлюз не должен использовать уже существующую реализацию контроллера служб REST для вызова методов. Вместо этого, я полагаю, служба REST должна предоставлять отдельный API для прямой связи?
Каков наилучший способ достижения вышеуказанной информации и требований?
Заранее спасибо, и я надеюсь на вашу помощь и ваши идеи.
PS: Пожалуйста, сообщите мне, если это неправильная сеть обмена стека по этому вопросу.