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

См. также

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    169031    350    280    

385

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    143917    830    297    

431

SALE! 10%

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

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.20.x), также подходят для релиза 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    54165    239    73    

194

SALE! 10%

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

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    73121    190    152    

127

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    37586    101    68    

97

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.240.x) и БП 3.0 (3.0.169.x). Правила подходят для версии ПРОФ и КОРП.

35000 31500 руб.

15.12.2021    25156    175    51    

133

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

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

12000 руб.

25.09.2016    81939    332    253    

283

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

120000 руб.

19.08.2020    25961    25    1    

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