Архитектура LMAX — рост данных

Рассмотрим следующий сценарий из архитектуры LMAX, описанного Мартином Фаулером:

Для иллюстрации я буду использовать простой пример без LMAX. Представьте, что вы делаете заказ на драже с помощью кредитной карты. ‹...>

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

Таким образом, заказ хранится в памяти до тех пор, пока не будет получен результат обработки платежа.

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

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

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

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

Мысли о том, как мы справляемся с этим?


person coder_bro    schedule 13.03.2013    source источник


Ответы (1)


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

Системы памяти сейчас настолько велики, т. е. сотни ГБ в одном сервере, что рабочий набор практически любого бизнеса легко умещается в памяти. Кроме того, объем доступной памяти увеличивается гораздо быстрее, чем растет любой крупный бизнес.

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

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

person Martin Thompson    schedule 13.03.2013