Я пытаюсь найти хороший способ горизонтального масштабирования службы NodeJS с отслеживанием состояния.
Проблема
Проблема заключается в том, что большинство параметров, которые я нахожу в ИнтернетеПредположим, что служба без гражданства.Документация кластера NodeJS гласит:
Node.js [Cluster] не предоставляет логику маршрутизации.Поэтому важно спроектировать приложение так, чтобы оно не слишком сильно зависело от объектов данных в памяти для таких вещей, как сеансы и вход в систему.
https://nodejs.org/api/cluster.html
Мы используем Kubernetes так,Масштабирование на нескольких машинах также было бы простым, если бы мой сервис не имел состояния, но это не так.
Текущая настройка
У меня есть список объектов, которые остаются в памяти,каждый объект сам по себе является границей транзакции.Запросы к этому сервису всегда имеют идентификатор объекта в URL.Запросы на один и тот же идентификатор объекта помещаются в очередь и обрабатываются по одному за раз.
Требуемая настройка
Я хотел бы сохранить этот интерфейс для внешнего мира, новнутренне распределить этот список объектов по нескольким узлам и на основании идентификатора в URL запрос будет перенаправлен на соответствующий узел.
![routing request to appropriate node based on ID in URL](https://i.stack.imgur.com/Y9hos.png)
Что такоеобычный способ сделать это в NodeJS?Я видел людей, использующих сеанс пользователя, чтобы убедиться, что данный пользователь всегда идет на один и тот же узел, что я хотел бы сделать, это то же самое, но вместо того, чтобы использовать сеанс пользователя с использованием идентификатора в URL.