Upload
ontico
View
403
Download
11
Embed Size (px)
DESCRIPTION
HighLoad++ 2013
Citation preview
Система для выявления манипуляций в условиях высокочастотной биржевой торговли
Иосиф Иткин, Антон Ситников
Exactpro Systems
Чем мы занимаемся
• Критикуем хорошие программы написанные умными людьми
• Создаем своих монстров для проверки высоконагруженных трейдинговых систем
Как делать деньги
There are three ways to make a living in this business: be first, be smarter, or cheat
Что бы такого сделать плохого • Манипуляция ценами • Переигрывание объемами • Уход от налогов • Финансирование зла • Инсайдерская торговля • Проскальзывание перед клиентом • Многое другое…
Что бы такого сделать плохого • Манипуляция ценами • Переигрывание объемами • Уход от налогов • Финансирование зла • Инсайдерская торговля • Проскальзывание перед клиентом • Многое другое… Часто легитимная активность выглядит как злоупотребление, и наоборот
Функциональность системы
• Поток сообщений
• Незаметность
• Агрегация данных
• Гибкая настройка правил
• Помощь в обследовании места преступления и сборе доказательств
• Хранение данных
Система для мониторинга Шша
• Перехват сетевых пакетов
• Разобрать и сложить все сообщения в MySQL
• Сделать логику проверок на SQL запросах
• Хороший инструмент для тестирования
• Но тянет не более 30 млн. сообщений в день
Холодный ветер с дождем
• Возникло желание усилить ее хотя бы десятикратно
• Получилась боевая системуа похожая на Market Surveillance
• Теперь мы используем ее как модель для проверки ее собратьев
Красивое название
• Возникло желание усилить ее хотя бы десятикратно
• Получилась боевая системуа похожая на Market Surveillance
• Теперь мы используем ее как модель для проверки ее собратьев
Complex Event Processing и Akka
• Surveillance-система является подмножеством CEP
• Surveillance-система должна иметь состояние (книжка)
• Коммерческие решения слишком дороги
• Esper не позволяет хранить состояние
• Akka – средство для написания событийных систем • высокая производительность
• распределенность
• удобная модель параллельной обработки
• работает на JVM
Система хранения
• Много операций добавления, мало операций чтения
• SQL базы данных плохо масштабируются и не позволяют сохранять большой поток данных
• NoSQL базы данных как Riak, Cassandra, Voldemort требуют создание большого кластера для достижения 100k msg/sec
• БД движки (Kyoto Cabinet, Krati, LevelDB). Быстрые. Позволяют написать систему хранения, максимально адаптированную для задачи. LevelDB быстрее
Архитектура Dolphin
Web
-Ин
тер
фей
с
Ист
очн
ики
дан
ны
х
Конверторы
10010 11101 11010
Сценарии Книжки
События Потоки событий
Web сервер
Мультиплексор/демультиплексор потоков
JSON Protobuf
Сохранение событий
• Уникальный идентификатор события (ИД источника + номер)
• За кодирование/декодирование отвечает источник
• Возможность сохранения иерархических событий
• LevelDB – движок, передача по сети – ZeroMQ
• Распределение нагрузки по нескольким узлам по ИД события
• «Послал и забыл» - каждый узел может определить пропущенное сообщение и запросить его у дублирующего
Сохранение потоков событий
• Поток событий = индекс
• ИД события в потоке – ИД потока + порядковый номер
• Ключ в LevelDB – ИД потока + порядковый номер ( + время)
• Одна запись в LevelDB включает несколько логических записей
• Распределение нагрузки по нескольким узлам
Web-интерфейс и потоки событий
• Система создает и записывает множество дополнительных потоков (индексов), например
• все события, связанные с одним ордером • все ордера, размещенные участником рынка
• Сервер web-интерфейса запрашивает потоки из хранилища и представляет их пользователю
Web-интерфейс Dolphin
• Play framework на стороне сервера
• Sencha Ext JS на стороне клиента
• Динамические обновления: JSON + WebSocket/Comet
Вопросы и ответы
Спасибо!
http://exactpro.com http://tmpaconf.org
http://linkedin.com/in/iosifitkin