Глобальные переменные не обновляются из-за балансировки нагрузки


Есть два сервера, на которых работает веб-служба, и эти серверы сбалансированы по нагрузке с помощью HAProxy.

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

Мои проблемы, когда я устанавливаю значение переменной gloabl с помощью веб-службы; из-за балансировщика нагрузки обновляется только один сервер. Благодаря этому приложение несколько раз считывает глобальное значение и когда запрос идет на второй сервер, он не будет читать его, так как глобальная переменная не обновляется на этом сервере.

Может ли кто-нибудь сказать мне, как справиться с подобной ситуацией? И веб-служба, и приложение основаны на Java.
1 2

1 ответ:

Во-первых, полагаться на глобальные данные, вероятно, плохая идея. Лучшим решением было бы сохранить данные в некотором общем хранилище, таком как база данных или (общий) кэш Redis. Во - вторых, при необходимости можно использовать фиксированные сеансы на балансировщике нагрузки, чтобы последующие запросы всегда возвращались на тот же веб - сервер, пока он доступен. Последняя квалификация является одной из причин, по которым следует предпочесть решение с общим кэшем или базой данных-сервер может выйти из строя для обслуживания или какая-то другая проблема во время сеанса пользователя.