11 декабря 2019

Обновление OKEx Lightning 2.0

Торговая система нового поколения, обеспечивающая более высокую производительность

I. Развитие электронной торговой системы

Растущие требования к основным технологиям торговли активами отражают быстрый рост мировой финансовой индустрии в первой половине 20-го века. В 50-х годах покупатели и продавцы торговались путем переговоров, и цены на покупку были записаны вручную на бумаге. На фоне разнообразных типов ценных бумаг и растущего объема торгов этот способ обращения с котировками постепенно создавал кризис бумажной работы в 60–70-е годы из-за его неэффективности и высокой стоимости. У Нью-Йоркской фондовой биржи (NYSE) не было другого выбора, кроме как приостанавливать торговлю каждую среду и сокращать часы в другие торговые дни, чтобы ограничить свою деятельность. С их непревзойденной способностью обрабатывать огромное количество транзакций одновременно, компьютеры начали вступать в игру. Безбумажный процесс или электронная революция стали переломным моментом в мировой финансовой истории. Транзакции перешли на электронные торговые платформы, предлагая более быстрые и дешевые операции без временных или географических барьеров.

Безбумажный кризис в США в 70-х годах

Электронные торговые системы появились во всем мире, в том числе на Stateex Currenex, HKEX INET, ICAP EBS Spot Ai и LIFFE LIFE CONNECT. Поскольку криптоактивы существуют только в электронной форме, они естественным образом связаны с электронными торговыми платформами, но требования к криптотрейдингу и традиционным торговым системам немного отличаются. В целом, криптоторговая система должна обладать следующими характеристиками:

а. Низкая задержка и высокая пропускная способность

Задержка и пропускная способность являются ключевыми показателями для измерения производительности торговой системы. Наша главная цель — добиться низкой задержки и высокой пропускной способности при разработке торговой системы.

В контексте торговли под задержкой понимается временной интервал между запросом, полученным торговой системой, и ответом на нее. Рост объема высокочастотной торговли в значительной степени обусловливает спрос на рынке с низкой задержкой. Чтобы позволить высокочастотным трейдерам осуществлять кросс-торговлю на крипто-биржах, их торговые системы должны быть оснащены механизмами торговли с малой задержкой, чтобы быстро обрабатывать ордера и отражать рыночные реалии на высококонкурентном рынке криптографии.

Пропускная способность — это количество запросов или событий, которые торговая система может обработать за секунду. Пропускная способность может напрямую влиять на эффективность торговли, поэтому системы криптовалюты должны быть спроектированы таким образом, чтобы выдерживать экстремальные сценарии и использовать единицы обработки.

б. Ремонтопригодность и масштабируемость

По сравнению с традиционными активами криптовалюты более волатильны и уязвимы для глобальных потрясений. Поскольку криптовалютные системы непрерывно обрабатывают запросы 24/7, они предназначены для минимального обслуживания в режиме офлайн. Кроме того, очевидно, что криптосектор претерпевает быстрое преобразование, потому что различные услуги цифровых деривативов, такие как маржа, фьючерсы и опционы, были развернуты только через десятилетие с момента его роста. Распространение инновационных услуг повысило требования к удобству обслуживания и масштабируемости криптоторговых систем.

II. OKEx Lightning System 2.0: Сверхбыстрая производительность

Являясь одной из ведущих мировых бирж цифровых активов, OKEx обслуживает десятки тысяч пользователей своими всеобъемлющими криптоактивами и производными продуктами со средним ежедневным объемом торговли в миллиарды долларов США. Как лидер отрасли, мы устанавливаем чрезвычайно высокие стандарты для наших торговых систем. В дополнение к обновлению нашей торговой системы в августе 2018 года мы внедрили нашу систему Lightning 2.0 следующего поколения с лучшими в мире показателями производительности после нескольких обновлений. Ключевые особенности обновления Lightning 2.0:

Термины:
Low latency & high throughput — Низкая задержка и высокая пропускная способность

High scalability & maintainability — Высокая масштабируемость и ремонтопригодность

In-memory matching — соответствие памяти

Publish-subcribe pattern — Шаблон публикации-подписки

Binary message format — Бинарный формат сообщения

Message passing between modules — Передача сообщений между модулями

Load rebalancing in horizontal scaling — Перебалансировка нагрузки в горизонтальном масштабирование

Modular programming — Модульное программирование

