Удобный модульный движок для микросервисов. Плагины Microserver предлагают бесшовную интеграцию со Spring (ядром), Jersey, Guava, Tomcat, Grizzly, реактивным программированием, Hibernate (& Spring Data), Spring Boot, Codahale Metrics, Swagger и многим другим!
Установите Microserver с Grizzly, Jackson и Jersey (конфигурация Gradle ниже)
compile group: 'com.oath.microservices', name:'micro-grizzly-with-jersey', version:'x.yz'
Установите Microserver с Tomcat, Jackson и Jersey (конфигурация Gradle ниже)
compile group: 'com.oath.microservices', name:'micro-tomcat-with-jersey', version:'x.yz'
Создайте и запустите простое приложение
@Rest
@Path("/test")
public class SimpleApp {
public static void main(String[] args){
new MicroserverApp(()->"test-app").run();
}
@GET
public String myEndPoint(){
return "hello world!";
}
}
Перейдите по адресу http://localhost:8080/test-app/test
Ответ будет hello world!
Добавляйте плагины, добавляя их в свой файл сборки — перезапустите приложение, чтобы получить новые конечные точки, Spring beans и многое другое!
Возвращайте любой Publisher из реактивных потоков из вашей конечной точки REST, чтобы они выполнялись асинхронно автоматически.
Например, используя Future от cyclops-react
@GET
public Future<String> myEndPoint(){
return Future.of(()->{
sleep();
return "hello world!";
}, Executors.newFixedThreadPool(1));
}
Будет эквивалентно следующему коду
@GET
public void myEndPoint(@Suspended AsyncResponse asyncResponse){
Future.of(()->{
sleep();
asyncResponse.resume("hello world!");
return 1;
}, Executors.newFixedThreadPool(1));
}
Microserver — это движок плагинов для создания микросервисов на базе Spring и Spring Boot. Microserver поддерживает чистый микросервисный и микромонолитный стили разработки. Микромонолитный стиль предполагает объединение нескольких сервисов в одно развёртывание, предлагая разработчикам продуктивность микросервисной разработки без операционного риска. Это может помочь командам внедрить архитектуру микросервисов в проекты, которые в настоящее время являются монолитами.
Плагины Microserver ортогональны микросервисам. Они решают распространённую проблему в разработке микросервисов, когда сервисы разбиваются и развёртываются отдельно, но код остаётся запутанным в монолитной общей библиотеке. Используя систему плагинов, которая следует тем же модульным архитектурным принципам, что и разработка микросервисов, команды могут поддерживать межсервисные проблемы и инфраструктуру в надлежащем размере, согласованности и связности модулей плагинов.
Microserver (& Cyclops) имеют архитектуру плагинов и используют механизм Java Service Loader. Убедитесь, что ваша реализация Fat Jar настроена для агрегирования. services
С помощью Gradle Shadow Jar вы делаете это с помощью:
shadowJar {
mergeServiceFiles()
}
Quick start youtube video
Обратите внимание, что основной класс запуска был изменён с MicroServerStartup на MicroserverApp.
Blurb
Microserver — это библиотека для запуска Java Rest микросервисов через стандартный класс Java main, которая не требует настройки и основана на стандартах. Она используется в производстве в AOL с июля 2014 года.
Get Microserver
Info
Пример приложений: Core Microserver с Grizzly и Jersey
Пример приложения: Microserver Boot
Maven dependency
Микросервер Grizzly с Jersey
<dependency>
<groupId>com.oath.microservices</groupId>
<artifactId>micro-grizzly-with-jersey</artifactId>
<version>x.yz</version>
</dependency>
Микросервер Spring Boot
<dependency>
<groupId>com.oath.microservices</groupId>
<artifactId>micro-spring-boot</artifactId>
<version>x.yz</version>
</dependency>
Gradle dependency
Микросервер core
compile group: 'com.oath.microservices', name:'micro-core', version:'x.yz'
Микросервер Spring Boot
compile group: 'com.oath.microservices', name:'micro-spring-boot', version:'x.yz'
Tech Stack
Microserver core — это облегчённый механизм конфигурации сервера, созданный с использованием Spring, Cyclops и Jackson.
Zero Configuration
Сервер не навязывает структуру каталогов, и XML не требуется. Нет конфигурации фреймворка. Только файл jar и ваше приложение. Конечно, вы можете настроить своё приложение без ограничений.
Пример рабочего приложения:
public class AppRunnerTest {
public static void main(String[] args) throws InterruptedException {
new MicroserverApp(() -> "test-app").run();
}
}
Это развернёт REST-сервер на порту 8080 (настраивается с помощью test-app.port в application.properties), а также автоматически захватит любые конечные точки Rest (аннотации Spring & Jersey), которые реализуют интерфейс тега RestResource (см. JerseySpringIntegrationContextListener(data), new SwaggerInitializer(data));
default Map<String,Filter> getFilters(ServerData data) { return ImmutableMap.of("/*",new QueryIPRetriever()); }
default Map<String,Servlet> getServlets(ServerData data) { return ImmutableMap.of(); }
default String getJaxWsRsApplication(){ return JerseyRestApplication.class.getCanonicalName(); }
default String getProviders(){ return "com.aol.micro.server.rest.providers"; }
RestResource класс определяет интерфейс тега, используемый для идентификации конечных точек Rest для этого модуля.
Фильтры предоставляют карту фильтров сервлетов и пути, к которым они должны применяться.
Провайдеры позволяют клиентскому коду изменять пакеты провайдеров Jersey.
JaxWsRsApplication позволяет клиентскому коду полностью переопределить Microserver jax.ws.rs.Application.
Microserver поддерживает автоматическое обнаружение application.properties. Microserver будет предполагать имя файла по умолчанию «application.properties». Microserver проверит наличие свойств в следующем порядке:
Системное свойство «application.property.file» и, если оно присутствует, загрузит файл свойств с диска, используя его.
В противном случае Microserver будет искать системное свойство «application.env» и загрузит файл свойств приложения из пути к классам, используя ресурс с именем «application-${application.env}.properties».
В качестве альтернативы Microserver загрузит application.properties непосредственно из пути к классам.
Если всё ещё не найден, Microserver загрузит application.properties с диска в текущем каталоге.
Имя файла по умолчанию application.properties можно настроить исключением (используйте PropertyFileConfig.setApplicationPropertyFileName(String filename).
Загрузка свойств приложения Microserver настраивается классом PropertyFileConfig. Вы можете заменить его своим собственным файлом конфигурации Spring, чтобы загружать файлы свойств по другому набору правил (передав свой класс в конструктор Microserver).
Microserver поддерживает встраивание нескольких микросервисов в один Microserver, это не режим работы по умолчанию и требует немного больше работы для настройки. Все микросервисы будут использовать общий контекст Spring, поэтому при создании таких микросервисов следует проявлять осторожность, чтобы избежать конфликтов. Это означает, что они могут совместно использовать ресурсы (например, подключения к базе данных), где это имеет смысл.
Встроенные микросервисы должны быть собраны только во время выполнения. Не должно быть зависимости времени компиляции между встроенными микросервисами (иначе вы создаёте не микросервисы, а монолитное приложение).
Встраивание микросервисов — это оптимизация, которая обеспечивает лучшую производительность, повышенную надёжность и надёжность, а также более простое управление микросервисами, сохраняя при этом преимущества горизонтальной масштабируемости, предлагаемые подходом микросервисов.
Этот пример запустит две разные конечные точки Rest — одну в контексте «test-app», а другую в контексте «alternative-app». «test-app» автоматически подключит все конечные точки Jersey, реализующие TestAppRestResource. «alternative-app» автоматически подключит любые конечные точки Jersey, которые реализуют AltAppRestResource.
@Microserver
public class EmbeddedAppRunnerTest {
public static void main(String[] args) throws InterruptedException {
new MicroserverApp(EmbeddedAppRunnerTest.class,
new EmbeddedModule(TestAppRestResource.class,"test-app"),
new EmbeddedModule(AltAppRestResource.class,"alternative-app")).start();
}
}
Мы рекомендуем плагин Gradle Shadow Jar. Для Gradle 2.0 просто определите его в разделе плагинов ->
plugins {
id 'java' // or 'groovy' Must be explicitly applied
id 'com.github.johnrengelman.shadow' version '1.2.0'
}
Пользователи Maven могут использовать плагин Shade или... # Спасибо нашим спонсорам
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )