Интервал повторного подключения

#websocket #server #continuous-deployment #reconnect

#websocket #сервер #непрерывное развертывание #повторное подключение

Вопрос:

Я ищу рекомендации по обработке перезапусков сервера. В частности, я показываю цены на акции пользователям, использующим websockets для веб-приложения для моделирования дневной торговли. У меня 10 тысяч одновременных пользователей. Чтобы обеспечить адаптивный пользовательский интерфейс, я повторно подключаюсь к websocket при запуске события onclose. По мере роста нашей пользовательской базы нам пришлось масштабировать наше оборудование. В дополнение к улучшенному оборудованию мы внедрили случайную задержку перед повторным подключением. Цель этого — распределить поток рукопожатий при перезапуске сервера каждую ночь (непрерывное развертывание). Однако у некоторых наших пользователей плохой интернет (isp и / или wifi). Их соединение постоянно прерывается. Для этих пользователей я бы предпочел, чтобы они немедленно подключились. Есть ли решение этой проблемы, которое не имеет вышеупомянутых компромиссов?

Комментарии:

1. Вероятно, узким местом является один сервер. Вместо масштабирования на оборудовании (по вертикали) масштабируйте горизонтально (добавляйте больше экземпляров одной и той же службы) и выполняйте непрерывное обновление (обновляйте и перезапускайте каждый экземпляр, один за другим).

Ответ №1:

Вопрос требует субъективного ответа, вот мой 🙂

  • Различение отключения клиента и завершения работы сервера: это может быть достигнуто путем отправки сообщения о завершении работы через websocket, чтобы активные клиенты могли подготовиться и повторно подключиться со случайной задержкой. Таким образом, клиент, который сталкивается с onclose событием без надлежащей трансляции выключения, сможет повторно подключиться как можно скорее. Это означает, что клиентское приложение необходимо изменить, чтобы учесть это специальное событие завершения работы.
  • Обработка нагрузки квитирования: некоторые веб-серверы могут обрабатывать входящие соединения как асинхронную параллельную очередь событий, таким образом, не более X соединений будут инициализированы одновременно (параллельно), а другие будут ждать в очереди, пока не придет их очередь. Это позволяет сохранить производительность сервера, и, таким образом, квитирование websocket будет автоматически отложено в зависимости от реальных возможностей обработки сервера. Конечно, это означает изменение технологии веб-сервера и зависит от вашего варианта использования.