Handle deal of billions of USD per day — Обрабатывать сделки на миллиарды долларов в день

На ранней стадии разработки криптовалютных систем платформы обычно получают данные о заявке на покупку контрагента путем автоматического сопоставления его в базе данных до истечения срока действия или его заполнения. Затем система вычисляет торговую сумму и генерирует запись транзакции после сопоставления. Этот метод может обеспечить согласованность данных, но не может обрабатывать многие запросы рынка одновременно из-за длительного времени обработки.

Наша торговая система следующего поколения, Lightning 2.0 использует новейшую технику сопоставления в памяти, в которой наша система хранит данные ордеров в памяти в механизме сопоставления ордеров во время автоматического сопоставления и реже получает доступ к базе данных во время торговли. Все результаты сопоставления и промежуточные данные также хранятся в памяти, что может уменьшить количество задействованных входов и выходов и, следовательно, значительно повысить скорость сопоставления заказов.

Переводы терминов:

upgrade marks the transformation of our order matching system from a traditional one to an innovative one — обновление отмечает, преобразование нашей системы сопоставления заказов от традиционного инновационному

Database Matching — Сопоставление баз данных

Pros — плюсы

Cons — минус

Easy to use — Легко использовать

Lower technical thresholds — Более низкие технические пороги

High data consistency — Высокая согласованность данных

Long processing time — Длительное время обработки

Lower system load limit — Нижний предел нагрузки системы

Low system reliability — Низкая надежность системы

Large database load — Большая загрузка базы данных

In-memory matching — Соответствие в памяти

Short processing time — Короткое время обработки

Higher system load limit — Более высокий предел нагрузки системы

Quick response — Быстрый ответ

High system reliability — Высокая надежность системы

High data accessibility — Высокая доступность данных

Easy data loss — Простая потеря данных

Higher technical thresholds — Более высокие технические пороги

Хотя запоминание может значительно снизить задержки в торговле, криптовалютные системы могут рисковать потерей данных из-за приостановки энергоснабжения. Чтобы решить эту проблему, мы используем подход с использованием источников событий, чтобы сохранить состояние бизнес-объекта и хранить данные в зависимости от событий. Торговая система традиционно хранит данные о текущем состоянии в базе данных, но события сохраняются, чтобы отразить изменения состояния в подходе поиска событий, который позволяет системе перестроить состояние. Система периодически делает снимки состояния и переупорядочивает события после создания снимков, когда требуется перестроение.

Более того, современные центральные процессоры (ЦП) обращаются к данным в памяти с меньшей скоростью, чем ожидалось. Согласно тесту, для извлечения данных из кэша L2 ЦП требуется всего 1/7 времени по сравнению с техникой сопоставления в памяти. Чтобы еще больше снизить задержку, важно понять, как эффективно использовать кэш процессора. Единицей передачи данных является строка кеша, которая обычно составляет 64 байта. Пока процессор загружает данные в память, он передает соседние данные размером 64 байта в кэш. Соответственно, мы внесли следующие улучшения в нашу систему Lightning, контролируя распределение данных в памяти:

  • Управляйте распределением в памяти, упаковывая части данных, которые должны обрабатываться непрерывно. После того, как все данные собраны воедино, требуется только первая загрузка из хранилища в памяти в кэш при чтении нескольких частей данных. После этого последующее чтение может попасть в кэш для повышения производительности системы.
  • Управляйте распределением в памяти, помещая данные, которые могут изменяться с большей скоростью (например, данные на счетчиках), в разные строки кэша. Когда несколько процессоров изменяют разные байты в одной строке кэша одновременно, происходит ложное совместное использование. Например, после того, как CPU1 модифицирует свои собственные данные, CPU2 должен перезагрузить всю строку кэша, когда он снова считывает свои собственные данные, потому что данные в строке кэша были обновлены. В результате оба процессора должны ждать друг друга. Вот почему мы храним данные в разных строках кэша путем заполнения, чтобы избежать этой проблемы.

Два основных типа моделей обмена сообщениями:

Сравнение Lightning 1.0 и Lightning 2.0

Переводы терминов:

Request-response pattern — Шаблон запроса-ответа

Publish-subscribe pattern — Шаблон публикации-подписки

В модели публикация-подписка очередь используется для обмена сообщениями. Когда службе требуется запросить другие службы, информация о запросе излагается в сообщении и помещается в очередь. Другие службы подпишутся на очередь сообщений для получения информации и обработки запроса.

