2015-04-12 1 views
8

Я читаю некоторую документацию о архитектуре микросервисов (через this link for example), и мне было интересно, что такое служба в этом случае.Архитектура Microservice, что является услугой в этом случае

В ИТ, все можно было бы назвать службу: - приложение SPRING REST запускается с помощью команды Java, как:

Java -jar построить/Libs/GS-Rest-сервис-0.1.0. баночка

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

Но в microservices, что это значит? И какие технологии/инструменты используются для создания «службы, выполняемой самостоятельно» в стеке Java EE, например? Это связано только с веб-сервисами?

+0

Смотрите прекрасные пояснения, проблемы & решение о microservices https://www.youtube.com/watch?v=CriDUYtfrjs –

ответ

0

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

Относительно стека Java EE - ничего конкретного, только обычный баночный или военный файл работает с использованием java -jar или серверов приложений, таких как Tomcat.

Другое направление - использовать инструменты, такие как Docker + CoreOs/kubernetes/..., Mesos + Marathon и т. Д., Но они подходят для любых языков/фреймворков в микросервисах.

Редактировать:

Microservices может использовать комбинацию синхронного (REST, SOAP) и асинхронных протоколов (очередей сообщений, как ActiveMQ, RabbitMQ и т.д.). Вам решать, как их сочетать. Мой пример: labs.bench.co/2014/12/10/microservices-at-bench-intro

+0

То, что я хотел иметь в виду, был: это отдых и мыло единственным способом создания microservices? – mfrachet

+0

Обычно у вас есть комбинация синхронных (REST, SOAP) и асинхронных протоколов (очереди сообщений, такие как ActiveMQ, RabbitMQ и т. Д.). Опять же вам решать, как их объединить. Мой пример: http://labs.bench.co/2014/12/10/microservices-at-bench-intro – sap1ens

+0

Это означает, что если я кодирую две службы микропомощи с помощью java, мне нужно создать два разных файла войны на моем веб-сервере? Как насчет аутентификации без гражданства? Может ли он существовать передняя служба (auth management), которая используется другими? – mfrachet

1

Мое собственное определение:

microservice является автономным, развязаны компонент, который обрабатывает один бизнес озабоченность, и является расходным от других услуг.

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

С технической точки зрения: Вы можете создать microservices практически любой технологии: Java EE, Java + Spring, Python, Rails, Grails, Node.js и так далее. Из того, что я видел, он чаще всего применяется в области веб-приложений и ориентированных на обслуживание экосистем.В статье, на которую вы ссылаетесь, модель NetFlix - это очень интересная вещь для изучения, потому что вы можете увидеть все элементы глубинной архитектуры микросервиса: обнаружение сервисов, прерывание цепи, мониторинг, динамическая конфигурация и т. Д.

Некоторые вещи, которые вы могли бы хотеть, чтобы проверить, если вы Java-ориентированные:

Spring Облако позволяет использовать некоторые из этих же компонентов Netflix с минимумом ручного кодирования: http://cloud.spring.io/spring-cloud-netflix/

An фактический эксплуатационный пример на GitHub (не мой, но я использовал его в своем собственном обучении по теме): https://github.com/ewolff/microservice

с концептуальной точки зрения, ваш вопрос намекает на печально известной конструкции microservice дилеммой. Не обязательно «правильный» уровень детализации для микросервиса. Идея заключается в выборе уровня детализации, который имеет смысл в вашей бизнес-области. Если вы внедряете микросервисы на очень низком уровне детализации (например, уровень CRUD), то почти наверняка вы получите очень частые сервисы, и вам, вероятно, придется создавать более значимые составные сервисы поверх. Если вы выберете слишком высокий уровень детализации, вы можете получить более монолитное приложение, которое позже может потребовать рефакторинга в куски размером с микросервис.

+0

Как насчет комбинации компонентов? Как управление пользователями и управление биллингами? Один из них связан с другим, но службы должны быть отделены друг от друга. Как разбить код на жизнеспособные микросервисы в соответствии с концепцией микросервиса в этом случае? – mfrachet

+1

Как упоминалось в ссылке Франсуа, один из способов заключается в реализации услуг управления пользователями и биллингами, а затем перед этими службами с другой службой для агрегирования их поведения по мере необходимости. В какой-то мере решение о том, что является/не является частью услуг, сводится к компромиссу между использованием вашего приложения и целостности отдельных проблем. Это вызов, который присущ дизайну микросервиса. – icey502

1

Предыдущие ответы велики. Архитектура микросервисов только функциональный дизайн разложения.

Я предлагаю вам прочитать это сообщение в блоге: Microservice Design Patterns

С технической точки зрения, есть аа много инструментов, как Docker (для запуска каждого microservice как Linux контейнер) и Kubernetes, чтобы организовать их , как услугу (здесь Kubernetes sample).

0

Служба для микросервиса - это Java для JavaScript. Не думай об этом так. Вместо микросервиса можно подумать о следующем:

  1. Небольшой проблемный домен.
  2. Построен и развернут сам по себе.
  3. Выполняется в собственном процессе.
  4. Интеграция через известные интерфейсы.
  5. Имеет собственное хранилище данных.
0

Я бы начал с вашего последнего вопроса - Это связано только с webservices? Это спорно. Я бы сказал, НЕТ. Это связано с веб-сервиса (но не только к ней.)

Мартин Фаулер описывает microservices как небольшое подмножество SOA, после того, как все microservices являются услуги и SOA является очень общим и широким термином.

Ниже приведены некоторые из важных аспектов Microservices:

  1. Каждая служба (или набор из немногих) должен иметь свой собственный магазин данных.
  2. Услуги организованы вокруг потребностей бизнеса или функциональности.
  3. Каждая услуга является независимой, поэтому их можно реализовать на любом языке. Приводит к культуре программирования полиглотов в команде.
  4. Услуга может принимать запрос от клиента или от других служб.
  5. Обычно они управляются событиями и асинхронны, поэтому масштабирование становится проще.
  6. Услуги являются немыми, поскольку они делают только одну вещь (но они должны быть самодостаточны для контроля)
  7. Они могут быть полезны при непрерывном развертывании или доставке, поскольку реализация для развертывания цикла действительно небольшая.
  8. Они очень маленькие, поэтому в их развертывании не так много сетевых издержек. Таким образом, они могут быть развернуты через кластер узлов за несколько минут.

    Кроме того, я хочу подчеркнуть, что выше не только верно о микросервисах. Такие компании, как google, netflix и Amazon, делали подобные вещи еще до того, как этот термин был придуман.

Смежные вопросы