Комментарии 6
> Книга ордеров постоянно изменяется и должна находиться в памяти. Для MVP в качестве in-memory хранилища я выбрал Tarantool с WAL.
А можете описать поподробнее как обеспечивается надежное хранение данных? Насколько я понимаю вашу архитектуру: допустим заявка пришла в Market controller, нашлась встречная заявка, мы обновили книгу, записали этот факт в Tarantool, отправили уведомление о сделке обоим сторонам, а сразу после этого хост с Tarantool упал. Дальше что происходит? Как восстановить информацию о сделке?
А можете описать поподробнее как обеспечивается надежное хранение данных? Насколько я понимаю вашу архитектуру: допустим заявка пришла в Market controller, нашлась встречная заявка, мы обновили книгу, записали этот факт в Tarantool, отправили уведомление о сделке обоим сторонам, а сразу после этого хост с Tarantool упал. Дальше что происходит? Как восстановить информацию о сделке?
Спасибо за вопрос. Чтобы добиться надежности, нужна репликация. Tarantool поддерживает только асинхронную, которая по понятным причинам не подходит для финансовых систем. Разработчики обещали выкатить поддержку в версии 2.3.1, которая должна была выйти 1 декабря, но воз и ныне там.
Чтобы обойти это ограничение, для MVP я сделал логическую репликацию. Для каждого рынка можно подключить N хранилищ (пара pg, tarantool). После падения тарантула, хранилище будет помечено аварийным и контроллер продолжит работу с оставшимися.
Если рынок сконфигурирован на работу только с одним хранилищем, то после падения тарантула, контроллер будет выдавать сообщение о недоступности сервиса и ждать пока хранилище восстановят.
спасибо, очень все отлично. А вот реализация остальных типов ордеров, кроме маркет и лимитных — она может потребовать изменения архитектуры? Правда и самые обычные, лимит/маркет имеют очень много тонкостей, которые начинаються как раз в построении стакана и далее в метчинге. Наверное лучшее, что есть на русском — серия статей «АЛГОРИТМЫ СВЕДЕНИЯ ОРДЕРОВ CME» — orderflowtrading.ru/torgovlya-na-birzhe/algoritmy-svedeniya-orderov-cme-chast-4 и далее на этом сайте остальные части.
Не советую id спейсов использовать явно указанные, да ещё < 512. Это легаси из 1.5. Может в поддержке очень больно получиться.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Эксперимент VonmoTrade. Часть 3: Книга ордеров. Обработка и хранение торговой информации