В модели запрос-ответ клиент и сервер тесно связаны друг с другом. Они должны быть доступны одновременно. Клиент может только ждать, пока сервер завершит обработку запроса, что снижает его скорость обработки. Однако в модели публикация-подписка обработка запроса завершается после того, как издатель помещает сообщение в очередь. Издатель отделен от подписчика. С другой стороны, если обслуживание абонента прерывается, сообщение сохраняется в очереди, и обработка продолжается, когда его служба возобновляется без необходимости повторной отправки сообщения издателем, что повышает надежность связи системы. Поэтому этот шаблон используется практически во всех сценариях для повышения доступности и пропускной способности нашей системы Lightning 2.0.

После того, как мы выберем шаблон запрос-ответ, следующим шагом будет выбор подходящего формата обмена информацией. Суть общения заключается в обмене сообщениями, обычно включающими данные. Разные форматы обмена имеют разную скорость передачи и уровни развития связи, а также используют разные языки программирования. Следовательно, это является ключевым фактором при разработке торговой системы.

Два распространенных типа форматов сообщений: текстовый и бинарный

Переводы терминов:

TEXT-BASED MESSAGE FORMAT — Тестовый формат сообщения

Binary message format — Бинарный формат сообщения

The common formats include JSON and XML — Общие форматы включают в себя JSON и XML.

Недостатки текстового протокола связи очевидны. Он легко генерирует ошибки и потребляет полосу пропускания, когда происходит синтаксический анализ большого текстового файла, что плохо работает для торговых систем, которые чрезвычайно чувствительны к проблемам эффективности и производительности. Однако бинарный протокол может быть легко использован для синтаксического анализа, что обеспечивает лучшую производительность. Поэтому мы приняли двоичный протокол в нашей системе Lightning 2.0.

Чтобы улучшить и расширить возможности обработки торговой системы, желательно горизонтальное и вертикальное масштабирование. Вертикальное масштабирование относится к обновлениям серверов, а горизонтальное масштабирование означает добавление серверов. Производительность оборудования сервера зависит от производственных мощностей человека. Хотя аппаратная конфигурация (производительность оборудования) сервера достигает определенного уровня (предела), она не может быть улучшена дополнительно, поэтому горизонтальное масштабирование является единственным вариантом. Однако подход с горизонтальным масштабированием может привести к балансировке нагрузки. Как разумно распределить нагрузки всей системы на разные серверы?

Первое соображение — это гонка данных. Хотя добавление серверов может улучшить способность системы обрабатывать данные параллельно, ее вычислительная мощность все равно не может быть эффективно улучшена, если произойдет необоснованное распределение, поскольку параллельные вычисления могут заставить ее серверы часто состязаться за одни и те же данные.

Торговая система в основном хранит данные о заказах, фондах и позициях. Чтобы уменьшить количество гонок данных, выполняется распределение нагрузки для разделения этих данных на сегменты в соответствии с числом доступных пользователей. Данные о заказах, фондах и позициях пользователей обрабатываются независимо, что помогает избежать гонки данных. Более того, мы дополнительно оптимизировали нашу систему, добавив серию пакетной обработки для каждого сегмента, чтобы повысить производительность нашей системы. С другой стороны, данные о марже по деривативным парам являются еще одной целью для распределения нагрузки. Для пользователя каждая торговая пара полностью независима. Таким образом, мы используем распределение нагрузки в два этапа. Когда нашей системе требуется больше серверов, используется балансировка нагрузки на основе сегментирования для достижения гибкости расширения системы.

Основным способом повышения удобства обслуживания и масштабируемости торговой системы является разделение ее функциональных возможностей. В этом обновлении мы дополнительно разделили функциональность нашей системы на 3 модуля, а именно: сопоставление заказов, счетчик и контроль рисков. Каждый модуль содержит свои внутренние данные и статус. В частности, модуль сопоставления заказов отвечает за ведение книги заказов, а модуль счетчика хранит данные о позициях и остатках на счетах, в то время как модуль управления рисками выполняет функцию управления рисками.

Поскольку модули работают друг с другом, чтобы обеспечить функционирование всей торговой системы, для их связи необходим механизм. Существует два варианта взаимодействия между службами: обмен данными и обмен сообщениями.

