Tutorial по обмену с 1С. Часть четвертая: Обмен через промежуточную базу данных

Виктор С.

В 2022 году на долю маркетплейсов приходится более 65% рынка онлайн-продаж в секторе B2C. На сегодняшний день площадки занимают основную долю рынка электронной коммерции, и их популярность растет с каждым днём.

Тренд последних лет  — маркетплейсы. 70% россиян хотя бы раз в месяц приобретают товары на площадках.

Чтобы соответствовать современным требованиям, нужно держать руку на пульсе: первыми узнавать о новейших технологиях  — первыми внедрять  — первыми получать результат.

В статье мы рассмотрим, какие преимущества есть у современного асинхронного обмена над типовым, какие могут быть сложности при реализации, какие есть риски.

Стандартный обмен данными

В предыдущих статьях мы уже рассмотрели типовой обмен Битрикс. Выгрузка в интернет-магазинах с широким ассортиментов товаров при таком обмене займет слишком много времени. Возможны следующие проблемы:

  • нехватка оперативной памяти,

  • длительная выгрузка,

  • падение сервера БД,

  • таймаут соединения.

 Итог: типовой обмен устарел, при использовании требует доработок.

Обмен на Маркетплейсах

Обмен данными на маркетплейсах происходит ежесекундно: загрузка новой номенклатуры, смена цен, актуализация остатков товара. Поэтому он должен быть быстрым. 

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

  • формирование XML файла с товарами,

  • передача данного файла на сайт,

  • сбор и систематизация всей информации сайтом,

  • непосредственно выгрузка.

Весь цикл может занимать несколько дней, зависит от структуры файла и объема данных. И цикл не будет завершен до тех пор, пока сайт не прогрузит весь файл, а 1С не получит отчет сайта о завершении процесса.

Рассмотрим частый сценарий: сайт — маркетплейс для сотрудников компании.

Полный обмен происходит 1 раз в неделю, частичные выгрузки — несколько раз в сутки. Номенклатурная база — 1 миллион товаров, + столько же картинок; 8 миллионов предложений; 64 тысячи свойств товаров; 100 разделов каталога.

В итоге, при использовании типового обмена получаем:

  • 7 дней на полный обмен, 

  • технические сложности, ограничения MySQL,

  • появление ошибки «недостаточно памяти», таймаут выполнения скрипта.

Наличие таких проблем требует современного решения. 

Быстрый обмен

В качестве альтернативы мы применили асинхронный обмен данными с использованием промежуточной базы данных. Это помогает распределить нагрузку и ускорить сам процесс выгрузки.
Схема процесса:

  • появление новых товаров в 1С,

  • формирование пакета данных,

  • выгрузка этого пакета в отдельную от сайта базу данных,

  • сбор сайтом данных из этой БД.

схема процесса выгрузки

Для этого процесса необходима доработка как со стороны сайта, так и со стороны 1С.

На стороне сайта разрабатывается собственная база данных, из которой загружаются товары на сайт. Для этого используется сервер очередей (MQ), увеличивающий скорость и надежно импортирующий данные. Пишется отдельное регламентное задание для наполнения и обработки очереди.

использования сервера для очередей для выгрузки на сайт

Плюсы и минусы использования очередей:

+

-

Увеличение скорости обмена

высокая стоимость работ
(разработке требуется ~100 часов работ)

обход системных ограничений

асинхронность загрузки данных

вероятность поломки системы

экономичное использование ресурсов
(избегаем ошибок памяти, нагрузки на mySQL)

выявление пробелов в коде приложения и моментальное решение 

сложности при реализации 

Реализация

Для ускоренного обмена необходимы серверные службы – отдельные серверы баз данных и менеджеры очередей. Чаще всего используется PostgreSQL и ActiveMQ.
PostgreSQL — используем в качестве промежуточной базы, где будут храниться данные, выгруженные из 1С.
ActiveMQ — популярный сервер от Apache, представляет из себя воплощение технологии JMS для асинхронного обмена данными.
Для продуктивного обмена требуется правильная настройка PostgreSQL и ActiveMQ. После этого создаются механизмы для постановки и обработки очереди. В итоговом варианте обмен выглядит следующим образом:

как работает обмен с PostgreSQL и ActiveMQ

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

На примере реальной задачи клиента предлагаем рассмотреть решение проблемы.
Дано:
Маркетплейс с большим количеством свойств и картинок.

Найти: как максимально быстро выгрузить картинки и свойства

Решение:
Одновременная загрузка картинок, товаров и свойств займет ~7 дней.
В качестве решения задачи мы предлагаем разделить загрузку товаров и картинок. В результате товары появятся раньше, чем загружены картинки.
В этом примере мы создаем дополнительную очередь для загрузки картинок. Либо, если картинки передаются ссылками на файлы, мы записываем их в отдельную таблицу, чтобы не загружать картинку заново каждый раз.

