Как правильно построить микро сервис, когда это связано с файловой системой - PullRequest
1 голос
/ 11 марта 2019

У меня есть API1, который вызывает API 2 для выполнения таких задач, как:

1) Обрезка изображений, сохранение изображений

Этот процесс занимает много времени и, конечно, время ожидания вызова.

Оба API встроены в Nodejs Rest API.

Как правильно построить этот процесс, чтобы у меня не было тайм-аутов?

Вызывать ли конечную точку, а затем вызыватьконечную точку как-нибудь позже проверить еще раз?

1 Ответ

1 голос
/ 12 марта 2019

Система, в которой вы можете ожидать тайм-аут из-за длительной работы, вы используете aysnc AMQP (расширенный протокол очереди сообщений). Обе службы / приложения должны работать полностью независимо. Ваша служба 1 отбрасывает сообщение в очередь, а служба 2 забирает сообщение для обработки. После этого он уведомляет службу 1.

Вы должны помнить, что REST / HTTP является синхронным по своей природе, и вам нужно знать последствия. Это означает, что когда ваша служба 1 запрашивает другую службу через HTTP для выполнения чего-либо и ожидает ее завершения, вы фактически блокируете поток. Хотя ваш клиент может реализовывать асинхронный http-вызов, но вы все еще ждете, пока запрос завершится синхронно, и такую ​​систему очень трудно масштабировать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...