Совместное использование данных — это самый основной метод, который выполняется таким образом, что модуль обновляет свои данные, а другой модуль получает новые данные после запроса. Однако этот подход имеет два существенных недостатка. Во-первых, если несколько модулей вносят изменения и запрашивают одни и те же данные, это обычно приводит к гонкам данных, в течение которых время отклика базы данных будет намного больше. Во-вторых, трудно понять в реальном времени изменения в других модулях, и мы можем знать такие изменения только после запроса.

В результате модули нашей системы Lightning 2.0 предназначены для сохранения собственных данных, а не для обмена данными друг с другом. Если внутреннее состояние модулей изменяется, это изменение будет заключено в событие и помещено в цикл обработки событий. Это может уменьшить связь и конкуренцию между системными модулями, и они могут связываться друг с другом с оптимальной скоростью после изложение события, что значительно повышает скорость связи нашей системы.

III. Производительность данных Lightning 2.0

Мы завершили комплексное обновление нашей системы Lightning 2.0 во второй половине 2019 года. Как ее производительность улучшилась по сравнению с Lightning 1.0?

Вот последняя статистика нашего тестирования сервера в Гонконге в ноябре:

С точки зрения пропускной способности обработки заказов наша система имеет пиковую пропускную способность обработки заказов в 100 000 ткс / с, сопоставимую с основными торговыми системами на мировом рынке акций.

Следующие три индикатора используются для проверки задержки системы:

Three common indicators to test latency: ACK, Live, and Cancel — Три общих индикатора для проверки задержки: ACK, Live и Cancel
The delay between the placement of an order and the receipt of the order by the system — Задержка между размещением заказа и получением заказа системой
The delay between the placement of an order and the addition of the order to the orderbook — Задержка между размещением заказа и добавлением заказа в список заказов
The delay between the delivery of a cancelation request and the cancelation of the order on Websocket — Задержка между доставкой запроса на отмену и отменой заказа на Websocket

Мы использовали тестовые данные за сентябрь и ноябрь для сравнения производительности нашей торговой системы до и после обновления (см. Ниже). Как показано ниже, средняя задержка подтверждения уменьшилась с 50 мс до 25 мс, средняя задержка в реальном времени увеличилась с 134 мс до 63 мс, а средняя задержка отмены уменьшилась с 230 мс до 180 мс.

Это показывает, что наша торговая система Lightning 2.0 имеет меньшую задержку.

IV. Лидер отрасли в области технологий

Неограниченная масштабируемость, воспроизводимость и гибкость блокчейна означают, что есть еще много новых активов, которые ждут своего открытия. Постоянное развитие технологии блокчейна в будущем превратит растущую интеллектуальную собственность, авторские права и креативные активы в криптовалюту. Мы увидим рынок и пользователей, ищущих более высокую надежность и производительность в торговых системах.

Являясь ведущим в мире обменом криптовалютами с комплексными услугами C2C, спот и торговли деривативами, мы постоянно совершенствуем наши торговые продукты, систему управления рисками, механизм сопоставления заказов, сервис хранения криптовалют и обслуживание клиентов. Мы стали крупнейшей в мире платформой по торговле криптодеривативов, получившой большую популярность у пользователей со всего мира. Наша конечная цель — расти с помощью блокчейна и криптосекторов, выделяя дополнительные ресурсы для обеспечения большей безопасности и эффективности торговли, чтобы еще больше продвигать вперед развитие мира, управляемого цепочками блоков, о котором мечтают все в криптопространстве.


Отказ от ответственности: этот материал не должен приниматься за основу для принятия инвестиционных решений и не должен рассматриваться как рекомендация для участия в инвестиционных сделках. Торговля цифровыми активами сопряжена со значительным риском и может привести к потере вашего инвестированного капитала. Вы должны убедиться, что вы полностью понимаете связанный с этим риск и учитываете свой уровень опыта, инвестиционные цели и, при необходимости, обращаетесь за независимой финансовой консультацией.


Подписывайтесь на русскоязычные каналы OKEx:

Твиттер: https://twitter.com/OKEx_Russian
Чат в Telegram: https://t.me/okexofficial_ru
Инстаграм: https://www.instagram.com/okex_russia/
Официальный сайт: https://www.okex.com

Зарегистрироваться на криптобирже OKEx вы можете тут: https://bit.ly/2s4OpYt

Обсудить в Discord!