1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Microserver

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Microserver

Build Status Join the chat at https://gitter.im/aol/micro-server

Удобный модульный движок для микросервисов. Плагины Microserver предлагают бесшовную интеграцию со Spring (ядром), Jersey, Guava, Tomcat, Grizzly, реактивным программированием, Hibernate (& Spring Data), Spring Boot, Codahale Metrics, Swagger и многим другим!

Снимок экрана 2016-05-06 в 12 30 26 pm

Видео о плагинах Microserver

Видео для начала работы

Быстрый старт

Установите 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 и многое другое!

Простой в использовании асинхронный REST на основе NIO

Возвращайте любой 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?

Microserver — это движок плагинов для создания микросервисов на базе Spring и Spring Boot. Microserver поддерживает чистый микросервисный и микромонолитный стили разработки. Микромонолитный стиль предполагает объединение нескольких сервисов в одно развёртывание, предлагая разработчикам продуктивность микросервисной разработки без операционного риска. Это может помочь командам внедрить архитектуру микросервисов в проекты, которые в настоящее время являются монолитами.

Плагины Microserver ортогональны микросервисам. Они решают распространённую проблему в разработке микросервисов, когда сервисы разбиваются и развёртываются отдельно, но код остаётся запутанным в монолитной общей библиотеке. Используя систему плагинов, которая следует тем же модульным архитектурным принципам, что и разработка микросервисов, команды могут поддерживать межсервисные проблемы и инфраструктуру в надлежащем размере, согласованности и связности модулей плагинов.

Учебник и обзор

Учебник

Код учебника

Примечание о толстых банках

Microserver (& Cyclops) имеют архитектуру плагинов и используют механизм Java Service Loader. Убедитесь, что ваша реализация Fat Jar настроена для агрегирования. services

С помощью Gradle Shadow Jar вы делаете это с помощью:

shadowJar {
  mergeServiceFiles()
}

Quick start youtube video

Getting started video

Обратите внимание, что основной класс запуска был изменён с MicroServerStartup на MicroserverApp.

Blurb

Microserver — это библиотека для запуска Java Rest микросервисов через стандартный класс Java main, которая не требует настройки и основана на стандартах. Она используется в производстве в AOL с июля 2014 года.

Get Microserver

Build health

  • micro-grizzly-with-jersey Maven Central
  • micro-tomcat-with-jersey Maven Central
  • micro-core Maven Central
  • micro-boot: Microserver, управляемый Spring Boot Maven Central
  • micro-spring-boot: Spring Boot, управляющий Microserver Maven Central

Info

wiki

Google Group

Пример приложений: Core Microserver с Grizzly и Jersey

Пример приложения: Microserver Boot

Java Doc: Microserver Core

Java Doc: 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 проверит наличие свойств в следующем порядке:

  1. Системное свойство «application.property.file» и, если оно присутствует, загрузит файл свойств с диска, используя его.

  2. В противном случае Microserver будет искать системное свойство «application.env» и загрузит файл свойств приложения из пути к классам, используя ресурс с именем «application-${application.env}.properties».

  3. В качестве альтернативы Microserver загрузит application.properties непосредственно из пути к классам.

  4. Если всё ещё не найден, 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();

        
        
    }
}

Создание «толстого» Jar

Мы рекомендуем плагин 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 или... # Спасибо нашим спонсорам

  • ВашКит поддерживает проекты с открытым исходным кодом инновационными и интеллектуальными инструментами для мониторинга и профилирования приложений на Java и .NET. ВашКит является создателем YourKit Java Profiler, YourKit .NET Profiler и YourKit YouMonitor.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Microserver — это библиотека, которая не требует настройки и основана на стандартных компонентах, прошедших проверку временем. Используется для запуска Java REST микросервисов, которые выполняются через стандартный класс main в Java. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-Microserver.git
git@api.gitlife.ru:oschina-mirror/mirrors-Microserver.git
oschina-mirror
mirrors-Microserver
mirrors-Microserver
master