2015-11-12 2 views
2

Я искал в Интернете, но я немного смущен тем, что именно является микросервисом Java. Я имею в виду я знаю, что веб-сервис, и им сказали, что microservice является следующая за вики:Что такое Java MicroService

В вычислительной технике, microservices является стиль архитектуры программного обеспечения, в котором сложные приложения состоят из небольших, независимых процессов, сообщающихся с друг с другом с использованием языковых агностических API.

и свойства microservice являются:

Свойства microservices архитектуры:

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

, но мне нужен конкретный пример java, чтобы понять, как я могу сделать микросервис. Есть ли у кого-нибудь пример, который вы могли бы предоставить?

+0

Попробуйте представить, как работает ОС Unix. Существует ядро, которое является основным процессом, контролирующим все. Но все, что делает ОС на самом деле, - это все маленькие программы, которые составляют систему. Существует отдельная, крошечная программа, которая выполняет каждый аспект того, что делает система. – durbnpoisn

+0

Это хорошая аналогия, но в Java-коде вы могли бы сказать, что микросервис может быть вызовом api? Допустим, у меня была одна веб-служба, чтобы получить учетные записи пользователей, а затем у меня была еще одна «микросервисная» веб-ави, чтобы получить адрес и номера телефонов учетной записи пользователя и вернуть их на первый вызов, считая ли это микросервисом? – j2emanue

+0

Я бы так сказал. Все, что есть, находится в фоновом режиме, ожидая, что ему будет дана инструкция, и, в противном случае, будет хорошо. Пока он не является частью основного потока, занимая память, когда он не используется. – durbnpoisn

ответ

7

Микросервис в точности соответствует его названию. Это крошечный сервис, который выполняет очень простую функцию.

Итак, с точки зрения кода вы, вероятно, смотрите службу REST. Обратите внимание, что любой другой стиль API будет работать. Он не должен быть REST, однако он должен быть language agnostic, чтобы вы могли воспользоваться всеми преимуществами.

Но идея больше этого. Идея заключается в том, что они очень специализированы, и к ним не прилагается большой рабочий процесс. Например, если у вас есть служба, которая обрабатывает платежи, затем записывает журнал аудита, а затем уведомляет клиента. Я бы не считал это микросервисом. Написание журнала аудита, вероятно, будет микросервисом, также уведомляющим клиента, обрабатывающего кредитную карту. Ваша система будет координировать этот рабочий процесс (3 этапа, упомянутые выше), вызвав 3 необходимых микросервиса. Таким образом, ваша система является координатором, и вы не беспокоитесь о реализации бизнес-функций.

Микросервисы не пытаются слишком много думать, они просто делают, как им говорят, но они делают это быстро.

Итак, короче говоря. Возьмите очень простую бизнес-функцию, поставьте перед ним REST API. И у вас есть микросервис.

Есть несколько интересных свойств с microservices:

  1. Они могут быть развернуты независимо друг от друга. Это хорошо, потому что вы можете развернуть кусочки своего приложения, не снимая все сразу.
  2. Они могут работать в своем собственном бункере. Поэтому, если у вас есть микросервис, который очень голоден, его можно развернуть на отдельном сервере, чтобы он не влиял на остальную часть вашей системы.
  3. Они могут использовать разные технологии. У вас могут быть микросервисы на Java, некоторые из них.Net
  4. Они сохраняют зависимости под контролем. У разработчиков есть склонность к кровотечениям от одного компонента к другому, когда они живут вместе. Здесь вы не можете.

Но вы должны также рассмотреть некоторые недостатки

  1. Это намного сложнее поддерживать последовательную сделку во всех этих вызовов. Если вам нужно откат, вам понадобится JTA для отката всех вызовов REST. Это может быть болью и не очень хорошо работает в моем опыте.

  2. Отслеживание транзакции через систему для того, чтобы устранять неполадки может быть довольно грубым, если у вас нет последовательной регистрации и последовательный идентификатор транзакции

  3. Это может получить сложно найти, где дефект был введен, если земля постоянно меняется из-за развертываний, которые могут иметь побочные эффекты.

  4. Очевидно, что все эти вызовы REST могут складываться довольно дорого. Я не обязательно говорю о транспорте, так как, вероятно, все ваши микросервисы будут жить в одном центре обработки данных. Но каждый раз, когда вы звоните по сети, вы должны маршалировать/развязывать свои данные, и это может быстро стать дорогостоящим процессором.

+0

@Gimby достаточно честный. Хотя «микро» подразумевает меньшую услугу (с точки зрения функции, а не фактического размера в коде), это то, что я пытался сделать. И нигде я не говорю, что он привязан к REST, кроме упоминания, что в одной типичной реализации используется REST. Это подтверждается http://martinfowler.com/articles/microservices.html, вторым абзацем. Это не ограничение, просто типичное использование. – mprivat

+1

Добавлены подробности, чтобы быть более явным – mprivat

2

Вы можете проверить это: https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka

Этот пример основан на следующих услугах:

Netflix Eureka:

Eureka является REST (Representational State Transfer) на основе сервис, который в основном используется в облаке AWS для поиска сервисов с целью балансировки нагрузки и переключения серверов промежуточного уровня.

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

Netflix Zuul:

Zuul является службой края, которая обеспечивает динамическую маршрутизацию, мониторинг, отказоустойчивости, безопасности и многое другое.

Это конечная точка для клиентов микросервиса. Все остальные экземпляры службы защищены в защищенной коробке, тогда как Zuul подвергается воздействию клиентов, которые перехватывают все клиентские запросы.

Netflix Лента:

Лента является Inter Process Communication (удаленные вызовы процедур) библиотека со встроенным программным обеспечением балансировки нагрузки. Основная модель использования включает вызовы REST с поддержкой различных схем сериализации.

Лента работает в соединениях с Zuul, использует множество алгоритмов для выбора наилучшего обслуживающего узла для обслуживания запросов при запуске N экземпляров микросервисов.

Простыми словами, Zuul перехватывает запросы клиентов и на основе URL-адреса запроса Zuul находит ip и порт экземпляра Microservice, используя обнаружение службы Eureka. Лента выбирает лучший сервисный узел для обслуживания запроса, а затем из запроса Zuul направляется в соответствующий экземпляр микросервиса.

Advantage с моей точки зрения проекта:

Мы можем добавить или удалить номер «N» сервисных узлов на основе сетевого трафика.