обмен с дополнительной очередью

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

Загрузка свойств и обход ограничений Под свойствами товара подразумеваются тип товара и название. Инфоблок каталога не предназначен для загрузки 64 тысяч свойств — проблема в ограничениях MySQL.

Самым простым решением будет определение свойств, необходимых для фильтрации, и сохранение их в инфоблоке.
Все остальные свойства мы сохраним в отдельную таблицу (HL-блок) в виде сериализованной строки, так как они нужны только для показа карточки товара.
Мы создадим отдельную очередь для загрузки свойств с первым приоритетом. Тогда при полном обмене у нас сначала загрузятся свойства, и уже потом — товары.

загрузка свойств, далее товаров

Гаджет для мониторинга

Если обмен данными перестанет работать, это может обернуться проблемой: закажут товар по старой цене или его не окажется в наличии на складе.

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

Для самостоятельного отслеживания этих метрик можно использовать разработку гаджета или страницу в админке Битрикса.

обмен с системой мониторинга

В этом гаджете можно найти всю информацию по обмену, состоянию служб сервера очередей (MQ) и системы управления БД. Также мы видим информацию по каждой метрике.

статус обмена 1с

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

монитор очередей в обмене

Монитор очередей обращается в API ActiveMQ и выводит состояние очередей в таблице. В нашем мониторинге отображено две очереди — для товаров и свойств.

монитор обработки текущего пакета в обмене

Монитор обработки пакетов показывает, какие таблицы выгрузились и сколько еще осталось выгрузить.

история обмена 1с

С помощью истории обмена мы можем оценить, как долго выгружались товары и в каком объеме.

монитор необработанных данных

Монитор необработанных данных — указывает на возникающие сбои сервера и чрезмерную нагрузку на него.

Реализация асинхронного обмена потребует ~ 100 часов работы или 2 рабочих недели.
Более точная оценка будет зависеть от особенностей проекта, объема данных, структуры каталога, поставленных ТЗ.

Отдельным пунктом идет мониторинг обмена — требует дополнительных ~20 часов работы. При ограниченных ресурсах можно обойтись админкой MQ — она покажет объем очередей и факт обработки.

ограниченные ресурсы от MQ

Основные преимущества асинхронного обмена 

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

Плюс сокращение времени на выгрузку: 2 дня против 7 при стандартном обмене.

Современные способы для работы с Маркетплейсами

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

Какой способ обмена данными выбирать — решать только вам. Нужно сопоставить все риски и подойти к этому решению взвешенно.

Оцените статью
10.01.2023
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!

Статьи по теме

12.01.2023
Tutorial по обмену с 1С. Часть пятая: Наш опыт настройки 1000 и 1 обмена В своей предыдущей статье я начала раскрывать тему того, как правильно настраивать обмен между крупными сайтами и B2B-системами на Битрикс с системами учет...
10.01.2023
Tutorial по обмену с 1С. Часть третья: Выжимаем максимум из стандарта. Что мы хотели бы знать 1000 проектов назад Всем привет! Я Дина, ведущий разработчик личных кабинетов и ecom-систем в ИНТЕРВОЛГЕ. Мы не делаем тривиальных проектов. Все что я буду описывать ниже – ун...
10.01.2023
Tutorial по обмену сайта с 1С. Часть вторая: зачем и как писать свой обмен с нуля на очередях и REST API Всем привет! Меня зовут Артем, я старший разработчик в ИНТЕРВОЛГЕ. Наконец дошли руки рассказать про «обмен с 1С с нуля».  Типовой интернет-маг...
10.01.2023
Tutorial по стандартному и нестандартному обмену сайта с 1С. Часть первая: стандартный обмен и его хитрости Имею желание купить дом, но не имею возможности. Имею возможность купить козу, но не имею желания. к/ф «Кавказская пленница» ...
10.01.2023
Как мы CRM Битрикс24 с кучей всего интегрировали У нас был сложный сайт с личным кабинетом клиентов, устаревшая, переписанная 1С-ка, десяток маркетинговых сервисов, и телефония на Asterisk. Единств...

Мы работаем по одному из двух форматов:

  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).

ИНТЕРВОЛГА предоставляет:

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

Для доработок и развития мы предлагаем формат 100 часов в месяц. Что можно сделать за это время:

  • новые нетиповые страницы или раздел;
  • 2 отчета с индивидуальными настройками;
  • 3-5 веб-сервисов интеграции;
  • замудренный калькулятор и т.п.

Поддержка «чтобы все работало как часы» стоит 45 тысяч рублей в месяц и описана тут.

Хочешь получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишись на рассылку — спамить не будем