Это третий пост из моей серии о микросервисах, в которой я рассказываю о своих впечатлениях от этого архитектурного стиля с использованием Java с Spring Boot.
Полный цикл статей приведен ниже:
В этой статье мы реализуем API-шлюз и решение для централизованного журнала, снова используя практический подход с использованием среды Java и Spring Boot.
Код этой статьи доступен на GitHub в ветке ch-03 .
Очень распространенный шаблон, используемый в микросервисах, - это реализация шлюза API, который является единой точкой входа для всех клиентов. Это становится первым уровнем доступа к сервису, который может быть предоставлен одним или несколькими микросервисами. Некоторые запросы просто перенаправляются в соответствующую службу, в то время как другие должны обращаться к нескольким службам.
Некоторые преимущества этого шлюза API:
Предполагаемая архитектура в примере этой серии статей, включая API Gateway, будет такой:
Вернемся к коду, давайте настроим новый проект в качестве шлюза API с использованием Spring Cloud Gateway, поскольку это рекомендуемая библиотека в новых версиях Spring Boot (Zuul устарела):
Полный файл pom.xml этого проекта можно увидеть здесь .
Теперь нам нужно обратиться к маршрутам в файле application.yml . Обратите внимание, что каждый сопоставленный маршрут в шлюзе адресован соответствующему микросервису:
spring:
application:
name: API-GATEWAY
cloud:
gateway:
routes:
- id: PRODUCT-CATALOG-SERVICE
uri: lb://PRODUCT-CATALOG-SERVICE
predicates:
- Path=/api/product/**
- id: USER-INFORMATION-SERVICE
uri: lb://USER-INFORMATION-SERVICE
predicates:
- Path=/api/user/**
- id: SHOPPING-CART-SERVICE
uri: lb://SHOPPING-CART-SERVICE
predicates:
- Path=/api/cart/**
server:
port: 8085
Итак, после запуска всех сервисов мы можем сделать прямой запрос к микросервисам корзины покупок , каталога продуктов или информации о пользователе , или мы можем вызвать их через API-шлюз (обратите внимание на порт шлюза 8085), который будет перенаправлен на каждая запрашиваемая услуга:
По мере роста количества микросервисов становится все труднее и труднее управлять журналами каждого из них и отслеживать некоторые запросы / ответы.
Чтобы лучше отслеживать запросы, мы можем использовать сервер Zipkin и Spring Cloud Sleuth .
Это решение предоставляет « TraceId », который является уникальным идентификатором запроса, и « SpanId », который представляет каждую службу, которой достиг запрос.
Журнал будет выглядеть так:
[SERVICE-NAME,trace-id,span-id]
Сгенерированные журналы и идентификаторы могут быть отправлены на сервер Zipkin, где можно искать и отслеживать каждый запрос по многим параметрам.
Прежде всего, нам нужен запущенный Zipkin-сервер. Мы можем скачать его с этого сайта (я решил загрузить версию jar и запустить ее с помощью java -jar….):
Теперь нам нужно добавить зависимость zipkin и sleuth в каждый микросервис:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency>
spring:
// ... omitted configs ...
zipkin:
base-url: http://127.0.0.1:9411/
После запуска всех микросервисов и выполнения некоторого запроса (например, POST в конечной точке корзины покупок ) мы можем отследить запрос на странице Zipkin, используя некоторые критерии, такие как 'имя-службы', например:
И страница результатов должна выглядеть так:
Где вы можете подробнее узнать о запросе:
Введение Apache Kafka — это платформа распределенной потоковой передачи с открытым исходным кодом, которая обеспечивает крупномасштабную, высокопроизводительную и отказоустойчивую потоковую передачу данных в режиме реального времени. Система основана на модели публикации-подписки, в которой производители публикуют сообщения в темах, а потребители подписываются на эти темы для использования сообщений.
Я читал об усилиях команды Amazon Prime Video по масштабированию и сокращению расходов на 90 % за счет объединения своих микросервисов в монолит. Хотя я уверен, что здесь есть нечто большее, похожие истории опубликованы в Интернете; своего рода опровержение повального увлечения микросервисами последнего десятилетия.
Введение: Добро пожаловать, смелые читатели, в путешествие, которое приведет нас в самые темные глубины нашей планеты. В этом блоге мы погружаемся в загадочный мир Марианской впадины, раскрывая его скрытые секреты и открывая леденящие кровь истины, которые лежат под его поверхностью.
Во избежание двусмысленности будут использоваться следующие термины; Аутентификатор; Мобильный телефон, используемый для входа на веб-сайт; веб-сайт или приложение, которое пользователь использует для выполнения запроса на вход в систему; Поставщик, предоставляющий данную услугу, например
Вы можете быть исследователем OSINT, игроком CTF или просто тем, кто получает спам-звонки. Кто-то, кто пытается проверить номер, который вы видели в рекламе.
Мы часто обнаруживаем, что изо всех сил пытаемся реализовать то, что, как мы знаем, полезно для нас. От того, чтобы сказать значимому другому, что мы любим его, до того, чтобы помнить, что нужно говорить как пират, всегда будут те, кто утверждает, что день, неделя или месяц событий не нужны, потому что они уже делают эти вещи.