gifts2017

Автоматизация обменов в распределённой базе данных средствами VisualBatch

Опубликовал Денис Дзюба (dzuyba) в раздел Администрирование - Распределенная БД (УРИБ, УРБД)

Стандартный механизм распределённых баз данных на основе планов обменов не даёт гибкости в доставке XML пакетов. Что делать, если нет связи или FTP недоступен? Как узнать текущее состояние репликации? Как передать XML пакет в IP сеть за NAT маршрутизатор? Попробуем дать ответы на эти вопросы.

Введение

Реализованные в 1С 8 механизмы работы с распределёнными базами данных на основе объекта «Планы обменов» дают разработчикам полноценный инструмент по настройке репликации данных. В данной статье мы не будем рассматривать вопросы настройки планов обменов, а лишь предложим решение по более качественной и гарантированной доставке пакетов данных.

Так же будем отталкиваться от того, что вы уже по какой-то причине выбрали офлайн решение, возможно из-за медленных каналов связи или для решения задач отказоустойчивости и теперь вам требуется более продвинутый механизм передачи XML пакета между узлами обмена. Рассмотрим, как мы решаем эту задачу у своих клиентов.

Постановка задачи

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

Рассмотрим по пунктам, чего не хватает в стандартной реализации и что хочется получить.

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

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

Обратная связь – Заваливать обслуживающий персонал электронными письмами и SMS сообщениями о каждом шаге системы нет смысла. А вот сообщить о неудаче обязательно нужно. То есть нужна система принятия решений о необходимости оповещения и использующая различные способы достучаться до админа: почта, jabber сообщение, всплывающее окно на его рабочем столе.

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

Работа в качестве Windows службы – Необходимо чтобы на серверах участвующих в обмене всё работало в виде Windows службы, а не запускалось в трэй на рабочем столе одного из пользователей.

Больше транспортов доставки – Если сети офиса и филиалов настроены с использованием доменов Windows, то выкладывать файлы обменов достаточно и в Windows папки совместного доступа. Если этого нет, то используем FTP папку или прикрепление к электронному письму. В случае повышенных требований к безопасности транспорта используем SFTP на основе протокола SSH с использованием пар ключей RSA.

Реализация

Для реализации решения отвечающего указанным требованиям мы предлагаем использовать разработанный нами продукт VisualBatch.

Основная идея

Главным компонентом продукта является приложение, предназначенное для визуального создания и отладки работы диаграмм, состоящих из отдельных команд. Каждая команда выполняет действие схожее с инструкциями пакетных файлов Windows и различных сервисных приложений, применяемых в пакетных файлах. Атомарные команды на диаграмме представлены блоками, имеющими один или несколько входов и один или несколько выходов, в зависимости от задач решаемых командой. Среда визуального создания диаграмм позволяет разместить на диаграмме любое количество блоков и соединить связующими линиями выходы и входы блоков, тем самым настроить условия ветвлений работы диаграммы при её запуске на выполнение (Рис. 1).

 

 Пример конструирования диаграммы в приложении «Дизайнер диаграмм»

Рис. 1. Пример конструирования диаграммы в приложении «Дизайнер диаграмм».

 

Разработанные нами блоки позволяют автоматизировать решение многих административных задач и в частности задачу выполнения обменов для конфигураций 1С.

Удалённое взаимодействие

В комплект поставки продукта входят две Windows службы. Первая – PAUTMessageService, она является реализацией службы очередей сообщений. Более детально о её работе можно прочитать в статье: http://infostart.ru/public/128273. Чтобы использовать её возможности при конструировании диаграмм в группе «Удалённое взаимодействие» есть блок позволяющий отправлять сообщения через эту службу и блок ожидания сообщений. Например, с помощью этих блоков диаграмма расположенная в центральном офисе может «слушать» события приходящие из филиалов и принимать решения о дальнейших действиях. На рисунке 2 показаны примеры таких диаграмм. Создайте две такие диаграммы в различных экземплярах дизайнера и запустите сначала диаграмму 2б, а затем 2а.

 

Отправка сообщения

 Рис. 2а. Отправка сообщения.

Ожидание сообщения

