2017 Типовая архитектура торговой системы Client Connectivity Order Management System Exchange Connectivity Settelment Risk Managment Trade Life Cycle Other Downstreams Settlement
2017 Классы систем Ultra Low Latency Время отклика системы – десятки микросекунд Колокация – обработка в рамках одного ЦОД Специализированное сетевое оборудование Прямая работа с сетевым стеком из прикладного кода Latency Sensitive Типовое серверное и сетевое оборудование Обмен данными между ЦОД Время отклика компонента – сотни микросекунд Обработка бизнес логики Real-Time Гарантированное время отклика Как правило низкая производительность Требуется real-time версия ОС Высокая пропускная способность Пропускная способность важнее времени отклика Агрессивная буфферизация и пакетна обработка Время отклика может страдать из-за буфферизации
2017 Двухфазный коммит (2PC) Достоинства Стандартизация X/Open, XA Гарантия однократной обработки Широкая поддержка Недостатки Распределённый коммит увеличивает время отклика Синхронный коммит между разными ресурсами
2017 Альтернатива 2PC Сквозная нумерация сообщений Брокер хранит диапазон сообщений Потребитель может “проиграть” сообщения с произвольного номера Потребитель сам хранит номер последнего сообщения Распределённая транзакция не требуется
2017 Восстановление после сбоя Каждый канал хранит номер последней транзакции При восстановлении Находим минимальный номер транзакции по всем каналам Проигрываем журнал с этого номера Каждый канал игнорирует уже отправленные сообщения Требуется строго детерменированная бизнес логика! Обработка входного сообщения должна быть повторяемой Временные метки считаются в момент секвенсирования Состояние бизнес объектов хранится в памяти
2017 Секвенсирования сообщений Достоинства Нет распределённой транзакции Выходные каналы не тормозят друг друга Запись в журнал параллельно с бизнес логикой Возможность “тёплого” резервирования Недостатки Требование к детерменированной бизнес логике Полное состояние бизнес объектов в памяти
2017 Синхронизация потоков Свободный ресурс – быстрый путь Медленная операция с памятью (compare and set) Занятый ресурс – медленный путь Вход в ядро (context switch) Ожидание Двойная стоимость – синхронизация требуется и на захват, и на освобождение ресурса
2017 Context Switch Cost Синхронизация требует вызов ядра ОС, что требует переключения контекста CPU (context switch) Стоимость переключение контекста Переключение контекста – единицы микросекунд Сброс кэшей CPU – десятки микросекунд Ожидание в очереди на CPU – сотни микросекунд
2017 Цена взаимодействия потоков Атомарные операции с памятью < 1 мкс Lock free структуры данных Блокирующая синхронизация быстрый путь Быстрое переключение контекста ~ X * 10 мкс Выполнение на выделенном ядре Медленное переключение контекста ~ X * 100 мкс Перескакивание по ядрам Насильственное потоков вытеснение ~ X 10 мс
2017 Конвейерная обработка Достоинства Однопоточная детерминированная бизнес логика Однопоточные структуры данных Возможность привязки потоков к ядрам Спекулятивное выполнение Недостатки Параллельная обработка только на уровне стадий Нельзя применять “блокирующие” операции в бизнес логике
2017 Мусор Сборка мусора в JVM неизбежна Наша цель – 99-ый перцентиль Настройка сборщика мусора Concurrent Mark Sweep алгоритм Паузы можно укоротить используя больше CPU Интервал между паузами можно увеличить Оптимизации кода Уменьшение выделения памяти там, где это оправдано GC не единственный неконтролируемый источник задержек
2017 Garbage free coding Garbage free Проблемы с многопоточностью Сложная логика повторного использования объектов Immutable objects Слишком много мусора Неоптимальные структуры данных Immutable objects Garbage free Holistic Low Latency
2017 24 Данный материал не является предложением или предоставлением какой-либо услуги. Данный материал предназначен исключительно для информационных и иллюстративных целей и не предназначен для распространения в рекламных целях. Любой анализ третьих сторон не предполагает какого-либо одобрения или рекомендации. Мнения, выраженные в данном материале, являются актуальными на текущий момент, появляются только в этом материале и могут быть изменены без предварительного уведомления. Эта информация предоставляется с пониманием того, что в отношении материала, предоставленного здесь, вы будете принимать самостоятельное решение в отношении любых действий в связи с настоящим материалом, и это решение является основанным на вашем собственном суждении, и что вы способны понять и оценить последствия этих действий. ООО “Технологический Центр Дойче Банка" не несет никакой ответственности за любые убытки любого рода, относящихся к этому материалу.