Весенняя загрузка минимального прокси - PullRequest
0 голосов
/ 30 октября 2018

У меня есть архитектура микроуслуг, которая выглядит следующим образом:

Пользовательский интерфейс <-> Spring-boot-rest-app1 <-> Spring-boot-rest-app2 <-> Хранилище данных

app1 заботится о некоторых вещах, связанных с отдыхом (проверка, преобразование объектов и т. Д.), А app2 обрабатывает общение с хранилищем данных. Окончательный результат возвращается в пользовательский интерфейс.

Однако для конкретной конечной точки полезная нагрузка POST огромна (массив JSON из 80 тыс. Объектов (примерно 10 ключей каждый)).

Для этой конкретной конечной точки я бы хотел, чтобы spring-boot-rest-app1 не беспокоилась о сериализации почтовой нагрузки и передавала ее непосредственно Spring-boot-rest-app2. Затраты на сериализацию в два раза больше не стоят, и я хотел бы выяснить, допустимо ли однократное сериализацию.

В настоящее время маршрут определен как таковой в app1:

@ApiOperation(value = "Do long operation")
@PostMapping(value = "/route", produces = "application/json")
public Result longOperation(@RequestBody CumbersomeObject input) throws IllegalArgumentException {
    validate(input);// for example
    return app2.connector.longOperation2(input); // for example
}

Я попытался вставить ProxyExchange.java в мое приложение напрямую и вызвать его так:

@PostMapping(value = "/route", produces = "application/json")
public ResponseEntity<?> proxy(ProxyExchange<Object> proxy) {
    return proxy.uri("${url.app2}/app2Route").post();
}

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

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

Естественно, я не против того, чтобы жертвовать безопасностью типов, просто стараюсь максимально снизить задержку приложения.

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

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