«Секретные» технологии инвестиционных банков /...
TRANSCRIPT
“Секретные” технологии инвестиционных банковАлексей Рагозин
В ходе данного доклада никаких секретов, включая коммерческие и торговые секреты, раскрыто не будет.Доклад основан на материалах доступных из открытых источников.
“Секретные” технологииАналитическая БД в оперативной памяти
kX kDBСистема обмена сообщениями
Informatica Ultra MessagingComplex Event Processing
Внутренняя разработка
kX kdb+
Аналитическая БД в оперативной памяти
Анализ глубины рынка
Рынок информирует подписчиков о заявках / сделках в виде потока событий.
Анализ глубины рынка
Источник - http://www.nanex.net/aqck2/4176.html
Анализ глубины рынка
Быстрая динамика входных данных
Анализ исторического окна Большое количество арифметики
kX kdb+
Может хранить данные на дискеИнтерпретатор языка QQ – функциональный язык, ориентирован на работу с массивамиОсновная обработка данных в памяти
Язык Q
sql-qselect[3;>price] from bids where sym=s,size>0
kX kdb+Особенности Интерпретируемый язык Логическая однопоточность
Отдельные операции могут распараллеливаться
Интерпретатор < 500 KiB Манипуляция массивами Глубокая оптимизация под
архитектуру процессора
Применение kdb+Аналитика Анализ рынка Анализ истории сделок
Применение kdb+Аналитика Анализ рынка Анализ истории сделок
Анализ логов Оптимизация взаимодействия
системАнализ сетевого трафика Оптимизация сетевых задержек
Дополнительная информация Официальный сайт
http://kx.com/ Доклад про использование kdb+ в Deutsche
Bankhttp://2013.secr.ru/invited-speakers/andrey-babanin
Альтернативы J аналог языка K (предтече Q)
https://en.wikipedia.org/wiki/J_%28programming_language%29
Informatica Ultra Messaging
Система обмена сообщениями
Классика MOMStore & Forward
Брокер
Источник
Сообщение
Подтверждение
Сообщение
Сообщение
Подтверждение
Потребитель 1
Потребитель N
Классика MOMРаспределённая транзакция
Гарантия: однократная доставка
База данных БрокерБизнеслогика
Сообщение
ЗаписьПодтверждение
Двух фазный коммит
Альтернатива 2PCСквозная нумерация сообщенийБрокер хранит окно сообщений Потребитель может запросить
сообщения с любого номераПотребитель хранит номер последнего обработанного сообщенияРаспределённая транзакция не требуется
Reliable multicast
Сообщение N
Сообщение N
Сообщение N
Источник
Потребитель 1
Потребитель N
ReplayServer
Reliable multicast
Гарантия: доставка хотя бы раз
Сообщение N
Сообщение N
Сообщение N
Источник
Потребитель 1
Потребитель N
ReplayServer
Informatica Ultra Messaging Частично базируется на PGM
Pragmatic General Multicasthttps://en.wikipedia.org/wiki/Pragmatic_General_Multicast
Несколько реализаций транспорта
UDP multicast – минимальная задержка
UDP unicastTCP
Реализация дискового eplay server
Informatica Ultra MessagingКлючевые преимуществаСквозная нумерация сообщений Транзакционные гарантии
Малая задержка Прямая передача от источника
получателю Мультикаст
ОтказоустойчивостьНадёжность – вопрос выбораЛокальная сеть - надёжна
Дублирование оборудованияСервера / Процессы могут падатьРезервный датацентр – холодный
Исключительная ситуацияПолуавтоматическая процедура
ОтказоустойчивостьПотребитель 1
Потребитель N
ОсновнойДатацентр
РезервныйДатацентр
MessageStore
MessageStore
MessageStore
MessageStore
MessageStore
MessageStore
Источник
Подтверждение иерархическим кворумом
ОтказоустойчивостьЛокальный кворум обеспечивает гарантию работы при выходе из строя одного хранилища.Восстановления потребителя происходит из всех хранилищХранилища могут иметь “дырки”“Дырки” сами не восстанавливаются
Open Source АналогиApache Kafka Publish/Subscribe messaging Распределенный журнал сообщений Коммуникации через брокера
Apache Bookkeeper/HedWig Распределённый журнал Основан на Zookeeper Коммуникации через брокера
ZeroMQ Реализация PGM Нет инфраструктуры восстановления
Архитектура Фронт-энда для
Трейдинга
Complex Event Processing
Фронт-энд для Трейдинга
http://2014.secr.ru/program/submitted-presentations/rapid-development-gui-for-large-data-volumes-with-cqrs
Контролер
Шина обмена сообщениями ШлюзШлюз
Кэш
Фронт-энд для ТрейдингаEvent-Driven
Даже статические данные меняютсяМного источников исходных данных
Транзакционные данные Справочники (статические данные) Котировки
Таблицы на входе, таблицы на выходе
Основная визуализация - таблицы Исходные данные - таблицы
Фронт-энд для ТрейдингаРеляционная алгебра как универсальный инструмент работы с данными
Нет доменных объектов (есть схема)Формирования UI по метаданнымУдобный энричмент данныхБыстрая разработка
Нужна непрерывная обработка запросовContinuous Query
Continuous Event Processing Event Driven Соединение данных из разных источников
Включая реляционные джойны Агрегация данных
Инкрементальные алгоритмы
Чего не хватает традиционным CEP? В традиционных CEP – преобразования
статичны. Для UI нужна возможность строить запросы на
лету.
CEP Движок для Фронт-энда Внутренняя разработка Обработка данных в памяти Инкрементальная обработка
событий Фильтрация / Джойны / Агрегация
Быстрая инициализация новых запросов
Переиспользование эквивалентных операторов между запросами
Поисковые индексы
СпасибоАлексей Рагозин
[email protected]://blog.ragozin.info