А.В. Родионов – к.т.н., доцент, кафедра «Информационные системы и сети», Калужский филиал МГТУ им. Н.Э. Баумана
E-mail: andviro@gmail.com
В.Е. Драч – к.т.н., доцент, кафедра «Конструирование и производство электронной аппаратуры», Калужский филиал МГТУ им. Н.Э. Баумана E-mail: drach@bmstu-kaluga.ru
В.И. Шевела – студент магистратуры, кафедра «Информационные системы и сети», Калужский филиал МГТУ им. Н.Э. Баумана
E-mail: vladshevela@gmail.com
Постановка проблемы. В условиях высоких нагрузок системам обработки данных реального времени (например, системы обработки данных в радиолокации), регулярное обновление данных по мере работы с ними имеет ряд недостатков.
Цель. Рассмотреть особенности распределенной обработки данных и предложить перспективный подход к хранению состояния программной системы в высоконагруженных системах, основанный на использовании расширяемого хранилища для записи полной последовательности действий над сущностями и формирования материализованных состояний агрегатов на основе этих последовательностей.
Результаты. Этот подход отличается от традиционного, заключающегося в наборе операций над БД, сгруппированных по действиям (создание, просмотр, обновление и удаление записей) тем, что не требует дополнительных мер для обеспечения синхронизации и консистентности данных. В условиях массовой параллельной обработки данных, таких как агрегация радиолокационной информации, это позволяет использовать базу данных как высокопроизводительную систему журналирования, работающую только на запись. Обеспеченная таким образом возможность восстановления состояния объектов системы на произвольный момент дает дополнительные гарантии надежности и отказоустойчивости систем, к которым предъявляются повышенные требования в этих аспектах.
Сохраняемый журнал событий может быть использован помимо восстановления от отказов для аудита системы, выявления ошибочных транзакций и их исправления путем введения корректирующих команд. Команды и события, циркулирующие в системе с хранилищем событий, могут быть приведены в соответствие с бизнес-логикой предметной области, в рамках предметно-ориентированного дизайна ПО, что является преимуществом как на стадиях анализа системы, так и при ее последующем развитии. Удобное сочетание с принципом разделения ответственности команд и запросов обеспечивает аналитикам возможность логически рассуждать о сложных процессах, протекающих в распределенной системе.
Практическая значимость. Предложенный подход позволяет повысить консистентность данных в высоконагруженных системах, за счет легкого введения оптимистического блокирования по добавленным идентификаторам и упорядоченных журналов событий. Благодаря этому становится возможным избавиться от необходимости синхронизации последовательности данных с сервером, которое сопряжено с введением глобальных транзакций по всему класстеру БД. Таким образом, проектирование распределенных систем в соответствии с предложенным подходом является перспективным с точки зрения повышения производительности, масштабируемости и скорости их работы.
- Монахов Д.Н. Облачные технологии. М.: Макс Пресс. 2016. 128 с.
- Microsoft Azure / Event Sourcing pattern. Azure Architecture Center. URL = https://docs.microsoft.com/en-us/azure/architecture /patterns/event-sourcing ( 13 мая 2019).
- Митч Т. Знакомство с Microsoft Azure. М.: ЭКОМ Паблишерз. 2014. 154 с.
- Folwer M. Event Sourcing. Capture all changes to an application state as a sequence of events. 2005. URL = https://martinfowler.com/eaaDev/EventSourcing.html (13 мая 2019).
- Губарев В. Введение в облачные вычисления и технологии. М.: ФЩЙЛИС. 2017. 303 с.
- Драч В.Е., Чухраева А.И., Родионов А.В. Выбор системы управления базами данных для информационной системы промышленного предприятия // Электромагнитные волны и электронные системы. 2018. Т. 23. № 3. С. 71−80.
- Драч В.Е., Родионов А.В., Чухраев И.В. Программирование с контекстами и промежуточными слоями в применении к разработке HTTP-сервисов // Радиопромышленность. 2016. № 4. С. 75−79.
- Fowler M. CQRS. 2011. URL = https://martinfowler.com/bliki/CQRS.html (13 мая 2019).
- Эванс Эрик. Предметно-ориентированное проектирование (DDD): структуризация сложных программных систем ( DomainDriven Design: Tackling Complexity in the Heart of Software). М.: Вильямс. 2011. 448 с. ISBN 978-5-8459-1597-9.
- Родионов А.В., Шевела В.И. Событийно ориентированный подход к проектированию распределенных систем. Инновации в науке и практике / Сб. статей по материалам XI Междунар. научно-практич. конф. 29 октября 2018 (г. Барнаул). В 3-х частях. Ч.1. Уфа: Изд-во «НИЦ «Вестник науки». 2018. 274 с.