Spring Boot - Для чего используются разные системы (eureka, zuul, tape, nginx,)? - PullRequest
0 голосов
/ 16 октября 2018

Я работал с spring и теперь хотел бы изучить spring boot и микросервисы.Я понимаю, что такое microservice и как это работает.Проходя через документы, я обнаружил много вещей, которые использовались для разработки microservices вместе с spring boot, что меня очень смутило.

Я перечислил системы ниже. И вопросы:

  1. Netflix Eureka - я понимаю, что это платформа для обнаружения услуг.Все services будут зарегистрированы на eureka сервере, а все microservices являются eureka клиентами.Теперь я сомневаюсь, что без использования API-шлюза можно ли использовать этот реестр служб?Это необходимо для понимания фактического использования реестра служб.
  2. Шлюз ZUULApi - Я понимаю, что ZUUL можно использовать в качестве шлюза API, который в основном является балансировщиком нагрузки, который вызывает соответствующий микросервис, соответствующийзапросить URL.Это предположение верно?Будет ли API-шлюз взаимодействовать с Eureka для получения соответствующего микросервиса?

  3. NGINX - Я прочитал NGINX также можно использовать в качестве шлюза API?Это возможно?Также я читал кое-что, например, NGINX можно использовать в качестве реестра служб, то есть в качестве альтернативы для Eureka!Так что же правильно?Api-шлюз или сервисный реестр или оба?Я знаю, что nginx является веб-сервером, и reverse proxies может быть мощно сконфигурирован.

  4. AWS API-шлюз - Это также может использоваться в качестве альтернативы для ZUUL?

  5. ЛЕНТА - для чего используется ribbon?Я не понял!

  6. AWS ALB - Это также можно использовать для балансировки нагрузки.Таким образом, нам нужен ZUUL, если у нас есть AWS ALB?

Пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 15 июля 2019

Различные системы, которые могут использоваться для работы microservices, который поставляется вместе с пружинной загрузкой:

  1. Eureka: Вероятно, первый микросервис, который будетUP.Eureka - это сервисный реестр, значит, он знает, какие микросервисы работают и в каком порту.Eureka развертывается как отдельное приложение, и мы можем использовать аннотацию @EnableEurekaServer вместе с @SpringBootAPplication, чтобы сделать это приложение сервером eureka.Итак, наш сервисный реестр eureka работает и работает.Отныне все микросервисы будут регистрироваться на этом сервере eureka с использованием аннотации @EnableDiscoveryClient вместе с @SpringBootAPplication во всех развернутых микросервисах.

  2. Zuul : ZUUL - это приложение load balancer, routing и сервер reverse proxy.Это было до того, как мы использовали Apache для работы с обратным прокси-сервером, теперь для микросервисов мы можем использовать ZUUL.Преимущество в том, что в ZUUL мы можем программно настраивать конфигурации, например, если / customer / * переходит к такому микросервису.Также ZUUL может выступать в качестве балансировщика нагрузки, который будет подбирать соответствующий микросервис круглым способом.Так как же ZUUL знает детали микросервисов, ответ - эврика.Он будет работать вместе с eureka, чтобы получить детали микросервиса.И на самом деле этот ZUUL также является клиентом Eureka, где мы должны пометить, используя @EnableDiscoveryClient, вот как связаны эти 2 приложения (Eureka и zuul).

  3. Лента : Использование ленты для балансировки нагрузки.Это уже доступно внутри ZUUL, в котором zuul использует ленту для балансировки нагрузки.Микросервисы идентифицируются по имени сервиса в файле свойств.Если мы запустим 2 экземпляра одного микросервиса в другом порту, это будет идентифицировано Eureka и вместе с Ribbon (Inside zuul), запросы будут перенаправлены сбалансированным образом.

  4. Aws ALB, NGINX, шлюз AWS Api и т. Д. Существуют альтернативы для всех вышеупомянутых вещей.У Aws есть собственный балансировщик нагрузки, обнаружение служб, шлюз API и т. Д.Они есть не только у всех облачных платформ AWS, таких как Azure.Зависит от того, какой из них использовать.

  5. Добавление также общего вопроса Как эти микросервисы взаимодействуют друг с другом : Использование Resttemplate или Feignclient API фактического отдыхаможно вызывать или использовать очереди сообщений, такие как Rabbit MQ и т. д.

0 голосов
/ 16 октября 2018

без шлюза API. Используется ли этот реестр служб?

Да.Например, вы можете использовать его для определения местоположения (IP и порт) всех ваших микросервисов.Это пригодится для работы типа devops.Например, в одном проекте, над которым я работал, мы использовали Eureka, чтобы найти все экземпляры наших микросервисов и проверить их статус (/ health, /info).

Я понимаю, что можно использовать ZUULв качестве шлюза API, который в основном является балансировщиком нагрузки, вызывает соответствующий микросервис, соответствующий URL-адресу запроса.Это предположение верно?

Да, но это может сделать намного больше.По сути, поскольку Zuul - это скорее фреймворк / библиотека, которую вы превращаете в микросервис, вы можете кодировать его для реализации любой логики маршрутизации, которую вы можете придумать.Это очень сильно в этом смысле.Например, допустим, вы хотите изменить способ маршрутизации в зависимости от времени суток или любых других внешних факторов, с помощью Zuul вы можете сделать это.

будет ли шлюз API взаимодействовать с Eureka для получения соответствующегомикросервис?

Да.Вы настраиваете Zuul, чтобы указать на Эврику.Он становится клиентом Eureka и даже подписывается на Eureka для получения обновлений в реальном времени (какие экземпляры присоединились или ушли).

Я читал, что NGINX также может использоваться в качестве шлюза API?Также я читал, что где-то еще, например, NGINX можно использовать в качестве реестра служб, то есть в качестве альтернативы для Eureka!Так что же правильно?Api-шлюз или сервисный реестр или оба?

Nginx довольно мощный и может выполнять работу с типом шлюза API.Но есть некоторые основные различия.AFAIK, микросервисы не могут динамически регистрироваться в Nginx, пожалуйста, исправьте меня, если я ошибаюсь ... как они могут в Eureka.Во-вторых, хотя я знаю, что Nginx очень (очень) настраиваем, я подозреваю, что его возможности конфигурации не приближаются к возможностям маршрутизации Zuul (из-за того, что весь язык Java находится в вашем распоряжении в Zuul для кодирования вашей логики маршрутизации).Может быть так, что есть решения для обнаружения сервисов, которые работают с Nginx.Поэтому Nginx позаботится о маршрутизации и тому подобном, но для обнаружения службы все равно потребуется решение.

Может ли это также использоваться в качестве альтернативы ZUUL?

Да, AWS API Gateway можно использовать в качестве замены Zuul.Проблема, как и Nginx, заключается в обнаружении сервисов.AWS API Gateway позволяет применять логику к маршрутизации ... хотя и не так открыто, как Zuul.

для какой ленты используется?

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

Это также можно использовать для балансировки нагрузки.Таким образом, нам нужен ZUUL, если у нас есть AWS ALB?

. Вы можете использовать ALB с ECS (сервис эластичных контейнеров) для замены Eureka / Zuul.ECS позаботится о том, чтобы сервис открыл для вас, и сопоставит все экземпляры определенного сервиса с целевой группой.Ваша таблица маршрутизации ALB может затем направить в целевые группы на основе простых правил маршрутизации.Правила маршрутизации в ALB очень просты, но со временем улучшаются.

...