Масштабирование сервисов NodeJS с сохранением состояния - привязанность / соответствие на основе идентификатора объекта (не сеанса пользователя) - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь найти хороший способ горизонтального масштабирования службы NodeJS с отслеживанием состояния.

Проблема

Проблема заключается в том, что большинство параметров, которые я нахожу в ИнтернетеПредположим, что служба без гражданства.Документация кластера NodeJS гласит:

Node.js [Cluster] не предоставляет логику маршрутизации.Поэтому важно спроектировать приложение так, чтобы оно не слишком сильно зависело от объектов данных в памяти для таких вещей, как сеансы и вход в систему.
https://nodejs.org/api/cluster.html

Мы используем Kubernetes так,Масштабирование на нескольких машинах также было бы простым, если бы мой сервис не имел состояния, но это не так.

Текущая настройка

У меня есть список объектов, которые остаются в памяти,каждый объект сам по себе является границей транзакции.Запросы к этому сервису всегда имеют идентификатор объекта в URL.Запросы на один и тот же идентификатор объекта помещаются в очередь и обрабатываются по одному за раз.

Требуемая настройка

Я хотел бы сохранить этот интерфейс для внешнего мира, новнутренне распределить этот список объектов по нескольким узлам и на основании идентификатора в URL запрос будет перенаправлен на соответствующий узел.

routing request to appropriate node based on ID in URL

Что такоеобычный способ сделать это в NodeJS?Я видел людей, использующих сеанс пользователя, чтобы убедиться, что данный пользователь всегда идет на один и тот же узел, что я хотел бы сделать, это то же самое, но вместо того, чтобы использовать сеанс пользователя с использованием идентификатора в URL.

...