Contents
- 1 Торговая система нового поколения, обеспечивающая более высокую производительность
- 2 I. Развитие электронной торговой системы
- 3 а. Низкая задержка и высокая пропускная способность
- 4 б. Ремонтопригодность и масштабируемость
- 5 II. OKEx Lightning System 2.0: производительность Lightspeed
- 6 1. Воспоминание
- 7 2. Модель публикации – подписки и бинарный протокол
- 8 3. Горизонтальное масштабирование
- 9 4. Масштабирование системы
- 10 III. Скорость передачи данных Lightning 2.0
- 11 IV. Лидер отрасли в области технологий
Торговая система нового поколения, обеспечивающая более высокую производительность
I. Развитие электронной торговой системы
Возрастающие требования к основным технологиям торговли активами отражают быстрый рост мировой финансовой индустрии в первой половине 20 века. В 50-х покупатели и продавцы торгуют путем переговоров, а цены продажи фиксировались вручную на бумаге. На фоне разнообразия типов ценных бумаг и растущего объема торгов этот способ работы с котировками постепенно вызывал кризис бумажного документооборота в 60-70-е годы из-за его неэффективности и высокой стоимости. У Нью-Йоркской фондовой биржи (NYSE) не было другого выбора, кроме как приостанавливать торговлю каждую среду и сокращать часы в другие торговые дни, чтобы ограничить свою активность. Благодаря их непревзойденной способности обрабатывать огромное количество транзакций одновременно, компьютеры начали играть важную роль. Безбумажный процесс, или электронная революция, стал решающим поворотным моментом в мировой финансовой истории. Транзакции перекочевали на электронные торговые платформы, предлагая более быстрые и дешевые операции без временных или географических барьеров..
Безбумажный кризис в США в 70-е годы
Электронные торговые системы появились во всем мире, в том числе Currenex на State Street, INET на HKEX, EBS Spot Ai от ICAP и LIFE CONNECT от LIFFE. Поскольку криптоактивы существуют только в электронной форме, они, естественно, связаны с электронными торговыми платформами, но требования для крипто-торговли и традиционных торговых систем немного отличаются. В целом криптовалютная торговая система должна обладать следующими характеристиками:
а. Низкая задержка и высокая пропускная способность
Задержка и пропускная способность – ключевые индикаторы для измерения производительности торговой системы. Наша основная цель – добиться низкой задержки и высокой пропускной способности при разработке торговой системы..
В контексте торговли под задержкой понимается временной интервал между полученным запросом и ответом торговой системы. Резкий рост объемов высокочастотной торговли в значительной степени стимулирует рыночный спрос на низкую задержку. Чтобы высокочастотные трейдеры могли осуществлять перекрестную торговлю на криптовалютных биржах, их торговые системы должны быть оснащены торговыми механизмами с малой задержкой, чтобы быстро обрабатывать заказы и отражать рыночные реалии на высококонкурентном рынке криптовалют..
Пропускная способность – это количество запросов или событий, которые торговая система может обработать за секунду. Пропускная способность может напрямую влиять на эффективность торговли, поэтому системы криптовалюты должны быть спроектированы так, чтобы выдерживать экстремальные сценарии и использовать блоки обработки..
б. Ремонтопригодность и масштабируемость
По сравнению с традиционными активами цены на криптовалюту более волатильны и уязвимы для глобальных потрясений. Поскольку системы криптовалютной торговли непрерывно обрабатывают запросы 24/7, они рассчитаны на минимальное обслуживание в автономном режиме. Кроме того, очевидно, что криптосектор претерпевает быструю трансформацию, потому что различные услуги цифровых деривативов, такие как маржа, торговля фьючерсами и опционами, были развернуты только через десять лет с момента его подъема. Распространение инновационных услуг повысило требования к ремонтопригодности и масштабируемости систем крипто-торговли..
II. OKEx Lightning System 2.0: производительность Lightspeed
OKEx – одна из ведущих мировых бирж цифровых активов, обслуживающая десятки тысяч пользователей своими комплексными криптоактивами и производными продуктами со средним дневным объемом торгов в миллиарды долларов США. Как лидер отрасли, мы устанавливаем чрезвычайно высокие стандарты для наших торговых систем. В дополнение к обновлению нашей торговой системы в августе 2018 года мы внедрили нашу систему Lightning 2.0 следующего поколения с лучшей в мире производительностью после нескольких обновлений. Ключевые особенности обновления Lightning 2.0:
Платформа обновления Lightning 2.0
1. Воспоминание
На ранней стадии разработки систем крипто-торговли платформы обычно извлекают подробную информацию о заявке контрагента, автоматически сопоставляя ее в базе данных до тех пор, пока заказ не истечет или не будет исполнен. Затем система рассчитывает торгуемую сумму и создает запись транзакции после сопоставления. Этот метод мог обеспечить согласованность данных, но не смог одновременно обработать множество рыночных запросов из-за длительного времени обработки..
Наша торговая система следующего поколения, Lightning 2.0, использует новейшую технику сопоставления в памяти, при которой наша система хранит данные ордеров в памяти в механизме сопоставления ордеров во время автоматического сопоставления и менее частый доступ к базе данных во время торговли. Все результаты сопоставления и промежуточные данные также хранятся в памяти, что может уменьшить количество задействованных входов и выходов и, следовательно, значительно повысить скорость сопоставления заказов..
Хотя мемоизация может значительно сократить задержку при торговле, системы криптовалюты могут рисковать потерять данные из-за прекращения подачи электроэнергии. Чтобы решить эту проблему, мы используем подход к источникам событий, чтобы сохранять состояние бизнес-объекта и хранить данные с ориентацией на события. Торговая система традиционно хранит данные о текущем состоянии в базе данных, но события сохраняются для отражения изменений состояния в подходе к источникам событий, что позволяет системе восстанавливать состояние. Система периодически делает снимки состояния и переупорядочивает события после создания снимков, когда требуется перестройка..
Более того, современные центральные процессоры (ЦП) обращаются к данным в памяти с меньшей скоростью, чем ожидалось. Согласно тест, для извлечения данных из L2-кэша ЦП требуется всего 1/7 времени по сравнению с методом сопоставления в памяти. Чтобы еще больше уменьшить задержку, важно понимать, как эффективно использовать кэш ЦП. Единицей передачи данных является строка кэша, которая обычно составляет 64 байта. Пока ЦП загружает данные в память, он передает смежные данные в 64 байта в кэш. Соответственно, мы внесли следующие улучшения в нашу систему Lightning, контролируя распределение данных в памяти:
- Управляйте распределением в памяти, упаковывая вместе фрагменты данных, которые необходимо обрабатывать непрерывно.. После того, как все данные собраны вместе, требуется только первая загрузка из хранилища в памяти в кэш при чтении нескольких фрагментов данных. Впоследствии последующие чтения могут попасть в кеш для повышения производительности системы..
- Управляйте распределением в памяти, помещая данные, которые могут изменяться с большей скоростью (например, данные счетчиков), в разные строки кэша.. Когда несколько процессоров одновременно изменяют разные байты в одной строке кэша, происходит ложное совместное использование. Например, после того, как CPU1 изменяет свои собственные данные, CPU2 должен перезагрузить всю строку кэша, когда он снова читает свои собственные данные, потому что данные в строке кэша были обновлены. В результате оба процессора должны ждать друг друга. Вот почему мы храним данные в разных строках кеша посредством заполнения, чтобы избежать этой проблемы..
2. Модель публикации – подписки и бинарный протокол
Существуют два основных типа моделей обмена сообщениями:
Сравнение Lightning 1.0 и Lightning 2.0
В модели публикации-подписки для обмена сообщениями используется очередь. Когда службе необходимо запросить другие службы, информация о запросе инкапсулируется в сообщение и помещается в очередь. Другие службы будут подписываться на очередь сообщений для получения информации и обработки запроса..
В модели запрос-ответ клиент и сервер сильно связаны друг с другом. Они должны быть доступны одновременно. Клиент может только дождаться завершения обработки запроса сервером, что снижает скорость его обработки. Однако в модели публикации-подписки обработка запроса завершается после того, как издатель помещает сообщение в очередь. Издатель отделен от подписчика. С другой стороны, если обслуживание абонента прерывается, сообщение остается в очереди, и обработка продолжается, когда его обслуживание возобновляется без необходимости для издателя повторно отправлять сообщение, тем самым повышая надежность системной связи. Таким образом, этот шаблон применяется почти во всех сценариях для повышения доступности и пропускной способности нашей системы Lightning 2.0..
После того, как мы выберем шаблон запрос-ответ, следующим шагом будет выбор подходящего формата обмена информацией. Суть общения заключается в обмене сообщениями, обычно включающими данные. Различные форматы обмена имеют разную скорость передачи и уровни развития коммуникации, а также используют разные языки программирования. Следовательно, это ключевой момент при разработке торговой системы..
Два распространенных типа форматов сообщений: текстовые. & двоичный
Недостатки текстового протокола связи очевидны. Он легко генерирует ошибки и требует большой полосы пропускания, когда происходит синтаксический анализ большого текстового файла, что не подходит для торговых систем, которые чрезвычайно чувствительны к проблемам с эффективностью и производительностью. Однако бинарный протокол можно легко использовать для синтаксического анализа, что обеспечивает лучшую производительность. Поэтому мы приняли двоичный протокол в нашей системе Lightning 2.0..
3. Горизонтальное масштабирование
Чтобы улучшить и расширить возможности обработки в торговой системе, желательны как горизонтальное, так и вертикальное масштабирование. Вертикальное масштабирование относится к обновлению серверов, а горизонтальное масштабирование означает добавление серверов. Производительность оборудования сервера зависит от производственных возможностей человека. В то время как конфигурация оборудования (производительность оборудования) сервера достигает определенного уровня (предела), ее нельзя улучшить, поэтому горизонтальное масштабирование является единственным вариантом. Однако подход горизонтального масштабирования может привести к балансировке нагрузки. Как разумно распределить нагрузку всей системы по разным серверам?
Первое, что нужно учитывать – это гонка за данными. Хотя добавление серверов может улучшить способность системы обрабатывать данные параллельно, ее вычислительная мощность не может быть эффективно улучшена в случае необоснованного распределения, поскольку параллельные вычисления могут заставить ее серверы часто гоняться за одними и теми же данными..
Торговая система в основном хранит данные о заказах, фондах и позициях. Чтобы снизить количество гонок данных, выполняется сегментирование нагрузки для разделения этих данных на сегменты в соответствии с количеством доступных пользователей. Данные о заказах, фондах и позициях пользователей обрабатываются независимо, что помогает избежать скачков данных. Более того, мы дополнительно оптимизировали нашу систему, добавив цикл пакетной обработки для каждого сегмента, чтобы повысить производительность нашей системы. С другой стороны, данные о марже для торговых пар деривативов – еще одна цель, которая подвергнется сегментированию нагрузки. Для пользователя каждая торговая пара полностью независима. Таким образом, мы применяем сегментирование нагрузки в два этапа. Когда нашей системе требуется больше серверов, используется перебалансировка нагрузки на основе сегментирования для достижения гибкости расширения системы..
4. Масштабирование системы
Основной способ повысить ремонтопригодность и масштабируемость торговой системы – разделить ее функциональные возможности. В этом обновлении мы дополнительно разделим функциональность нашей системы на 3 модуля, а именно: сопоставление заказов, счетчик и контроль рисков. Каждый модуль содержит свои внутренние данные и статус. В частности, модуль согласования заказов отвечает за ведение книги заказов, а модуль счетчика хранит данные о позициях и остатках на счетах, а модуль управления рисками выполняет функцию управления рисками..
Поскольку модули работают друг с другом, чтобы обеспечить функциональность всей торговой системы, необходим механизм для их взаимодействия. Есть два варианта межсервисного взаимодействия: обмен данными и обмен сообщениями..
Совместное использование данных – это самый простой метод, который работает таким образом, что модуль обновляет свои данные, а другой модуль получает новые данные после запроса. Однако у этого подхода есть два существенных недостатка. Во-первых, если несколько модулей вносят изменения и запрашивают одни и те же данные, это обычно приводит к гонке данных, во время которой время отклика базы данных будет намного больше. Во-вторых, трудно получить представление об изменениях в других модулях в режиме реального времени, и мы можем узнать такие изменения только после запроса..
В результате модули нашей системы Lightning 2.0 предназначены для сохранения собственных данных, а не для обмена данными друг с другом. Если внутреннее состояние модулей изменяется, это изменение будет инкапсулировано в событие и помещено в цикл событий. Это может уменьшить взаимосвязь и конкуренцию между модулями системы, и они могут обмениваться данными друг с другом с оптимальной скоростью после инкапсуляции события, что значительно увеличивает скорость связи нашей системы..
III. Скорость передачи данных Lightning 2.0
Мы завершили комплексное обновление нашей системы Lightning 2.0 во второй половине 2019 года. Как улучшилась ее производительность по сравнению с Lightning 1.0?
Вот последняя статистика тестирования нашего сервера в Гонконге в ноябре:
Что касается производительности обработки заказов, наша система имеет пиковую производительность обработки заказов в 100000 транзакций в секунду, что сравнимо с основными торговыми системами на мировом фондовом рынке..
Следующие три индикатора используются для проверки задержки системы:
Три общих индикатора для проверки задержки: ACK, Live и Cancel
Мы использовали тестовые данные за сентябрь и ноябрь, чтобы сравнить производительность нашей торговой системы до и после обновления (см. Ниже). Как указано ниже, средняя задержка ACK уменьшилась с 50 мс до 25 мс, средняя задержка Live увеличилась с 134 мс до 63 мс, а средняя задержка отмены уменьшилась с 230 мс до 180 мс..
Это показывает, что наша торговая система Lightning 2.0 имеет меньшую задержку..
До обновления / после обновления
IV. Лидер отрасли в области технологий
Неограниченная масштабируемость, воспроизводимость и гибкость блокчейна означают, что есть еще много новых активов, ожидающих открытия. Продолжающееся развитие технологии блокчейн в будущем преобразует растущую интеллектуальную собственность, авторские права и творческие активы в криптографию. Мы увидим рынок и пользователей, которые ищут более высокую надежность и производительность в торговых системах..
Как ведущая мировая биржа криптовалют с комплексными услугами C2C, спотовой торговли и деривативами, мы постоянно совершенствуем наши торговые продукты, систему управления рисками, механизм согласования заказов, службу хранения криптоактивов и обслуживание клиентов, мы стали крупнейшей в мире криптовалютой. платформа для торговли производными финансовыми инструментами, получившая большую популярность среди пользователей по всему миру. Наша конечная цель – расти вместе с сектором блокчейн и криптографии, выделяя дополнительные ресурсы для обеспечения более высокой торговой безопасности и эффективности, чтобы и дальше продвигать развитие мира, управляемого блокчейном, о котором мечтают все в криптопространстве..
Следите за OKEx по:
Steemit: https://steemit.com/@okex-official
Сайт: https://www.okex.com