Рис. 2б. Ожидание сообщения.

 Диаграмма с рисунка 2а отправит событие с именем «TestMessage» на локальный хост, в свою очередь диаграмма 2б будет ждать этого события в течении десяти минут и выдаст текстовое сообщение в случае успеха или завершит свою работу по таймауту.

Вторая служба называется PAUTCommandService, её работа основана на функционале первой службы. Она предоставляет более высокоуровневый сервис, позволяющий принимать задание на выполнение диаграмм от удалённых хостов, причём диаграмма может быть передана с вызывающего хоста, а затем запущена на выполнение. Для взаимодействия с этой службой разработан блок «Выполнить диаграмму» (Рис. 3).

 

 Пример передачи диаграммы для выполнения на другой хост

Рис. 3. Пример передачи диаграммы для выполнения на другой хост.

 

На примере блока видно, что установлен переключатель «Выполнять на удалённом хосте». При выполнении блока это приведёт к тому, что диаграмма, указанная в поле «Файл диаграммы» будет передана на все хосты указанные в списке «Домен, хост или маска IP адресов».

Создаём необходимые диаграммы

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

                Можно выделить следующих участников процесса (Рис. 4):

  1. Сервер центрального офиса с установленным продуктом VisualBatch;
  2. Стандартный планировщик заданий на сервере центрального офиса;
  3. FTP сервер развёрнутый на сервере центрального офиса;
  4. Некоторое количество филиалов с развернутым продуктом VisualBatch на их серверах;
  5. Набор из диаграмм, хранящихся на сервере центрально офиса и реализующих все необходимые операции по выполнению обмена;
  6. Один из пользователей системы наделённый полномочиями по запуску диаграмм обмена в произвольное время. Для этого на его ПК так же необходимо развернуть VisualBatch.

 

 Компоненты системы обмена

Рис. 4. Компоненты системы обмена.

 

Создаём следующие диаграммы для каждого филиала:

  1. Выполнение выгрузки данных для филиала. Эта диаграмма будет выполняться в центральном офисе;
  2. Выполнение загрузки данных в филиале. Эта диаграмма будет выполняться в филиале;

Так же создаём главную диаграмму, которая выполняет полный цикл обмена для всех филиалов.

 

Сценарий работы диаграммы выгрузки данных для филиала следующий:

  1. Выполняем заранее подготовленную обработку 1С содержащую единственную строчку кода по формированию XML файла обмена для этого узла;
  2. Берём сформированный файл и, используя выбранный нами транспорт, передаём на сторону филиала;
  3. Посылаем филиалу команду на выполнение диаграммы по загрузке данных. Причём в блоке «Выполнить диаграмму» используем возможность передачи диаграммы на удалённый хост;
  4. Ждём поступления события со стороны филиала. Вариантов три: успех, неудача или истечение времени ожидания;
  5. Если пришло сообщение об успехе – выполняем загрузку файла ответа.

 

Сценарий работы диаграммы по загрузке данных в филиале следующий:

  1. Забираем файл данных;
  2. Выполняем заранее подготовленную обработку 1С по загрузке данных;
  3. Берём сформированный файл ответа и, используя выбранный нами транспорт, передаём на сторону центрального офиса;
  4. Посылаем сообщение в центр о завершении работы.

 

Сценарий работы главной диаграммы таков: перебираем в заранее определённой папке все диаграммы первого этапа и выполняем их.

 

Необходимо отметить следующее:

  1. Решение о необходимости оповещения администратора можно принять на любом этапе выполнения сценариев обмена, большинство блоков умеют возвращать результат «Ошибка»;
  2. За счёт наличия в блоке «Ожидать PAUT сообщения» возможности настроить таймаут ожидания, можно принять решение о том что в филиале возникли не предвиденные проблемы и необходимо вмешательство администратора;
  3. Для предотвращения одновременного запуска нескольких экземпляров диаграмм в рамках одного сервера можно использовать блоки из группы «Объекты синхронизации». Это избавит администратора от возможных проблем.

 

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

 

Далее остаётся настроить запуск главной диаграммы обмена по расписанию, используя для этих целей, стандартный планировщик задач входящий в Windows.

 

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

