Перейти к содержанию

Дельта-прокси

Дельта-прокси - нововведение Webim, увидевшее свет в версии 10.6. Дельта-прокси берёт на себя обработку операторских дельта-запросов (/l/o/delta), что позволяет снизить нагрузку на Chat Backend и демонстрировать высокую эффективность работы сервиса даже при очень большом количестве активных обращений.

Дельта-прокси является отдельным компонентом Webim Server, занимающимся обработкой операторских дельта-запросов. Общая схема работы представлена на схеме ниже:

Схема работы дельта-прокси

Как видно из схемы, общее количество запросов к Chat Backend снижается, стабилизируя работу сервиса при большом количестве активных обращений. Реализовано это посредством изменения логики работы с дельтами - при включенном дельта-прокси дельты с изначальным состоянием некоторого объекта (fullUpdate) отправляются по запросу в delta proxy, и затем дельты со списком инкрементальных обновлений для fullUpdate-дельт (deltaList) формируются автоматически на все возможные действия и отправляются в поток Redis, откуда по запросу из дельта-прокси можно вытащить необходимую дельту. Время жизни дельт в потоке Redis ограничено пятью минутами, чистка истекших дельт происходит раз в минуту. В случае, если некоторая дельта была запрошена после своего удаления из потока, компоненту дельта-прокси будет возвращено fullUpdate.

Стоит отметить, что сервер дельта-прокси при необходимости возможно масштабировать горизонтально, запуская нужное количество инстансов, что позволяет добавлять мощность при увеличении нагрузки, задействуя любое количество ядер, процессоров или серверов.

Важно!

Дельта-прокси помогает работе сервиса при увеличении нагрузки со стороны операторов (большое количество активных операторов, интенсивная работа), но не посетителей.

Инструкция по настройке дельта-прокси

Важно!

Данная инструкция актуальна для hosted-размещений. В случае, если Вы - облачный клиент, и Вам хотелось бы подключить дельта-прокси, обратитесь в службу технической поддержки.

  1. Для работы дельта-прокси необходимо завести два дополнительных сетевых компонента, на которых будут располагаться СУБД Redis и обработчик дельта-прокси.

  2. Обратитесь в техническую поддержку для получения версии Webim с поддержкой дельта-прокси.

  3. Установите полученные пакеты.

  4. Сконфигурируйте Redis. Создайте файл redis.json в директории /etc/webimChat Backend. Заполните его следующим образом:

    {
        "connections": {
            "redis": {
                "url": "redis://<redis_ip>:<redis_port>"
            }
        }
    }
    
  5. Настройте 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;
    }
    
  6. Подключите Chat Backend и дельта-прокси к Prometheus. URL: /metrics.

    Существует два варианта подключения Chat Backend к Prometheus: через основной http-порт и через переданный в необязательном параметре запуска --prometheus_port. Второй вариант может помочь получать метрики даже при сильной загруженности основного потока.

  7. Подключите дельта-прокси к системе мониторинга. URL: /ping.

  8. Перезапустите Chat Backend с параметром --redis_connection=redis.