Дельта-прокси
Дельта-прокси - нововведение Webim, увидевшее свет в версии 10.6. Дельта-прокси берёт на себя обработку операторских дельта-запросов (/l/o/delta
), что позволяет снизить нагрузку на Chat Backend и демонстрировать высокую эффективность работы сервиса даже при очень большом количестве активных обращений.
Дельта-прокси является отдельным компонентом Webim Server, занимающимся обработкой операторских дельта-запросов. Общая схема работы представлена на схеме ниже:
Как видно из схемы, общее количество запросов к Chat Backend снижается, стабилизируя работу сервиса при большом количестве активных обращений. Реализовано это посредством изменения логики работы с дельтами - при включенном дельта-прокси дельты с изначальным состоянием некоторого объекта (fullUpdate
) отправляются по запросу в delta proxy, и затем дельты со списком инкрементальных обновлений для fullUpdate
-дельт (deltaList
) формируются автоматически на все возможные действия и отправляются в поток Redis, откуда по запросу из дельта-прокси можно вытащить необходимую дельту. Время жизни дельт в потоке Redis ограничено пятью минутами, чистка истекших дельт происходит раз в минуту. В случае, если некоторая дельта была запрошена после своего удаления из потока, компоненту дельта-прокси будет возвращено fullUpdate
.
Стоит отметить, что сервер дельта-прокси при необходимости возможно масштабировать горизонтально, запуская нужное количество инстансов, что позволяет добавлять мощность при увеличении нагрузки, задействуя любое количество ядер, процессоров или серверов.
Важно!
Дельта-прокси помогает работе сервиса при увеличении нагрузки со стороны операторов (большое количество активных операторов, интенсивная работа), но не посетителей.
Инструкция по настройке дельта-прокси
Важно!
Данная инструкция актуальна для hosted-размещений. В случае, если Вы - облачный клиент, и Вам хотелось бы подключить дельта-прокси, обратитесь в службу технической поддержки.
-
Для работы дельта-прокси необходимо завести два дополнительных сетевых компонента, на которых будут располагаться СУБД Redis и обработчик дельта-прокси.
-
Обратитесь в техническую поддержку для получения версии Webim с поддержкой дельта-прокси.
-
Установите полученные пакеты.
-
Сконфигурируйте Redis. Создайте файл
redis.json
в директории/etc/webim
Chat Backend. Заполните его следующим образом:{ "connections": { "redis": { "url": "redis://<redis_ip>:<redis_port>" } } }
-
Настройте nginx для поддержки дельта-прокси. Добавьте в конфигурационный файл следующее перенаправление:
location ~ /l/o/delta { rewrite (.*) /api/dp/v1/o/delta last; proxy_pass http://<chat_server>; include /etc/nginx/webim-common/python_proxy_params; error_page 413 /webim/error-413.json; }
-
Подключите Chat Backend и дельта-прокси к Prometheus. URL:
/metrics
.Существует два варианта подключения Chat Backend к Prometheus: через основной http-порт и через переданный в необязательном параметре запуска
--prometheus_port
. Второй вариант может помочь получать метрики даже при сильной загруженности основного потока. -
Подключите дельта-прокси к системе мониторинга. URL:
/ping
. -
Перезапустите Chat Backend с параметром
--redis_connection=redis
.