Распространенность системы [1] — это простой шаблон архитектуры программного обеспечения , который объединяет образы системы (моментальные снимки) и ведение журнала транзакций для обеспечения скорости, масштабируемости производительности, прозрачного сохранения и прозрачного живого зеркалирования состояния компьютерной системы .
В широко распространенной системе состояние хранится в памяти в собственном формате, все транзакции регистрируются , а образы системы регулярно сохраняются на диск.
Системные образы и журналы транзакций могут храниться в формате сериализации , специфичном для конкретного языка , для повышения скорости или в портативных форматах для кросс-языкового использования.
Первым использованием термина и общей, общедоступной реализацией уровня распространенности системы был Prevayler , написанный для Java Клаусом Вюстефельдом в 2001 году. [2]
Простое сохранение состояния системы в оперативной памяти в его обычном, естественном, специфичном для языка формате на несколько порядков быстрее и удобнее для программиста, чем множественные преобразования, которые необходимы при его сохранении и извлечении из СУБД . В качестве примера Мартин Фаулер описывает « Архитектуру LMAX » [3] с журналом транзакций и бизнес-системой на основе образа системы (моментального снимка) в ее основе, которая может обрабатывать 6 миллионов транзакций в секунду в одном потоке.
Распространенной системе требуется достаточно памяти для хранения всего ее состояния в ОЗУ («распространенная гипотеза»). Сторонники распространенности утверждают, что эта проблема постоянно смягчается снижением цен на ОЗУ и тем фактом, что многие бизнес-базы данных уже достаточно малы, чтобы поместиться в памяти.
Программистам необходимы навыки работы с бизнес-состоянием непосредственно в оперативной памяти, а не использования явных вызовов API для хранения и запросов для извлечения.
События системы должны фиксироваться для ведения журнала .
{{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка )Поток, который будет обрабатывать 6 миллионов заказов в секунду с использованием стандартного оборудования.