Дополнительные возможности

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

Если с филиалом нет связи – а обмен делать надо. Пишем диаграммы по копированию определённых файлов на USB накопитель. Эти диаграммы, «знают» какой файл должен уходить в филиал, куда его складывать и как запускать цикл обмена в филиале. Более того все операции с USB накопителем можно сопровождать всплывающими окнами – подсказывающими людям на местах, что сейчас необходимо сделать. Разработанные нами блоки позволяют ожидать подключения конкретного USB накопителя, идентифицируя его по серийному номеру, выполнять корректное отключение устройства. Примеры диаграмм работы с USB накопителями включены в комплект поставки.

Отображение на мониторинге – при большом числе филиалов без мониторинга процесса обмена не обойтись. Мы применяем простую схему – каждый филиал отображается на мониторинге в виде «лампочки». Красный цвет – значит необходимо вмешаться, зелёный – всё в порядке. В VisualBatch входит разработанная нами система мониторинга основанная на отображении Майкрософт Visio документа в качестве схем сети или элементов сетевого взаимодействия.

Отключение активных пользователей – во время выполнения обмена бывает потребность в монопольном доступе к данным конфигурации. В данной версии продукта нет блоков, позволяющих принудительно отключить пользователей на основе механизма заложенного в 1С. Мы предлагаем воспользоваться возможностями нашей службы очередей сообщений PAUTMessageService. Доработайте конфигурации с использованием внешней компоненты разработанной нами, о её возможностях рассказано в статье: http://infostart.ru/public/128273.

Хосты за маршрутизаторами с NAT – т.е. сервера участвующие в обмене не могут взаимодействовать, не используя какой-то внешний сервис, как может возникнуть такая ситуация? Может из-за отсутствия правильно настроенной сетевой инфраструктуры, а может это сделано сознательно. Что мы предлагаем? В обеих точках на маршрутизаторах настроить «проброс» порта. Настройки нашей службы передачи сообщений позволяют это учесть и тогда центральная и периферийная точки смогут взаимодействовать не замечая ограничений. Если возможности перенастроить маршрутизаторы нет, есть вариант наладить взаимодействие служб через третий узел, который имеет «белый» IP адрес и может выступать в роли посредника по передачи сообщений между закрытыми сетями.

Использование туннелей – часто бывает, что филиал представлен одиночным ПК. Для такого случая предлагаются блоки по работе с PPTP подключениями, мы можем, без участия пользователя: создать подключение, контролировать его активность и также обмениваться сообщениями и выполнять файловые операции.

Альтернативный транспорт – Так как передаваемый пакет обмена является XML строкой, его можно передать на принимающую сторону через дополнительный параметр поля «Данные для оповещения» блока «Отправить PAUT сообщение». Это позволит вообще отказаться от внешнего инструментария по передачи файлов, хотя при размере XML файла больше 300кб возможны завершения работы блоков по таймауту.

Заключение

Всё сказанное так же относится и к обменам 1С 7.7 на основе УРИБ. Нами разработаны примеры диаграмм и демонстрационные конфигурации, которые выложены на сайте. Более детальную информацию по работе продукта можно получить ознакомившись с его документацией.

 

Скачать файлы

Наименование Файл Версия Размер
VisualBatch 1.4.msi 19
.msi 125,58Mb
11.06.13
19
.msi 125,58Mb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. pepe (pepe) 11.06.13 17:49
Хорошая идея, осталось только на практике попробовать.
2. Денис Дзюба (dzuyba) 12.06.13 12:13
Пробуйте, если будут вопросы то пишите поможем.
3. Anton Ka (qw12225) 12.06.13 14:43
Сейчас готовлю статью почти на эту тему, скоро появиться, реализация немного другая (связана с тем что филиалы не завязаны в одну сеть с центральным офисом). Будет интересно почитайте.
4. Денис Дзюба (dzuyba) 12.06.13 17:08
Наш сервер очередей сообщений при определенных настройках передает данные между закрытыми сетями. Об этом я написал в параграфе "доп. возможности". Настраивается просто указанием внешнего ip и пробросом порта. Статью о вашей реализации обязательно прочитаю.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа