Интерактивный обмен - ускорение РИБ по магазину

Опубликовал Галина idex.rt (idex.rt) в раздел Отраслевые решения - Торговля

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

"Как это работает" глазами пользователя

Когда вы изменяете какие-то данные в системе, интерактивный обмен запоминает сохраненные вами данные и сразуже отправляет их в те узлы распределенной информационной базы, куда эти данные должны поступить. При этом это не блокирует вашу работу, поскольку интерактивный обмен работает параллельно с вами. Ждать три часа до ближайшей выгрузки не нужно. Никаких кнопок нажимать тоже не нужно. Данные введенные, например, в магазине почти мгновенно отразятся в офисе.

"Как это работает" глазами специалиста

Интерактивный обмен подписан на запись всех объектов и регистров конфигурации. Опубликован Web-сервис интерактивного обмена центрального или всех узлов распределенной базы. При записи данные объекта/регистра сохраняются в регистре сведений вместе с узлами на которые этот объект предстоит отправить (узлы берутся из РИБ по магазину и РИБ по рабочему месту). Это не занимает много времени (не более 0,02с на наших тестах). Далее запускается фоновое задание, чтобы все последующие процессы происходили вне сеанса пользователя, в котором происходит перепаковка данных, подключения к web-сервисам удаленных узлов и передача данных. Если узел-корреспондент не имеет публикации на web-сервисе (например, опубликована только центральная база) передача произойдет в момент, когда узел-корреспондент будет передавать какие-то данные в текущую базу.

Как это НЕ работает:

  • Не происходит затирания более "свежей" версии объекта более ранней, вследствие каких-то задержек при передаче данных (напр. нет интернета) Вопросы коллизий обмена тщательно проработаны и при наличии конфликта версий - выбор всегда будет делаться в пользу более "свежей" версии объекта.
  • С регистрами сведений, неподчиненными регистратору версионирование работает также, как с объектами. Мы тщательно проработали этот вопрос и рассматривали разные сценарии (например создание записи в одном узле, передача в два других,  изменение во втором, удаление в третьем и т.п.) - в итоге распределенная база придет к состоянию, когда во всех узлах применится последнее действие. Как это работает - секрет*.
  • Не происходит лавинообразного роста количества фоновых процессов в случае записи большого количества объектов или работы большого количества пользователей в базе. Фоновый процесс всегда один и он будет собирать и передавать изменения данных от всех сеансов.
  • Не происходит блокировок данных. В отличие от типовой РИБ выгрузки, интерактивный обмен не блокирует работу пользователя.
  • При невозможности передать данные удаленному узлу (нет интернета, работы на сервере) - данные не теряются, а накапливаются и передаются при следующей попытке. При этом, данные передаются не одним куском, а порциями для избежания проблем с передачей .

* - весь исходный код открыт, секрет можно узнать после покупки =)

Еще пара технических деталей:

  • интерактивный обмен - это надстройка над РИБ по магазину / РИБ по рабочему месту, которая обеспечивает передачу данных. Создание подчиненных узлов, обновление конфигураций РИБ происходит по традиционной схеме, т.е. через РИБ по магазину.
  • объекты в он-лайн обмен попадают только при записи. искусственно (без записи) отправить объекты через он-лайн обмен нельзя. Для этого необходимо пользоваться обработкой Регистрация изменений для обмена данными и далее запускать типовой обмен через файл или ftp.
  • протестировано для обновления "из коробки" конфигурации Розница 2.2.5.21 на платформе 1С:Предприятие 8.3.9.2033
  • обмен информацией между информационными базами осуществляется через web-сервис. Публикация сервиса интерактивного обмена должна быть выполнена в центральном узле или во всех узлах информационной базы
  • сопоставление объектов в информационных базах осуществляется исключительно по уникальным идентификаторам.
  • при работе с предопределенными элементами, если полученный предопределенный элемент имеет уникальный идентификатор отличный от имеющегося в базе - перед загрузкой полученного предопределенного произойдет удаление имеющегося.
  • последовательность загрузки объектов не гарантируется, т.е. в каждый конкретный момент времени консистентность данных может быть нарушена, однако, после успешного окончания всех обменов восстановление консистентности гарантируется.
  • при возникновении коллизии обмена (изменении одного объекта в разных узлах) - конфликт будет разрешен в пользу более позднего изменения.
  • при внедрении потребуется включить возможность изменения в Рознице, поскольку есть пара типовых механизмов в которые необходимо внести изменения (буквально пара строчек)
  • при использовании обмена, отличного от РИБ по магазину потребуется адаптация: если надстройка ведется над РИБ БСП соответствующей версии - достаточно будет изменить переопределяемый тип. Если над другим планом обмена - потребуется дополнительно создать регистр сведений с параметрами подключения к удаленным узлам.

Бесплатная поддержка при внедрении - 1 мес.

Причины купить

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

