Pull to refresh

Comments 6

> Книга ордеров постоянно изменяется и должна находиться в памяти. Для MVP в качестве in-memory хранилища я выбрал Tarantool с WAL.

А можете описать поподробнее как обеспечивается надежное хранение данных? Насколько я понимаю вашу архитектуру: допустим заявка пришла в 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 и далее на этом сайте остальные части.

В декларации спейсов под списки, я привел только limit и market, для остальных типов ордеров аналогично выделяется спейс, контроллер рынка следит за условиями активации ордеров и при выполнении условия переводит ордер в limit или market в зависимости от его типа.

Не советую id спейсов использовать явно указанные, да ещё < 512. Это легаси из 1.5. Может в поддержке очень больно получиться.
Sign up to leave a comment.

Articles