Что такое оркестровка сервисов/объединение данных?
Оркестровка служб/объединение данных означает, что несколько микрослужб могут вызываться последовательно с помощью одного запроса, а обработка данных выполняется для возвращаемых результатов каждой службы и, наконец, интегрируется в большой результат и возвращается во внешний интерфейс.
Например, услуга «запросить гостиницу, забронированную пользователем», внешнему интерфейсу нужно передать только идентификатор заказа, а серверная часть вернет информацию обо всем заказе, включая информацию о пользователе, информацию об отеле и номере. Информация.
Эта услуга может соответствовать следующим операциям:
- Запросите детали заказа и верните идентификатор пользователя, идентификатор отеля и идентификатор комнаты, соответствующие заказу;
- Запросить соответствующую информацию по различным идентификаторам;
- Данные фильтруются, перемещаются и т. д. и, наконец, интегрируются;
- Верните интегрированные данные во внешний интерфейс;
Следующая диаграмма поможет вам лучше понять:
Преимущества оркестровки
Архитектура микрослужб разделяет функции, а с помощью оркестровки служб можно быстро получать необходимые данные из различных служб и быстро реагировать на потребности бизнеса. В целом, оркестровка имеет следующие преимущества:
- Функция развязки, услуги можно использовать повторно;
- Дружественный внешний интерфейс, нет необходимости в нескольких запросах;
- Скорость ответа бизнеса высока, и услуга может быть быстро создана;
- Если возвращаемые данные изменены, интерфейс запроса не действует;
- В случае изменений в старой системе нет необходимости менять внешний интерфейс, и данные могут быть совместимы через шлюз.
Используйте инструмент оркестровки: Goku API Gateway
Позвольте мне кратко представить, что Goku API Gateway (китайское название: Goku API Gateway) — это шлюз микросервисов, разработанный на основе Golang, который может обеспечить высокопроизводительную пересылку HTTP API, оркестровку служб, многопользовательское управление, контроль доступа к API и другие цели. Пользовательская система подключаемых модулей может быть расширена сама по себе и предоставляет удобный графический интерфейс конфигурации, который может быстро помочь предприятиям управлять службами API и повысить стабильность и безопасность служб API.
Goku API Gateway поддерживает один API-интерфейс оркестрации, соответствующий нескольким серверным службам.Параметры запроса каждой серверной службы могут использовать параметры, переданные из внешнего интерфейса, или могут быть настроены в оркестровке (запись статических параметров или получение их из возвращаемых данных). . Возвращаемые данные каждой серверной службы поддерживают такие операции, как фильтрация, удаление, перемещение, переименование, распаковка и инкапсуляция; API-интерфейс оркестровки может установить возврат исключения в случае сбоя оркестровки.
Community Edition (CE) Goku API Gateway имеет как полное руководство по использованию, так и дополнительное руководство по разработке, а встроенная система подключаемых модулей также позволяет предприятиям настраивать разработку для своего бизнеса.
адрес проекта:GitHub.com/голодный компоновщик/go…
Адрес официального сайта:www.eolinker.com
Как сделать сервисную оркестровку на Goku?
Мы возлагаем всю работу по оркестровке на шлюз, а шлюз обрабатывает и преобразовывает данные, поэтому нет необходимости вносить изменения в серверные службы. Когда запрос поступает на шлюз, шлюз вызывает несколько серверных служб и обрабатывает данные, возвращаемые каждой службой на шлюзе (операции включают фильтрацию, перемещение, переименование, упаковку и распаковку, и каждая операция будет объяснена в подробности позже), наконец, шлюз интегрирует данные и возвращает их во внешний интерфейс.
Шаги
1. На шлюзе выберите сервисную оркестровку для типа вновь созданного API:
2. КонфигурацияПроверить и забронировать отельИнформация о запросе API:
3. Добавьте и настройте Шаг:Шлюз организует процесс дляПроцесс переадресации API(пересылка -> получение данных -> обработка данных) называетсяStep.
Добавьте службу пересылки, которая представляет собой API для запроса сведений о заказе, настройте соответствующий адрес пересылки, входящие параметры и то, что делать с возвращаемыми данными.
Из-за недостатка места последующие шаги (запрос сведений о пользователе, запрос сведений об отеле, запрос сведений о номере) не будут отображаться один за другим.Способ организации передачи параметров и обработки данных
(1) Два способа передачи параметров для аранжировки
Шлюз организует процесс дляПроцесс переадресации API(пересылка -> получение данных -> обработка данных) называетсяStep.
Мы обработаем API сведений о заказе, который называетсяStep1, возвращаемые данные шага 1: идентификатор пользователя, идентификатор отеля, идентификатор комнаты. Точно так же шаг запроса информации о пользователе называетсяStep2, будет запрашивать информацию об отеле какStep3, будет запрашивать информацию о комнате какStep4.
Проходящие параметры:
- Используя параметры, переданные из внешнего интерфейса, можно записать как:имя параметра body.parameter,заголовок. Имя параметра
- Использование возвращенных данных на шаге 1 в качестве параметра можно записать так:body1.имя параметра,заголовок 1. имя параметра
- и так далее
1. Передайте параметры в пути пересылки
Ниже приведен метод передачи параметров пути пересылки:
- Например, Step1 должен получить параметр orderID, переданный внешним интерфейсом, а также параметр Authorization. Путь пересылки шага 1 можно записать так: /getOrderInfo/{{body.orderID}}/{{header.Authorization}}
- Например, шаг 2 получает возвращенный параметр идентификатора пользователя (userID) на шаге 1, а также получает параметр авторизации, переданный внешним интерфейсом. Путь пересылки шага 2 можно записать так: /getUserInfo/{{body1.userID}}/{{header.Authorization}}
2. Настройте параметры запроса на шаге
Шаг 2 должен получить идентификатор пользователя, возвращенный на шаге 1, в качестве параметра, и в то же время необходимо получить параметр авторизации, переданный внешним интерфейсом.
Конфигурация параметров запроса на шаге 2 в шлюзе выглядит следующим образом: если имеется несколько параметров запроса, они представлены новой строкой:
(2) Обработка возвратных данных
1. API для запроса сведений о заказе, возвращаемые данные называютсяjson1, содержание следующее:
{
"status":"000000",
"data":{
"id":"201910180009x"
,"user_account":"zzz@163.com"
,"hotal":"0001"
,"room":"biger1"
,"time_start":"20191019"
,"time_end":"20191020"
}
}
2. API для запроса сведений о пользователе, возвращаемые данные называютсяjson2, содержание следующее:
{
"status":"000000",
"data":{
"account":"goku@eolinker.com",
"full_name":"",
"phone":""
}
}
3. Запросить возвращаемые данные об отеле, называемыеjson3, содержание следующее:
{
"status":"000000",
"data":{
"id":"001",
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
}
4. Запросите возвращаемые данные сведений о комнате, называемыеjson4, содержание следующее:
{
"status":"000000",
"data":{
"name":"豪华大床房"
,"window":1
,"floor":"10-12"
,"nosmoke":1
}
}
5. Возвращенный Json может быть обработан на каждом шаге, шлюз окончательно интегрирует обработанные данные и вернется во внешний интерфейс, например, это возвращается через шлюзокончательные данные:
{
"id":"201910180009x"
,"userInfo":{
"account":"goku@eolinker.com",
"full_name":"",
"phone":""
}
,"hotelinfo":{
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
, "roominfo":{
"name":"豪华大床房"
,"window":1
,"floor":"10-12"
,"nosmoke":1
}
}
В качестве примера возьмем возвращаемые данные json3 API запроса сведений об отеле, чтобы объяснить, как шлюз обрабатывает возвращенные данные в процессе оркестровки.
Необработанные данные, возвращаемые API для запроса сведений об отеле, выглядят следующим образом:
{
"status":"000000",
"data":{
"id":"001",
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
}
Данные, которые перехватывают информацию об отеле из данных, возвращаемых шлюзом во внешний интерфейс, выглядят следующим образом:
"hotelinfo":{
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
Затем от исходных данных к обработанным данным требуются следующие операции:
1. Черный список полей
Функция черного списка полей заключается в исключении определенных полей и поддержке формы массива.
Конфигурация на шаге 3 шлюза выглядит следующим образом:
После обработки шлюзом фактически возвращенные данные выглядят следующим образом. Вы можете видеть, что поле id в объекте данных было отфильтровано:
{
"status":"000000",
"data":{
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
}
2. Полевая распаковка
Распаковка относится к извлечению содержимого указанного объекта в качестве возвращаемого результата шага. Соответствующая цель может быть только объектом. Если соответствующая цель пуста, результатом будет {}, который можно использовать для очистки данных.
Конфигурация на Шаге шлюза следующая:
После обработки шлюзом фактически возвращенные данные выглядят следующим образом, вы можете видеть, что объект данных дизассемблирован, а окончательные данные сохраняют только поля в объекте данных:
{
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
3. Пакет
Поле package будет упаковывать текущие данные целиком в объект в окончательных возвращаемых данных.* не поддерживается, и массивы не поддерживаются.
Конфигурация на Шаге шлюза следующая:
После обработки шлюзом фактически возвращаемые данные выглядят следующим образом, и данные упакованы как объект hotelinfo в целом:
{
"hotelinfo":{
"type":"星级酒店",
"name":"",
"address":"",
"location":{},
}
}
После трех шагов необработанные данные можно превратить в окончательные данные.
В этой статье перечислены только некоторые операции обработки данных в процессе оркестровки.Для получения более подробной информации об оркестровке вы можете обратиться к ссылке на учебник, приведенной в конце статьи.
Ссылки по теме
адрес проекта:GitHub.com/голодный компоновщик/go…
Адрес официального сайта:www.eolinker.com
Связанные учебники:Сервисная оркестровка