Достоинства

  • идеально подходит для 1с:Розница 2.2. Создан для встраивания в РИБ по магазину и/или РИБ по рабочему месту. При этом типовой обмен РИБ по магазину остается в полностью рабочем состоянии.
  • быстрый старт. Интерактивный обмен использует уже существующие узлы обмена и правила регистрации.
  • скорость работы. Вместо многочасовых выгрузок вы получаете актуальность данных в распределенной базе измеряемую секундами.
  • высокая устойчивость. Алгоритмы интерактивного обмена построены таким образом, чтобы максимально изолировать процессы друг от друга. Ошибка соединения с одним узлом не приведет к отказу от обмена с другим узлом, проблема в передаче данных не приведет к остановке распаковки уже полученных данных и так далее.
  • асинхронность. Интерактивный обмен, в отличие от РИБ, вместо накладывания блокировок на данные использует метод гарантированных последовательностей. Данный метод существенно повышает скорость и надежность работы пользоваеля при параллельном выполнении обмена.
  • гибкость использования. Интерактивный обмен может быть надстроен над любым планом обмена (не обязательно в Рознице и не обязательно РИБ). Работоспособность во всем многообразии вариантов применения гарантировать невозможно, однако при наличии плана обмена для получения от него узлов и изменений - может успешно работать в любой конфигурации.

Гарантия возврата денег

Гарантия возврата денег

ООО "Инфостарт" гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

Лицензии

Наименование Файл Версия Размер
Интерактивный обмен
20.03.2017
2.1.2 15000 руб.

Моментальная
доставка

Все

Наименование Файл Версия Размер
Тех.поддержка 1 месяц
20.03.2017
5000 руб.

См. также

Комментарии
1. Дмитрий Жичкин (zhichkin) 192 21.03.17 01:31 Сейчас в теме
Сейчас 2017 год.
В 2003 году, 14 лет назад, вышла в свет замечательная книга "Enterprise Integration Patterns": https://en.wikipedia.org/wiki/Enterprise_Integration_Patterns.
Сайт автора этой книги: http://www.enterpriseintegrationpatterns.com/.

В своей книге Грегор Хоп описывает 4 стиля интеграции:
- файловый обмен (эта штука всем знакома);
- общая база данных (РИБ);
- удалённый вызов процедур (web-сервисы в том числе);
- обмен сообщениями (всевозможные MQ).
Так вот ... в последнее время я всё чаще встречаю различные варианты интеграции при помощи web-сервисов. Очень часто эта технология предлагается для обмена данными. Однако она никогда не предназначалась для этого!

Есть два концептуальных уровня интеграции: на уровне данных и на уровне функциональности. Web-сервисы относятся ко второй группе.

Данный продукт, представленный в этой публикации, является очередной попыткой преодолеть проблемы РИБ. Это хорошо, но ...
1. Вероятно, лучше всего было бы обратить внимание на то, что данный продукт решает проблему блокировок при регистрации изменений. Интересно как ... тема слабо раскрыта. Думаю, что она основана на идеях транзакционной репликации.
2. Интересен механизм разрешения коллизий между несколькими базами данных. Тема тоже очень плохо раскрыта. Думаю тем, кому это по настоящему интересно, имеет смысл изучить то, на чём построена платформа синхронизации Microsoft Sync Framework (публикация от 2009 года): https://msdn.microsoft.com/en-us/library/mt763482.aspx. Особенно то, что касается терминов "версия" и "знание".
3. Web-сервисы в данном случае играют роль только транспорта ... и это не самое удачное решение. Особенно при высоко нагруженных системах (я за MQ решения).
2. Галина idex.rt (idex.rt) 21.03.17 09:16 Сейчас в теме
(1)
Спасибо за развернутый комментарий.
По вашим замечаниям:
1. Вы правильно думаете, суть именно в репликации транзакций, но раскрывать подробности смысла не вижу: большинству интересно, что эта штука донесет чек от магазина до офиса за несколько секунд, а не то как она там логирует, транспортирует и накатывает транзакции
2. Я не знаком с Sync Framework, но при беглом прочтении - идея не в том. Идея в том, что каждой транзакции присваивается версия отражающая не количество произведенных изменений над объектом, а время (UTC) изменения. Далее думаю понятно.
3. Вы правы, такой подход позволяет много где сэкономить, но в тоже время он более громоздкий. Суть этой разработки в том, что она не "ломает хребет" РИБ обмену, а естественным образом дополняет его.
3. Дмитрий Жичкин (zhichkin) 192 21.03.17 12:17 Сейчас в теме
(2) UTC время это и есть по сути версия (или фиксация количества произведённых изменений, как Вы это называете). Однако опора на отметку времени делает допущение, что время будет всегда синхронизировано между всеми узлами обмена. Таким образом существует зависимость от служб времени. Sync Framework не зависит от этого. Для этого кроме понятия "версия" вводится понятие "знание". Вкратце суть этого понятия такова: при приёме сообщения приёмник сравнивает версию источника, о которой он уже "знает" с момента последней синхронизации, с той, которая только что получена. Это очень похоже на номера сообщений планов обмена 1С, но дополнительно позволяет синхронизировать "знания" между произвольным количеством узлов обмена.

Да, "хребет" РИБ Вы не ломаете. По сути, как я это вижу, Вы реализуете механизм приоритизации отправки сообщений. Почти все MQ системы имеют этот функционал из коробки.

Что более громоздко установка web-сервера или MQ служб, это вопрос навыков и умения. Примерно одинаково по сложности. Если говорить о MSMQ, то это вообще вопрос нескольких минут настройки операционной системы.
Программирование работы с web-сервисом или очередью сообщений по трудоёмкости примерно одинаковы.
Плюсов в эксплуатации у MQ перед WS в плане гибкости, надёжности и прочее я думаю гораздо больше. Я бы предпочёл WS, а не MQ только в одном случае - необходимость использования функционала (алгоритмов) другого приложения, чтобы их не дублировать.

В любом случае, Вы решаете конкретную проблему, помогаете людям, и это замечательно!
Желаю Вам удачи в развитии Вашего продукта.