Полноценные комментарии D7 под Битрикс
 

Документация

Система распределения нагрузки

Для крупных проектов и для проектов с большим потоком комментариев актуальными являются следующие проблемы:

  1. Каждый новый комментарий, каждое голосование увеличивает счётчик кодов (ID) в базе данных и увеличивает объём данных основной базы.
    Пожелание клиента: чтобы система комментирования была отделена от основной структуры инфоблоков и использовалась в независимой системе хранения данных как вспомогательный сервис.
  2. Реструктуризация, параллельная разработка, переезд влекут за собой и «перемещение» комментариев, которые являются по-сути уже сформировавшимися единицами данных и не требуют каких-либо изменений. Когда в рамках проекта собран уже не один десяток комментариев, двигать их «с места на место» становится обузой для разработчиков и администраторов.
    Пожелание клиента: чтобы хранилище комментариев можно было легко переключать от проекта к проекту и переносить его независимо от основного сайта.

После анализа описанных проблем мы разработали новую версию модуля, которая позволяет:

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

Запуск системы в работу

Рассмотрим пример простейшей схемы распределения нагрузки. В результате её реализации мы отделим обработчик-хранилище комментариев от основного сайта, что освободит базу данных на основном сайте и позволит корректировать серверные настройки «хранилища комментариев» под специфику данной задачи.

Для реализации схемы нам понадобится:

  • основной сайт (CMS Битрикс + модуль «Полноценные комментарии»);
  • сайт-обработчик (CMS Битрикс + модуль «Полноценные комментарии»).

Шаги настройки выглядят так:

  • На сайте-обработчике создаём обсуждения, которые будут использоваться на основном сайте.
  • На основном сайте модуль комментариев настраиваем в режиме «Транслятор», указываем данные сайта-обработчика (доменное имя + секретный код).
  • На сайте-обработчике в настроках режима «Обработчик» добавляем на обслуживание новый сайт-транслятор. Указываем доменное имя основного сайта, секретный код и какие инфоблоки выделены для него.

Система распределения нагрузки / www.realcommenter.com

После этих настроек основной сайт получает возможность хранить комментарии не только локально, но и на сайте-обработчике. Для того, чтобы определённое обсуждение направить на сайт-обработчик, необходимо в параметрах компонента выбрать режим «translator-mode» и указать инфоблок на обработчике.

Аналогичным образом к сайту-обработчику можно подключить и другие сайты.

Система распределения нагрузки / www.realcommenter.com

Стоит отметить, что на сайте-обработчике хранятся только данные с комментариями. Данные о пользователях и подгруженные к комментариям изображения остаются в рамках основного сайта. Встроенный в модуль кеш также независим. То есть, если комментарий прочитан с сайта-обработчика и с тех пор не менялся, основной сайт будет использовать свои закешированные данные. Без обращения к удалённому сайту. На обработчике рекомендуется отключить кеширование, чтобы не удваивать работу жёстких дисков.

Система распределения нагрузки / www.realcommenter.com

Механизм реализован в рамках одной полной сборки модуля «Полноценных комментариев», выпускаемые обновления одинаковы как для обычных сайтов (без сопроводительных сайтов-обработчиков), так и для сайтов-трансляторов/обработчиков.


Управление системой распределения нагрузки

Поддерживаемые режимы:

Одиночный режим — хранение и обработка данных производится на текущем сайте.

Сайт-транслятор. Данный сайт отображает и собирает данные, которые передаются на обработку и хранение сайту-обработчику.

В настройках данного режима нужно указать данные сайта-обработчика:

  • доменное имя;
  • секретный ключ.

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

В настройках данного режима указывается список таких наборов данных:

  • доменное имя сайта-транслятора;
  • секретный ключ;
  • список инфоблоков (обсуждений), доступных для запросов сайту-транслятору.

Настройки для режима «Транслятор»

Настройки доступов в рамках системы распределения нагрузки производятся на сервисной странице «Распределение нагрузки» (Административный раздел / Сервисы / Полноценные комментарии / Распределение нагрузки).

В закладке для настройки режима «Транслятор» указывается доменное имя сайта, который будет использован в качестве сайта-обработчика и секретный код. Секретный код используется во время составления защитного ключа, который используется сайтом-обработчиком во время обработки запроса. Если защитный ключ не совпадает (например, данные запрашиваются с неразрешённого сайта), запрос обработан не будет.

Также в настройках присутствует параметр «хранить загружаемые файлы на сайте-обработчике». Если данный параметр включен, все прикрепляемые к комментариям изображения будут передаваться, храниться и обрабатываться на сайте-обработчике. Отображаться в ветке обсуждения изображения будут также с прямой ссылкой на удалённый сайт.

Ниже формы для ввода данных находится блок с технической подсказкой — данные, которые нужно указать на сайте-обработчике.

Особенности режима «Транслятора»

Модуль комментариев с заполненными настройками режима «Транслятора» подразумевает возможность хранить комментарии как обычно (на этом же сайте), так и на удалённом хранилище. Если заполнены настройки режима «Транслятор», в административной части модуля происходят следующие изменения:

  • на сервисной странице «Список обсуждений» (Административный раздел / Сервис / Полноценные комментарии / Список обсуждений) появляются переключатели просмотра: для отображения обсуждений (инфоблоков), размещённых «Локально» и «На Обработчике»;
  • сервисная страница «Неактивные и заблокированные» производит поиск по всем доступным системе обсуждениям — и локальным и удалённым;
  • сервисная страница «Поиск сообщений» производит поиск комментариев пользователя по всем доступным системе обсуждениям — и локальным и удалённым;
  • в настройках модуля в закладке «Пользователи» появляется дополнительное свойство, с помощью которого можно указать, по каким инфоблокам собирать статистику о пользователе (если не указано ничего — выборка производится по всем инфоблокам);
  • в параметрах компонента появляется переключатель, с помощью которого можно указать, в какой инфоблок накапливать комментарии — локальный или на обработчике. Именно этим параметром производится непосредственно переключение работы в режим «через обработчик». Благодаря такому механизму можно проводить «плавное» переключение уже работающих проектов на новую систему.

Настройки для режима «Обработчик»

Модуль комментариев может обслуживать в режиме обработчика неограниченное количество сайтов-трансляторов. В закладке для указания настроек доступа к обработчику указывается список сайтов, которым открыт дистанционный доступ к инфоблокам.

Набор данных для каждого сайта-транслятора:

  • доменное имя, с которого будут приходить запросы;
  • секретный код для проверки защитного ключа;
  • список инфоблоков, к которым открывается доступ.

Выражаем признательность первому заказчику, благодаря которому стала возможной разработка системы распределения нагрузки, — «Сети информационных изданий Блокнот».