Служба истечения срока действия сеанса дизайна - PullRequest
0 голосов
/ 20 июня 2020

У меня есть интеграция с поставщиком видеопотока. Процесс следующий: пользователь запрашивает URL-адрес потока, затем мы от имени пользователя запрашиваем его у поставщика потока и возвращаемся пользователю. Затем мы должны продлевать идентификатор потока (сеанс) каждые 10 секунд. Чтобы свести к минимуму взаимодействие с клиентом и из-за медленной сети, мы хотим продлить этот сеанс от имени пользователя. Допустим, пользователь будет запускать один запрос каждые 2-5 минут, при этом сервер будет запускать запросы на продление сеанса каждые 10 секунд.

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

Может у вас есть идеи, как это побороть? Или предложите лучшее решение

1 Ответ

0 голосов
/ 22 июня 2020

Я бы написал keep alive как отдельный автономный фрагмент кода, который будет вызывать keep alive каждый x номер в течение секунд в течение y количества времени, прежде чем завершать сам себя, где x, y и конечная точка keep alive являются параметрами запуска .

Каждый раз, когда пользователь запускает запрос, отключите один из них в фоновом режиме. Как вы упаковываете, это определяется в вашей среде развертывания и как вы собираетесь управлять масштабированием (фоновый поток, новый процесс, бессерверная функция и т. Д. c.).

Возможно, вам потребуется поддерживать какое-то состояние информация в кеше для целей управления (не запускайте новый, если он уже запущен, зависшие состояния процесса и т. д. c.).

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