Репликация расписаний¶
- Table of contents
- Репликация расписаний
Система позволяет автоматически формировать расписание, включая в него клоны (полные копии) блоков из других расписаний.
Для этого в расписании создается специальный блок с поведением: Блок повтора.
Блоки повтора:
- не могут иметь содержимого,
- игнорируются плеерами,
- отмечаются в расписании специальным значком.
Блок повтора¶
Это специальный блок расписания, который не имеет вложенных в него элементов. Он отмечает место, куда будет вставлена копия части другого расписания. В свойствах блоков повтора указывается поведение - Блок повтора:
Блок повтора указывает, что система репликации должна скопировать в это расписание все блоки из указанного интервала времени исходного расписания (кроме блоков повтора). Длина интервала совпадает с длиной блока повтора, а время начала повторяемого интервала в исходном расписании указывается в Свойствах на закладке Повтор интервала:
Абсолютное и относительное время повтора¶
Время повторяемого интервала можно указать двумя способами - абсолютное время и относительно часа.
- Абсолютное время задается время в исходных сутках, например 13:00:00. Это время не зависит от времени самого блока повтора. Более ранние версии ПО поддерживают только этот способ.
-
Относительно часа - время задается относительно часа, в котором находится блок повтора. Кроме этого, можно указать еще смещение в часах, также отсчитываемое от времени часа, внутри которого находится блок повтора.
В этом случае блок должен помещаться внутри одного часа, поэтому поля ввода ограничивают ввод часов, только минуты и секунды.
Например, если указано Час-3, время 40:00, длина 13 минут, то,
- для блока повтора 00:00:00, повторяемый интервал будет 21:40:00 - 21:53:00 предыдущих суток
- для блока повтора 12:00:00, повторяемый интервал будет 9:40:00 - 9:53:00
- для блока повтора 13:00:00, повторяемый интервал будет 10:40:00 - 10:53:00
Относительное время удобно при создании расписания через сетки и клоки, когда блоки повтора помещаются в часовые клоки.
Опции¶
В самом простом случае все блоки исходного интервала будут просто скопированы без изменения.
Но если в процессе копирования блоков необходимо их изменить или ограничить множество реплицируемых блоков, то необходимые изменения можно указать в списке Опции.
Например, можно реплицировать не все блоки, а только необходимого типа.
Изменение свойств¶
В обычной ситуации свойства блока-клона идентичны исходному. Но в некоторых случаях может возникнуть необходимость сделать так, чтобы клон имел отличия от исходного блока.
У блока-клона можно изменить:
- параметры привязки блока ко времени,
- параметры, относящиеся к работе системы ретрансляции.
Для изменения параметров необходимо отметить Установить параметры времени и (или) Установить параметры ретрансляции и нажать кнопку Настроить.
Далее необходимо выбрать чем именно будет отличаться клон.
Если ни один из параметров не установлен, то клон отличаться от оригинала не будет.
Особенности
Параметры применяются целиком, полностью заменяя параметры исходных блоков.
Параметры применяются для всех блоков-клонов, созданных по одному блоку повтора.
При необходимости по-разному модифицировать клоны, необходимо настроить систему репликации более детально - с большим количеством блоков повтора, в самом крайнем случае - один блок повтора на один исходный блок.
Редактор свойств ретрансляции отображает тип блока как "Блок ретрансляции". Это сделано специально, чтобы позволить менять Канал ретрансляции.
Фактически канал трансляции устанавливается только если реплицируемый блок является блоком ретрансляции, к блокам вещания это свойство не применяется.
Отображение в расписании¶
Блок повтора отображается в расписании специальным символом, а в колонке Название указывается исходное расписание и время интервала в нем.
Блок повтора по-разному отображается в расписании на конкретные сутки и в окне шаблонов или клоков, т.е. когда он не привязан к конкретной дате.
В расписании отражается реальная дата и время реплицируемого интервала.
В клоках отображаются параметры блока повтора без указания конкретной даты.
Кто выполняет репликацию¶
Репликация расписаний выполняется приложением Джинн, если включена опция Реплицировать расписание в Сервис-Настройки-Репликация расписаний. Расписания реплицируются целиком, посуточно. Репликация расписаний из прошлого невозможна.
До версии 2.17.2.138 репликация выполняется на одном рабочем месте, т.к. одновременная работа нескольких репликаторов может привести к появлению дублирующихся клонов. Начиная с версии 2.17.2.138 и выше доступна возможность параллельного выполнения задач репликации двумя и более Джинн Репликатор.
После включения опции приложение начинает реплицировать используемые на данном рабочем месте расписания. Реплицируются только те расписания, которые открыты приложением. Репликатор сам расписания не открывает, но просит об этом систему опережающего открытия, внося в нее все расписания из Общих настроек.
Система опережающего открытия открывает расписания вперед на количество дней, указанное в Отслеживать расписания вперед на (дней[2;10]) в Сервис - Настройки на вкладке Доп.-Параметры системы подкачки. При этом не имеет значения, работает сама система подкачки или нет.
Отсчет начинается с текущего дня, т.е. 2 дня - это сегодня и завтра, 3 дня - это сегодня, завтра и послезавтра и т.д.
Каждые 60 секунд программа проверяет блоки повтора и копирует блоки из исходного расписания, вставляя их после блока повтора и соответственно меняя им время начала.
Репликация расписания вносит в клоны все изменения, сделанные в исходном расписании: если после клонирования исходный блок был изменен - его клон также будет изменен, если исходный блок удалить - все его клоны также будут удалены.
Репликатор захватывает расписания не все сразу, а по частям – не более 25% от всех имеющихся, и только тогда, когда предыдущие захваченные уже загрузились и пошли на обработку. Внутри репликатора загрузка расписаний происходит по одному, загрузка следующего начинается только тогда, когда предыдущее загрузилось, даже если это займет больше времени, чем несколько секунд.
В случае двух и более репликаторов - все расписания поровну делятся между репликаторами. Порядок расписаний для каждого репликатора сохраняется, чтобы исключить переброс расписаний между репликаторами.
Блок-клон¶
Блок-клон - это копия блока из исходного расписания, указанного в свойствах блока повтора.
- Блок-клон создается системой репликации и находится после блока повтора, определяющего исходный для репликации фрагмент расписания.
- Блок-клон зеркально отображают все изменения, вносимые в исходном расписании в исходные блоки.
- Редактирование содержимого блоков-клонов запрещено (т.к. они отражают изменения исходных блоков), но этот запрет можно снять, запретив репликацию блока. Это делается из контекстного меню расписания, командой Запретить репликацию блока. Клоны с запрещенной репликацией можно редактировать и изменения из исходного расписания не будут вносится в них автоматически до включения команды Включить репликацию блока.
- Блоки-клоны также отмечаются в расписании специальным значком - штампом, зеленым или красным в зависимости от состояния репликации:
зеленый - репликация разрешена, красный - нет. - Блоки-клоны воспринимаются плеерами, как обычные блоки.
Политика редактирования клонов¶
По умолчанию, активные блоки-клоны редактировать нельзя, но это поведение можно изменить. В Настройки приложения добавлена опция Расписание-Политика редактирования блоков-клонов с возможными значениями:
- Запрещать редактирование активных (это значение по умолчанию).
При этом редактирование активных блоков клонов невозможно. - Выключать клонирование измененных.
В этом режиме любое редактирование блока приведет к запрету его обновления.
Требования¶
Для работы репликации необходим работающий сервис sch_to_db, подключенный к этому же корневому пути.
Особенности репликации¶
Репликатор не отслеживает изменения, а получает их из МБД.
В МБД информацию об изменениях формирует отдельное приложение, одно на весь комплекс (или Сервис SchToDb, или DDB AGent).
Изменения формируются для всех расписаний из Общих настроек.
- Программа не проверяет блоки повтора, которые целиком (по времени окончания) уже в прошлом.
- Программа не вносит изменения в клоны, если исходный блок изменен после наступления времени окончания клона.
- Система репликации обрабатывает все расписания каждые 60 секунд.
- При изменении параметров блока повтора клоны, которые уже были сделаны ранее (но оказываются теперь вне интервала повтора или не из исходного расписания) удаляются.
- Система репликации вносит в отладочный лог записи типа DBGL_REPLICATION, в настройках отладочного лога включается/выключается опцией "Репликация расписаний".
Настройка репликации на несколько дней вперед¶
Система репликации не имеет настройки, указывающей, на сколько дней вперед ей необходимо работать. Она обрабатывает все открытые приложением расписания. Если необходимо реплицировать расписания на несколько дней вперед, то необходимо настроить систему опережающего открытия расписания.
Для того, чтобы настроить систему опережающего открытия расписания (и настроить репликацию более, чем на 2 дня вперед) нужно зайти в Сервис-Общая настройка-Доп.-МБД и указать Сколько дней расписания сохранять в БД [2...30].
Изменения формируются для всех расписаний из Общих настроек.
Таким образом, для работы репликации на несколько дней вперед необходимо:
1. Включить опцию Реплицировать расписание в Сервис-Настройки-Репликация расписаний.
2. Зайти в Сервис-Общая настройка-Доп.-МБД и указать Сколько дней расписания сохранять в БД [2...30].
3. Настроить опцию Отслеживать расписания вперед на (дней[2;10]) в Сервис-Настройки на вкладке Доп.-Параметры системы подкачки.
Известные проблемы¶
- До версии 2.16.0.84 Джин-репликатор и сервис sch_to_db не считывали изменения, внесенные в общие настройки и не замечали новые расписания (#21503, #20836).
- До версий 2.15.102.278, 2.16.0.75: Создание лишних блоков-клонов, в частности, при перекрытии (наложении) по времени блоков повтора друг на друга. Эта проблема описана тут: #19758. В комментариях описано изменения поведения для исправления проблемы.
- Обратите внимание, что в поколение 2.15.37 исправления не вносились.
Отладочный лог¶
Отладочный лог пишется в виде: Сообщения_DBGL_REPLICATION