Что такое масштабируемость по функционалу 1с

Обновлено: 07.07.2024

вариант наращивания количества серверов соединяемых коммуникационной сетью - как правило Ethernet имеющую "Высокую Латентность" - т.е. как результат низкую пропускную способность при малых пакетах.
(пример Gigabit Ethernet дает 30 Мегабайт/сек при работе с пакетами 4 Кбайт - дефолтными для MS SQL)
В итоге:
а)Имеем довольно низкую производительность изначально - даже при одном пользователе в программе.
б)Но имеем некоторый стабильный коэф-производительности при росте количества пользователей
в)для такой системы однако есть придел - с некоторого «порогового» момента добавление ресурсов не даёт никакого полезного эффекта.

- Увеличение производительности каждого компонента системы c целью повышения общей производительности.

В случае со связкой "Сервер 1С"<-->"SQL".
а)Убираем из связки Сетевые интерфейсы (т.е. все на одном сервере).
б)На сервере ставим процессоры с наиболее возможной частотой ядер.
в)позаботимся о скоростной дисковой системе - например SSD
г)естественно позаботимся о значительном объеме оперативной памяти
В итоге:
- имеем максимальную производительность изначально на пользователя (как правило в 3-4 раза выше чем при "Горизонтальном масштабировании"
- но при определенном количестве Активных пользователей - однозначно начнется падение коэф-производительности.
- на текущий момент рост частот процессоров - уперся в физические ограничения материалов чипов и невозможность из-за большого тепло-выделения - роста количества Высокочастотных ядер в одном чипе => есть придел и у такого вида масштабирования.

Система называется масштабируемой, если она способна увеличивать производительность пропорционально дополнительным ресурсам.

Тут у меня на текущий момент только одна идея - использовать системы с "Общей памятью" и "Общими процессорами" - работающими под управлением "Единой операционной системы".

Для примера есть коммуникационные платы интер-коннекта "NumaLink" - на серверах SGI/ Кстати поддерживают и операционную систему Windows / - появляется возможность использования ТЫСЯЧ многочастотных ядер - и все видны Единой операционной системе и приложениям внутри её.
(В России эти сервера в основном на устаревших "NumaLink4 c процами Itanium2" - но у буржуев таки есть уже и на Xeona-х)

Масштабируемость

Масштабируемость — это способность системы адаптироваться к расширению предъявляемых требований и возрастанию объемов решаемых задач. Система 1С:Предприятие 8 имеет хорошие возможности масштабирования. Она позволяет работать как в файловом варианте, так и с использованием технологии "клиент-сервер". В последнем случае используется современная трехуровневая архитектура, когда между клиентом и сервером баз данных (Microsoft SQL Server / IBM DB2 / PostgreSQL),располагается сервер 1С:Предприятия 8.

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

Платформа 1С:Предприятие 8 позволяет создавать как простые решения для автоматизации задач небольших предприятий и домашних пользователей, так и достаточно сложные автоматизированные системы с большим количеством объектов и взаимосвязей между ними, реализующие весь комплекс задач по учету и управлению предприятием.

Трехуровневая архитектура "клиент-сервер"

Одним из наиболее существенных нововведений 1С:Предприятия 8 является реализация трехуровневой архитектуры "клиент-сервер". В 1С:Предприятии 7.7 в клиент-серверном варианте работы с информационной базой программа, работающая на компьютере пользователя, обращалась непосредственно к базе данных в среде MS SQL Server. В новой версии на одном из компьютеров работает сервер 1С:Предприятия 8. Программа, работающая у пользователя, взаимодействует с сервером 1С:Предприятия 8, а сервер при необходимости обращается к базе данных MS SQL Server. При этом физически сервер 1С:Предприятия 8 и MS SQL Server могут располагаться как на одном компьютере, так и на разных. Это позволяет администратору при необходимости распределять нагрузку между серверами.

Использование сервера 1С:Предприятия 8 позволяет сосредоточить на нем выполнение наиболее объемных операций по обработке данных. Например, при выполнении даже весьма сложных запросов программа, работающая у пользователя, будет получать только необходимую ей выборку, а вся промежуточная обработка будет выполняться на сервере. Обычно увеличить мощность сервера гораздо проще, чем обновить весь парк клиентских машин.

Другим важным аспектом использования 3-х уровневой архитектуры является удобство администрирования и упорядочивание доступа пользователей к информационной базе. В этом варианте пользователь не должен знать о физическом расположении конфигурации или базы данных. Весь доступ осуществляется через сервер 1С:Предприятия 8. При обращении к той или иной информационной базе пользователь должен указать только имя сервера и имя информационной базы, а система запрашивает соответственно имя и пароль пользователя.

Версия 8 значительно полнее использует возможности MS SQL Server для эффективной выборки информации. С одной стороны, механизм запросов в новой версии ориентирован на максимальное использование MS SQL Server для выполнения расчетов и составления отчетов. С другой стороны, в новой версии оптимизирован просмотр больших динамических списков, который теперь обеспечивается без выполнения большого количества обращений к базе данных. Это удобно, например, при интерактивной работе пользователя с большими справочниками или списками документов. При этом пользователю предоставляются возможности эффективного поиска, а также настройки отбора и сортировки.

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

Файловый вариант

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

В файловом варианте новой версии 1С:Предприятия 8 обеспечивается более высокая целостность информационной базы по сравнению с версией 7.7, упрощено создание резервных копий. Теперь пользователь не может по ошибке (например, при копировании информационной базы) перепутать различные файлы информационной базы и привести таким образом систему в неработоспособное состояние. Отметим, что резервное копирование может осуществляться на файловом уровне, путем простого копирования файла информационной базы.

Параллельность работы

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

В новой версии в варианте клиент-сервер обеспечивается возможность паралеллельной работы большого количества пользователей. Обратите внимание, что с ростом числа пользователей скорость ввода документов медленно уменьшается, но зависимость не такая явная, как было, например, в версии 7.7. Это означает, что при увеличении количества интенсивно работающих пользователей скорость реакции автоматизированной системы остается на приемлемом уровне.

В отличие от версии 7.7, в модели данных, поддерживаемой системой 1С:Предприятие 8, не существует таблиц базы данных, однозначно приводящих к конкурентному доступу со стороны нескольких пользователей. В новой версии конкурентный доступ возникает только при обращении к логически связанным данным и не затрагивает данные, не связанные между собой с точки зрения предметной области.

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

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

Масштабируемость разработки

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

Система 1С:Предприятие 8 поддерживает одновременную работу нескольких разработчиков над одной конфигурацией, для чего создается хранилище конфигурации. В хранилище содержится текущая разрабатываемая конфигурация и история ее изменения (версии). Чтобы внести изменения в какой-нибудь объект конфигурации, каждый разработчик должен сначала захватить определенный объект конфигурации или группу связанных объектов, тогда они становятся недоступны для изменения другим разработчикам. После внесения изменений разработчик возвращает объекты в хранилище и снимает свои блокировки (отменяет захват).

Новой возможностью, также повышающей масштабируемость 1С:Предприятия 8, является механизм COM-соединения, который позволяет использовать 1С:Предприятие 8 в качестве составной части сложной интегрированной системы.

Масштабируемость — это способность системы адаптироваться к расширению предъявляемых требований и возрастанию объемов решаемых задач.

Работа одного прикладного решения в разных условиях

Система «1С:Предприятие 8» имеет хорошие возможности масштабирования. Она позволяет работать как в файловом варианте, так и с использованием технологии «клиент-сервер».

Масштабируемость

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

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

Для больших рабочих групп и в масштабах предприятия может применяться клиент-серверный вариант работы, основанный на трехуровневой архитектуре с использованием кластера серверов «1С:Предприятия 8» и отдельной системы управления базами данных. Он обеспечивает надежное хранение данных и их эффективную обработку при одновременной работе большого количества пользователей.

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

Важно отметить, что одни и те же прикладные решения (конфигурации) могут использоваться как в файловом, так и в клиент-серверном варианте работы. При переходе от файлового варианта к технологии «клиент-сервер» не требуется вносить изменения в прикладное решение. Поэтому выбор варианта работы целиком зависит от потребностей заказчика и его финансовых возможностей. На начальной стадии можно работать в файловом варианте, а затем с увеличением количества пользователей и объема базы данных можно легко перейти на клиент-серверный вариант работы со своей информационной базы.

Многопользовательская работа

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

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

В модели данных, поддерживаемой системой «1С:Предприятие 8», не существует таблиц базы данных, однозначно приводящих к конкурентному доступу со стороны нескольких пользователей. Конкурентный доступ возникает только при обращении к логически связанным данным и не затрагивает данные, не связанные между собой с точки зрения предметной области.

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

Механизмы оптимизации

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

Управление блокировками в транзакции

Режим управляемых блокировок в транзакции позволяет управлять блокировками данных в терминах предметной области и повышает параллельность работы пользователей. Подробнее…

Выполнение на сервере

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

Кэширование данных

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

Работа встроенного языка на сервере

При работе в клиент-серверном варианте вся работа прикладных объектов выполняется только на сервере. Функциональность форм и командного интерфейса также реализована на сервере.

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

Аналогично командный интерфейс формируется на сервере и отображается на клиенте. Также и отчеты формируются полностью на сервере и отображаются на клиенте.

Примеры технологических параметров внедрений решения «Управление производственным предприятием»

В этом разделе публикуется развернутая информация о технологических параметрах внедрений «1C:Предприятие 8. Управление производственным предприятием» на предприятиях различного масштаба и профиля деятельности.

Цель раздела — ознакомить ИТ- специалистов с данными о реально используемом оборудовании и с примерами нагрузки реальных внедрений «1С:Предприятия 8».

Также эта информация может быть полезна и для пользователей всех программ системы «1С:Предприятие 8».

1С:Центр управления производительностью — инструмент мониторинга и анализа производительности

1С:Центр управления производительностью (1С:ЦУП) — инструмент мониторинга и анализа производительности информационных систем на платформе «1С:Предприятие 8». 1С:ЦУП предназначен для оценки производительности системы, сбора подробной технической информации об имеющихся проблемах производительности и анализа этой информации с целью дальнейшей оптимизации. Подробнее…

1С:ТестЦентр — инструмент автоматизации нагрузочных испытаний

1С:ТестЦентр — инструмент автоматизации многопользовательских нагрузочных испытаний информационных систем на платформе «1С:Предприятие 8». С его помощью можно моделировать работу предприятия без участия реальных пользователей, что позволяет оценивать применимость, производительность и масштабируемость информационной системы в реальных условиях. Подробнее…

Внедрение корпоративных информационных систем на платформе «1С:Предприятие 8»

Опыт внедрения прикладных решений на платформе «1С:Предприятие 8» показывает, что система позволяет решать задачи различной степени сложности — от автоматизации одного рабочего места до создания информационных систем масштаба предприятия.

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

База знаний по технологическим вопросам крупных внедрений

Фирма «1С», совместно с сертифицированными «1С:Экспертами по технологическим вопросам» и другими техническими специалистами, ведет и регулярно обновляет базу знаний по технологическим вопросам крупных внедрений.

Платформа «1С: Предприятие 8» отличается способностью расширяться, подстраиваясь под рост бизнеса пользователя, новые требования и новые задачи. Одно и то же прикладное решение от «1С» легко масштабируется, предоставляя возможность работать как в варианте файловом, так и в режиме «клиент-сервер».


Файловый вариант или «клиент-сервер»?

Если необходимо персональное решение, то предпочтительнее файловый вариант работы, когда локальная ИБ расположена на рабочей машине пользователя. Удобно для работы в домашних и «полевых» условиях (достаточно установить ИБ на ноутбук). При расширении объемов задач для небольшой рабочей группы файловый вариант также оптимален, поскольку несколько пользователей могут работать с одной ИБ, при этом не возникает сложностей с инсталляцией и эксплуатацией.

Для решения масштабных задач в рамках крупных предприятий и разветвленных рабочих групп предпочтительнее вариант «клиент-сервер» на основе трех уровней, с использованием сервера «1С:Предприятие 8» и системы управления БД, что гарантирует:

  • более стабильную работу;
  • сохранность данных;
  • эффективную обработку в т.ч. при работе одновременно множества пользователей.

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

Система «1С: Предприятие 8» выгодно отличается тем, что смена варианта работы – с файловой системы на схему «клиент-сервер» и наоборот, - не требует внесения изменений в конфигурацию. На первоначальном этапе можно предпочесть файловый вариант, по мере роста сети пользователей и БД можно легко перейти на схему «клиент-сервер».

Поддержка многопользовательской работы

Платформа «1С: Предприятие 8» поддерживает эффективную многопользовательскую работу, сохраняя функционал и скорость работы независимо от увеличения числа решаемых задач, объема данных и количества пользователей. Для многопользовательской работы предпочтительнее схема «клиент-сервер». Тесты показали, что скорость ввода документов при увеличении числа пользователей практически не сокращается, даже при интенсивной работе пользователей скорость ответа системы остается на высоком уровне, тем более что модель данных системы не подразумевает использования таблиц БД, приводящих к конкуренции при доступе нескольких пользователей. (Конкуренция возникает лишь при обращении пользователей к данным, имеющим логические связи, но не предмет).


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

Оптимизация быстродействия

Система «1С:Предприятие 8» содержит следующие механизмы для оптимизации быстродействия:

  • режим управления блокировками в транзакции упрощает блокировку данных в предметной области, повышая производительность одновременной работы;
  • выполнение операций на сервере. При режиме «клиент-сервер» сервер «1С» берет на себя самые объемные операции по обработке данных, а пользователь получает лишь необходимую ему выборку. Сменить сервер на более мощный проще, нежели обновить парк ПК;
  • кэширование данных, считываемых из БД, также позволяет увеличить скорость работы, ведь данные загружаются в кэш оперативной памяти, и последующие обращения обрабатываются именно оперативной памятью, а не базой данных, что позволяет получать необходимые сведения гораздо быстрее;
  • встроенный язык на сервере при работе «клиент-сервер» позволяет пользователю получить уже готовую форму, сгенерированную на сервере, ему надо лишь ввести данные и вызвать сервер для их записи.

На официальном сайте «1С» можно ознакомиться с:

  • примерами технологических параметров внедрений решения «Управление производственным предприятием»;
  • рекомендациями по выбору оборудования

а также имеется инструменты для исследования производительности «1С:Центр управления производительностью» и автоматизации нагрузочных испытаний «1С:ТестЦентр».

Решение для крупномасштабной автоматизации

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

Кластер — это разновидность параллельной
или распределённой системы, которая:
1. состоит из нескольких связанных
между собой компьютеров;
2. используется как единый,
унифицированный компьютерный ресурс

Дано: есть бизнес-приложение (например, ERP-система), с которым работают одновременно тысячи (возможно, десятки тысяч) пользователей.

  1. Сделать приложение масштабируемым, чтобы при увеличении количества пользователей можно было за счёт наращивания аппаратных ресурсов обеспечить необходимую производительность приложения.
  2. Сделать приложение устойчивым к выходу из строя компонентов системы (как программных, так и аппаратных), потере связи между компонентами и другим возможным проблемам.
  3. Максимально эффективно задействовать системные ресурсы и обеспечить нужную производительность приложения.
  4. Сделать систему простой в развертывании и администрировании.

К желаемому результату мы пришли не сразу.

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

image



Как писал автор эпиграфа к этой статье Грегори Пфистер в своей книге «In search of clusters», кластер был придуман не каким-либо конкретным производителем железа или софта, а клиентами, которым не хватало для работы мощностей одного компьютера или требовалось резервирование. Случилось это, по мнению Пфистера, ещё в 60-х годах прошлого века.
Традиционно различают следующие основные виды кластеров:

  1. Отказоустойчивые кластеры (High-availability clusters, HA, кластеры высокой доступности)
  2. Кластеры с балансировкой нагрузки (Load balancing clusters, LBC)
  3. Вычислительные кластеры (High performance computing clusters, HPC)
  4. Системы распределенных вычислений (grid) иногда относят к отдельному типу кластеров, который может состоять из территориально разнесенных серверов с отличающимися операционными системами и аппаратной конфигурацией. В случае grid-вычислений взаимодействия между узлами происходят значительно реже, чем в вычислительных кластерах. В grid-системах могут быть объединены HPC-кластеры, обычные рабочие станции и другие устройства.

Для тех, кто не в курсе, коротко расскажу, как устроены бизнес-приложения 1С. Это приложения, написанные на предметно-ориентированном языке, «заточенном» под автоматизацию учётных бизнес-задач. Для выполнения приложений, написанных на этом языке, на компьютере должен быть установлен рантайм платформы 1С:Предприятия.

1С:Предприятие 8.0

Первая версия сервера приложений 1С (еще не кластер) появилась в версии платформы 8.0. До этого 1С работала в клиент-серверном варианте, данные хранились в файловой СУБД или MS SQL, а бизнес-логика работала исключительно на клиенте. В версии же 8.0 был сделан переход на трехзвенную архитектуру «клиент – сервер приложений – СУБД».

image

Сервер 1С в платформе 8.0 представлял собой СОМ+ сервер, умеющий исполнять прикладной код на языке 1С. Использование СОМ+ обеспечивало нам готовый транспорт, позволяющий клиентским приложениям общаться с сервером по сети. Очень многое в архитектуре и клиент-серверного взаимодействия, и прикладных объектов, доступных разработчику 1С, проектировалось с учетом использования СОМ+. В то время в архитектуру не было заложено отказоустойчивости, и падение сервера вызывало отключение всех клиентов. При падении серверного приложения СОМ+ поднимал его при обращении к нему первого клиента, и клиенты начинали свою работу с начала – с коннекта к серверу. В то время всех клиентов обслуживал один процесс.

1С:Предприятие 8.1

В следующей версии мы захотели:

  • Обеспечить нашим клиентам отказоустойчивость, чтобы аварии и ошибки у одних пользователей не приводили авариям и ошибкам у других пользователей.
  • Избавиться от технологии СОМ+. СОМ+ работала только на Windows, а в то время уже начала становиться актуальной возможность работы под Linux.

Так в версии 8.1 появился первый кластер. Мы реализовали свой протокол удаленного вызова процедур (поверх ТСР), который по внешнему виду выглядел для конечного потребителя-клиента практически как СОМ+ (т.е. нам практически не пришлось переписывать код, отвечающий за клиент-серверные вызовы). При этом сервер, реализованный нами на С++, мы сделали платформенно-независимым, способным работать и на Windows, и на Linux.

На смену монолитному серверу версии 8.0 пришло 3 вида процессов – рабочий процесс, обслуживающий клиентов, и 2 служебных процесса, поддерживающих работу кластера:

  • rphost – рабочий процесс, обслуживающий клиентов и исполняющий прикладной код. В составе кластера может быть больше одного рабочего процесса, разные рабочие процессы могут исполняться на разных физических серверах – за счёт этого достигается масштабируемость.
  • ragent – процесс агента сервера, запускающий все другие виды процессов, а также ведущий список кластеров, расположенных на данном сервере.
  • rmngr – менеджер кластера, управляющий функционированием всего кластера (но при этом на нем не работает прикладной код).
Под катом – схема работы этих трёх процессов в составе кластера.

image

image

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

1С:Предприятие 8.2

В версии 8.2 мы захотели, чтобы приложения 1С могли запускаться не только в нативном (исполняемом) клиенте, а ещё и в браузере (без модификации кода приложения). В связи с этим, в частности, встала задача отвязать текущее состояние приложения от текущего соединения с рабочим процессом rphost, сделать его stateless. Как следствие возникло понятие сеанса и сеансовых данных, которые нужно было хранить вне рабочего процесса (потому что stateless). Был разработан сервис сеансовых данных, хранящий и кэширующий сеансовую информацию. Появились и другие сервисы — сервис управляемых транзакционных блокировок, сервис полнотекстового поиска и т.д.

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

Отказоустойчивость

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

Балансировка нагрузки

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

    – серверам присваиваются порядковые номера, первый запрос отправляется на первый сервер, второй запрос – на второй и т. д. до достижения последнего сервера. Следующий запрос направляется на первый сервер и всё начинается с начала. Алгоритм прост в реализации, не требует связи между серверами и неплохо подходит для «легковесных» запросов. Но при балансировке по этому алгоритму не учитывается производительность серверов (которая может быть разной) и текущая загруженность серверов. – усовершенствованный Round-Robin: каждому серверу присваивается весовой коэффициент в соответствии с его производительностью, и сервера с бо́льшим весом обрабатывают больше запросов.
  • Least Connections: новый запрос передается на сервер, обрабатывающий в данный момент наименьшее количество запросов.
  • Least Response Time: сервер выбирается на основе времени его ответа: новый запрос отдаётся серверу, ответившему быстрее других серверов.

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

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

Запрос от существующего клиента передается в другой рабочий процесс в двух случаях:

  1. Процесса больше нет: рабочий процесс, с которым ранее взаимодействовал клиент, более недоступен (упал процесс, стал недоступен сервер и т.п.).
  2. Есть более производительный сервер: если в кластере есть сервер, отличающийся по производительности в два и более раза по сравнению с сервером, где запушен текущий рабочий процесс, то платформа считает, что даже ценой миграции клиентского контекста нам выгоднее выполнять запросы на более производительном сервере. Переноситься клиенты с одного сервера на другой будут постепенно, по одному, с периодической оценкой результата – что в плане производительности стало с серверами после переноса каждого из клиентских процессов. Цель этой процедуры – выравнивание производительности серверов в кластере (т.е. равномерная загрузка серверов).

Резервирование кластеров

Мы решили повысить отказоустойчивость кластера, прибегнув к схеме Active / passive. Появилась возможность конфигурировать два кластера – рабочий и резервный. В случае недоступности основного кластера (сетевые неполадки или, например, плановое техобслуживание) клиентские вызовы перенаправлялись на резервный кластер.

image

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

1С:Предприятие 8.3

В версии 8.3 мы существенно переписали код серверной части, отвечающий за отказоустойчивость. Мы решили отказаться от схемы Active / passive кластеров ввиду сложности её конфигурирования. В системе остался только один отказоустойчивый кластер, состоящий из любого количества серверов – это ближе к схеме на Active / active, в которой запросы на отказавший узел распределяются между оставшимися рабочими узлами. За счет этого кластер стал проще в настройке. Ряд операций, повышающих отказоустойчивость и улучшающих балансировку нагрузки, стали автоматизированными. Из важных нововведений:

  • Новая настройка кластера «Уровень отказоустойчивости»: число, указывающее, сколько серверов может выйти из строя без последствий в виде аварийного завершения сеансов подключенных пользователей. Исходя из этой настройки кластер будет тратить определённый объём ресурсов на синхронизацию данных между рабочими серверами, чтобы иметь всю необходимую для продолжения работы клиентов информацию на «живых» серверах в случае выхода из строя одного или нескольких серверов.
  • Количество рабочих процессов не задается вручную, как раньше, а автоматически рассчитывается исходя из описаний требований задач по отказоустойчивости и надежности.
  • Появился ряд настроек, связанных с максимальными объемами памяти, которые разрешается потреблять рабочим процессам, а также настройки, определяющие что делать, если эти объемы превышены:

image

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

image

Три звена отказоустойчивости

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

В заключение

Благодаря механизму отказоустойчивости приложения, созданные на платформе 1С:Предприятие, благополучно переживают разные виды отказов рабочих серверов в кластере, при этом бо́льшая часть клиентов продолжают работать без перезапуска.

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

Надежность кластера серверов 1С в версии 8.3 существенно повысилась. Уже давно не редкость внедрения продуктов 1С, где количество одновременно работающих пользователей достигает нескольких тысяч. Есть и внедрения, где одновременно работают и 5 000, и 10 000 пользователей — например, внедрение в «Билайне», где приложение «1С: Управление Торговлей» обслуживает все салоны продаж «Билайн» в России, или внедрение в грузоперевозчике «Деловые Линии», где приложение, самостоятельно созданное разработчиками ИТ-отдела «Деловых Линий» на платформе 1С:Предприятие, обслуживает полный цикл грузоперевозок. Наши внутренние нагрузочные тесты кластера эмулируют одновременную работу до 20 000 пользователей.

В заключение хочется кратко перечислить что ещё полезного есть в нашем кластере (список неполный):

Читайте также: