Статьи

Micro Services — простой способ с Fabric8

Микро Сервисы получили много дискуссий в последнее время. Хотя легко спорить о точном значении этого термина; Трудно отрицать, что в экосистеме Java наблюдается явное движение к микро-сервисам: использование меньших, легких по весу и изолированных процессов микро-сервисов вместо размещения всего вашего кода на монолитных серверах приложений с помощью таких подходов, как DropWizard , Spring Boot и Vert.x. Есть много преимуществ подхода микро-услуг; особенно учитывая DevOps и облако.

Fabric8 — это поли-сервер приложений.

В проекте fabric8 мы очень независимы от сервера приложений; Есть много плюсов и минусов с использованием разных серверов приложений. Идеальный выбор часто зависит от ваших требований, знаний и истории вашей команды. Люди, как правило, предпочитают придерживаться серверов приложений, которые они знают и любят (или которыми управляют их сотрудники), а не переключаться; поскольку все серверы приложений требуют времени для изучения.

OSGi очень гибкая, модульная и основанная на стандартах; но модульность имеет стоимость с точки зрения времени обучения и разработки. (OSGi — это своего рода мармитная технология; вы склонны либо любить ее, либо ненавидеть;). Двигатели сервлетов, такие как Tomcat, действительно просты; но с очень ограниченной модульностью. Тогда для тех, кто любит JEE, есть WildFly и TomEE.

В проекте fabric8 мы изначально начали поддерживать OSGi для управления такими вещами, как JBoss Fuse , Apache Karaf и Apache ServiceMix . Если вы используете версию 1.0.x Fabric8 (которая включена в JBoss Fuse 6.1), то OSGi является единственной поддерживаемой моделью сервера приложений.

Однако в 1.1.x мы усиленно работаем над поддержкой Apache Tomcat, Apache TomEE и WildFly как первоклассных граждан в fabric8; так что вы можете выбрать любую модель сервера приложений, которую предпочитаете вы и ваша команда; в том числе с использованием смеси типов контейнеров для различных услуг.

Fabric8 1.1.0.Beta5 теперь поддерживает контейнеры Java

Я лично очень рад новой возможности Java Container , которая теперь доступна в версии 1.1.0.Beta5 или более поздней версии fabric8, которая позволяет вам легко предоставлять и управлять Java-сервисами Micro Services .

Контейнер Java является альтернативой использованию сервера приложений; буквально с помощью Java-процесса, используя classpath и main, которые вы укажете. Так что нет обязательного сервера приложений или библиотек.

Практически на всех серверах приложений вы в какой-то момент столкнетесь с проблемами загрузчика классов; с контейнером Java в fabric8; это простой плоский загрузчик класса, который вы полностью контролируете. Simples! Если все работает в Maven и ваши тесты; они работают в контейнере Java (*); поскольку его тот же путь к классам — плоский список банок.

* (при условии, что вы не включаете повторяющиеся классы в разные jar, где порядок jar в пути к классам может вызвать проблемы, но это легко проверить в вашей сборке).

Самая простая и простая вещь, которая может работать как разработчик приложений, — это просто использовать простой загрузчик плоских классов. то есть используя процесс Java в командной строке следующим образом:

1
java -cp "lib/*" $MAINCLASS

Это означает, что каждый микро-сервис представляет собой отдельный изолированный контейнер (процесс операционной системы) со своим собственным путем к классу, поэтому его легко отслеживать и выполнять постепенное обновление зависимостей, не затрагивая другие контейнеры; это делает версию обновлений на одном дыхании.

Однако проблема с микро сервисами заключается в управлении развертыванием всех этих процессов Java; запускать их, останавливать их, управлять ими, иметь хороший инструментарий для просмотра происходящих событий и выполнять непрерывные обновления изменений. Вот где fabric8 приходит на помощь! Самый простой способ увидеть это через демонстрацию…

демонстрация

Вот скриншот, который я только что записал, чтобы показать, как легко работать с любым Java-проектом, который имеет сборку maven и основную функцию Java (функцию static main (String [] args) для начальной загрузки кода Java. полки Apache Camel и Spring, но на самом деле подойдет любой Java-проект с исполняемым jar или основным классом.

Для получения дополнительной информации о том, как использовать это и как все это работает, обратитесь к документации по Java-контейнеру и микро-сервисам в Fabric8.