Модули

Из чего состоит Trading Engine. Как части Trading Engine обмениваются данными.

Определения

Модуль — независимая часть Trading Engine. Модуль может быть размещен на отдельном сервере.

Компонент — самостоятельная часть модуля. У компонентов внутри модуля общая память. Часто компоненты работают в одном потоке внутри модуля.

Модули спроектированы так, чтобы иметь возможность находиться на разных серверах. Но могут запускаться даже в одном процессе. Из-за этого Trading Engine можно запустить даже на ноутбуке. Это помогает в разработке и тестировании.

Список модулей

Application — основной модуль Trading Engine, содержит в себе бизнес-логику работы Trading Engine: правила сталкивания ордеров, начисление комиссий, настройки валютных пар.

Компоненты Application:

  • Matching Engine — сталкивание ордеров

  • Product Manager — добавление и настройка валютных пар

  • Account Store — хранит счета пользователей в каждой валюте

  • Hold Service — заморозка средств пользователя

Archive — отвечает за хранение данных. Реализован в библиотеке Aeron.

Gateway (rest, websocket, fix, ...) — шлюзы Trading Engine, каждый шлюз — отдельный модуль. Шлюз передает команды пользователей в Application и транслирует события Application пользователям.

Как взаимодействуют модули

Между модулями данные передаются с помощью Aeron. Aeron — библиотека транспорта сообщений для работы с ненадежными медиа-протоколами, такими как UDP и Infiniband. Aeron гарантирует, что сообщения придут в том порядке в котором были отправлены, и что пакет будет отправлен снова, если потеряется.

Сообщения кодируются с помощью Simple Binary Encoding. Так сообщения занимают меньше места и быстрее всего обрабатываются системой.

Московская финансовая биржа и LMAX используют аналогичное кодирование для своих событий.