Highload обмен данными: постановка задачи

04.11.16

База данных - HighLoad оптимизация

Цели статьи: определить, что такое "highload обмен", описать типовой сценарий обмена, сформулировать основные требования к обменам такого типа и предложить методику оценки производительности (пропускной способности).

Статья "живая" - будет дополняться и изменяться по мере написания примеров кода и выполнения замеров производительности. Таким образом я постараюсь продемонстрировать возможности SQL Server для построения распределённых информационных систем. Эта мощнейшая СУБД приобретена большинством компаний, использующих клиент-серверный вариант 1С:Предприятие 8, однако подавляющее большинство её возможностей остаётся не востребованной. 

Чтобы было понятно, распределённую информациолнную систему какого масштаба можно построить при помощи SQL Server, приведу в пример такую известную во всём мире социальную сеть, как MySpace, которая по состоянию на 2016 год имеет более 25 млн. пользователей и более 1000 серверов SQL Server. 

 

Для построения тестового стенда я использую 1С:Предприятие 8.3 и SQL Server 2014 Developer Edition (бесплатная версия для индивидуальных разработчиков). Можно использовать Express Edition - код примеров будет совместим с этой версией SQL Server тоже.

Highload обмен характеризуется, прежде всего, большим объёмом данных, который необходимо передавать между узлами распределённой информационной системы. "Highload" я предлагаю называть такие системы, в которых во всех её узлах для обмена генерируется от 1 Гб чистых данных (размер данных СУБД) ежесуточно. (Может быть больше - замечания и примеры из жизни членов сообщества приветствуются). В то же самое время скорость передачи данных является не единственным требованием, которое предъявляется к системам этого класса. Не менее важную роль при этом играют обеспечение целостности данных, сохранение приемлемой параллельности работы пользователей, безопасность, масштабируемость и прочее. 

 

Типовой сценарий и его задачи. 

Один цикл обмена данными между двумя узлами в одном направлении выглядит следующим образом (упрощённая базовая схема):  

1. Регистрация изменений данных (состояния) объектов в промежуточном хранилище (специальные таблицы или очереди сообщений). 

2. Чтение изменений (по событию или расписанию). 

3. Формирование сообщений обмена (агрегирование изменений). 

4. Маршрутизация сообщений по узлам. 

5. Трансляция/конвертация сообщений для приёмника. 

6. Запись сообщений обмена (выгрузка). 

7. Доставка сообщений получателю. 

8. Чтение сообщений обмена (по событию или расписанию). 

9. Запись изменений (загрузка). 

 

Обеспечение целостности данных. 

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

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

 3. Удаление сообщений обмена из канала его передачи и запись изменений в целевую базу данных должны быть согласованны ровно таким же образом, как это описано в пункте 1. 

 

Параллельность работы пользователей. 

 1. Процесс регистрации изменений (работа пользователей) не должен блокировать процесс их выгрузки (обмен данными) и наоборот. 

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

 

Производительность (пропускная способность). 

Общая производительность системы обмена данными или другими словами её пропускная способность должна превышать скорость генерации новых изменений в 5 раз (в идеале - 10). Этого "запаса прочности" должно быть достаточно для сглаживания пиковых нагрузок или восстановления работы системы после продолжительного сбоя. 

 

Методика замера производительности. 

Производительность системы предлагаю оценивать для двух её отдельно взятых узлов, расположенных на разных серверах сети. Производительность вычисляется как отношение размера передаваемых данных к общему времени нахождения сообщений в системе. Таким образом началом цикла обмена следует считать выполнение регистрации изменения, а окончанием - загрузку сообщения обмена в целевом узле распределённой системы. Замеры следует выполнять для сообщений среднего размера. Средним размером предлагаю считать 1 Мб чистых данных (размер данных СУБД). 

Таким образом, если мы определяем highload обмен как систему, в которой генерируется от 1 Гб чистых данных ежесуточно, а запасом прочности 10-кратное превышение этой цифры, тогда целевая производительность системы должна равняться 10 Гб / 20 часов = 512 Мб/час (4 часа в сутки беру на технологическое обслуживание). 

Чтобы было понятнее, то в формате XML это может быть эквивалентно файлам, которые имеют размер приблизительно равный 5 Гб. И это нужно "прокачать" за час. Если мы имеем сервер, например, с 10-тью процессорными ядрами, то это всего лишь по 512 Мб XML на ядро, что в общем-то, как мне кажется, не так много.

Связанные статьи:

Использование SQL Server Change Tracking для регистрации изменений данных объектов 1С:Предприятие 8

Вступайте в нашу телеграмм-группу Инфостарт

highload обмен данными интеграция РИБ SQL SQL Server Service Broker Change Tracking

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    160327    967    317    

482

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    33958    256    64    

194

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

05.10.2022    13324    15    8    

16

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

55200 руб.

03.12.2020    45130    129    79    

118

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

16531 руб.

18.02.2016    202833    672    543    

562

Перенос данных 1C Программист Бухгалтер 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

20740 руб.

25.09.2016    91321    417    265    

346

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)

Перенос данных из ЗУП 3 в УПП 1.3 | Корректно переносится документ "Отражение зарплаты...", а также все кадровые и расчетные документы | Перенос разработан в формате КД 2 (правила конвертации данных) | Будет полезен предприятиям, которые ведут зарплатный учет в ЗУП 3, а регламентированный учет - в УПП 1.3 | Перенос можно проверить перед покупкой прямо на вашем сервере! Оставляйте заявку на проверку!

58000 руб.

13.10.2022    13259    19    57    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. asved.ru 37 09.11.16 08:45 Сейчас в теме
Думал, что речь о платформенном РИБ, чуть не упал со стула. Вы там поаккуратнее с заголовками-то ;)
ArtemFF; artfa; cleaner_it; +3 Ответить
2. zhichkin 1568 10.11.16 23:50 Сейчас в теме
(1) asved.ru,
Согласен с Вами - название выбрал неудачно. Сверился с книгой "Профессиональная разработка в системе "1С:Предприятие 8" - Вы абсолютно правы. Исправил текст статьи.
Для отправки сообщения требуется регистрация/авторизация