Что такое микросервис?

Микросервисы — это небольшие автономные программы, которые функционируют как производители и потребители данных, особенно между границами служб в виртуализированной облачной среде. Например, для отображения одной веб-страницы Amazon может использоваться 100–200 отдельных микросервисов. Микросервисы — это новый тип вектора защищенных сетевых ресурсов.

Микросервисы могут быть закодированы на различных языках, которые часто, но не всегда, зависят от облачной инфраструктуры, в которой находится микросервис. Кроме того, нет причин, по которым микросервис, запрограммированный на C#, нельзя спроектировать для взаимодействия с другим микросервисом, написанным на Python. Наиболее распространенными языками для создания микросервисов являются Python, Java, Ruby, C#, PHP, JavaScript, Elixir и Go.

На фундаментальном уровне микросервисы предоставляют ограниченный API, который предоставляет простой набор связанных функций, которые по своей конструкции «слабо связаны» с другими сотрудничающими сервисами. Связь относится к степени прямого знания, которое один компонент имеет о другом. Сообщения состоят из инструкций, связанных с метаданными и закодированных в формате обмена данными, таком как JSON. Другие компоненты, такие как заглушки тестирования или мониторинга, также обычно присутствуют в конкретной микрослужбе.



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

Основные компоненты микросервиса состоят из

  1. Message Dispatcher или, проще говоря, Producer, который публикует сообщения на служебной шине;
  2. Прослушиватель событий или потребитель, который получает сообщения от служебной шины; и
  3. Бизнес-логика (данные, которые передаются между производителями и потребителями).

Кроме того, большинство реализаций микросервисов полагаются на какой-либо тип брокера сообщений — обычно это библиотека, которая предоставляет очередь сообщений и обмен. Вы можете думать об очереди сообщений как о буфере. или массив длиной n. Обмен состоит из логики, которая получает сообщения от производителей и помещает их в правильные очереди. Существуют разные классы бирж, но мы не будем их здесь подробно описывать.

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

Производитель — это просто служба, которая отправляет данные. Мы обозначим его как круг с буквой P внутри.

Потребитель – это служба, которая получает данные и выполняет с ними определенные операции, например рендеринг PDF-файла. Мы представим это как круг с буквой C внутри.

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

Мы представим очередь в виде ряда синих ящиков.

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

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

Второй наиболее распространенный шаблон известен как публикация/подписка или PubSub. Этот шаблон позволяет потребителям подписываться на данные или события, созданные производителем. Шаблон показан ниже.

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

Существуют и другие шаблоны микросервисов, но эти два являются наиболее распространенными шаблонами обмена сообщениями, используемыми в облаке AWS. В большинстве случаев эти шаблоны основаны на одном или нескольких вызовах RPC. Мы скоро перейдем к RPC.

Микросервисы обеспечивают гибкость с точки зрения инфраструктуры и развертывания; трафик приложений направляется в наборы сервисов, которые могут быть распределены по ЦП, дискам, машинам и сетям, в отличие от единой монолитной платформы, предназначенной для управления всем трафиком. По аналогии с объектно-ориентированным (ОО) понятием инкапсуляции, основные преимущества слабосвязанных микросервисов заключаются в том, что время развертывания сокращается, поскольку теоретически любой взаимодействующий микросервисный контракт может быть заменен альтернативой, которая предоставляет одни и те же услуги без повторного развертывания или изменения архитектуры любой другой совместной микрослужбы. Кроме того, как упоминалось ранее, микросервисы в слабосвязанной системе менее привязаны к одной и той же платформе, языку, операционной системе или среде сборки.

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

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



Что такое микросервисы?

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

Микросервисы фиксируют ваш бизнес-сценарий, отвечая на вопрос «Какую проблему вы пытаетесь решить?» Обычно он разрабатывается командой инженеров, состоящей всего из нескольких человек, и может быть написан на любом языке программирования, а также может использовать любой фреймворк. Каждая из задействованных программ имеет независимую версию, выполняется и масштабируется. Эти микрослужбы могут взаимодействовать с другими микрослужбами и могут иметь уникальные URL-адреса или имена, оставаясь при этом всегда доступными и согласованными, даже если возникают сбои.

Каковы преимущества микросервисов?

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

Примеры микросервисных фреймворков для Java

Существует несколько платформ микросервисов, которые можно использовать для разработки для Java. Вот некоторые из них:

  • Spring Boot: это, вероятно, лучшая среда микросервисов Java, которая работает поверх языков для инверсии управления, аспектно-ориентированного программирования и других.
  • Джерси: эта платформа с открытым исходным кодом поддерживает API-интерфейсы JAX-RS в Java и очень проста в использовании.
  • Swagger: помогает вам документировать API, а также предоставляет вам портал разработки, который позволяет пользователям тестировать ваши API.

Другие, которые вы можете рассмотреть, включают: Dropwizard, Ninja Web Framework, Play Framework, RestExpress, Restlet, Restx и Spark Framework.

Как создать с помощью DropWizard

DropWizard объединяет проверенные и стабильные библиотеки Java в облегченных пакетах, которые вы можете использовать для своих собственных приложений. Он использует Jetty для HTTP, Jersey для REST и Jackson для JSON, а также Metrics, Guava, Logback, Hibernate Validator, Apache HttpClient, Liquibase, Mustache, Joda Time и Freemarker.

Микросервисы с Spring Boot

Spring Boot предоставляет вам приложение Java для использования с вашими собственными приложениями через встроенный сервер. Он использует Tomcat, поэтому вам не нужно использовать контейнеры Java EE. Образец учебника по Spring Boot находится по этой ссылке.

Вы можете найти все проекты Spring Boot здесь, и вы поймете, что Spring Boot имеет всю инфраструктуру, которая нужна вашим приложениям. Неважно, пишете ли вы приложения для безопасности, настройки или работы с большими данными; для него есть проект Spring Boot.

Проекты Spring Boot включают в себя:

  • Платформа Spring IO: дистрибутив корпоративного уровня для версий приложений.
  • Spring Framework: для управления транзакциями, внедрения зависимостей, доступа к данным, обмена сообщениями и веб-приложений.
  • Spring Cloud: для распределенных систем и используется для создания или развертывания микросервисов.
  • Spring Data: для микросервисов, связанных с доступом к данным, будь то сопоставление, реляционные или нереляционные.
  • Spring Batch: для больших объемов пакетных операций.
  • Spring Security: для поддержки авторизации и аутентификации.
  • Документы Spring REST: для документирования служб RESTful.
  • Spring Social: для подключения к API социальных сетей.
  • Spring Mobile: для мобильных веб-приложений.