banner
banner

Aggiornamento OKEx Lightning 2.0

Un sistema di trading di nuova generazione che offre prestazioni più veloci

I. Sviluppo del sistema di commercio elettronico

L’aumento dei requisiti sulle tecnologie di base del trading di asset riflette la rapida crescita del settore finanziario globale durante la prima metà del XX secolo. Negli anni ’50, acquirenti e venditori commerciavano per trattativa e i prezzi in lettera venivano registrati manualmente su carta. Sullo sfondo di diversi tipi di titoli e l’aumento del volume degli scambi, questo modo di gestire le quotazioni ha gradualmente creato una crisi di scartoffie negli anni ’60 -’70 a causa della sua inefficienza e dei suoi costi elevati. La Borsa di New York (NYSE) non ha avuto altra scelta che sospendere le negoziazioni ogni mercoledì e tagliare le ore negli altri giorni di negoziazione per limitare la sua attività. Con la loro impareggiabile capacità di elaborare un numero enorme di transazioni contemporaneamente, i computer hanno iniziato a entrare in gioco. Un processo senza carta, o rivoluzione elettronica, è stato un punto di svolta cruciale nella storia finanziaria globale. Le transazioni sono migrate verso piattaforme di trading elettronico, offrendo operazioni più rapide ed economiche senza barriere temporali o geografiche.

La crisi senza carta negli Stati Uniti negli anni ’70

I sistemi di commercio elettronico sono emersi in tutto il mondo, tra cui Currenex di State Street, INET di HKEX, EBS Spot Ai di ICAP e LIFE CONNECT di LIFFE. Poiché le risorse crittografiche esistono solo in forma elettronica, sono naturalmente associate alle piattaforme di trading elettronico, ma i requisiti per il trading crittografico e i sistemi di trading tradizionali sono leggermente diversi. Nel complesso, un sistema di crypto trading dovrebbe possedere le seguenti caratteristiche:

un. Bassa latenza e velocità effettiva elevata

Latenza e throughput sono gli indicatori chiave per misurare le prestazioni di un sistema di trading. Il nostro obiettivo principale è ottenere una bassa latenza e un alto rendimento durante la progettazione di un sistema di trading.

Nel contesto del trading, la latenza si riferisce a un intervallo di tempo tra una richiesta ricevuta da e una risposta fatta da un sistema di trading. L’impennata del volume degli scambi ad alta frequenza, in larga misura, guida la domanda del mercato per una bassa latenza. Per consentire ai trader ad alta frequenza di effettuare scambi incrociati su scambi di criptovalute, i loro sistemi di trading dovrebbero essere dotati di motori di trading a bassa latenza per gestire rapidamente gli ordini e riflettere le realtà di mercato nel mercato delle criptovalute altamente competitivo.

Il throughput è la quantità di richieste o eventi che un sistema di trading può elaborare in un secondo. Il throughput può influire direttamente sull’efficienza del trading, quindi i sistemi di criptazione dovrebbero essere progettati per resistere a scenari estremi e utilizzare unità di elaborazione.

b. Manutenibilità e scalabilità

Rispetto agli asset tradizionali, i prezzi delle criptovalute sono più volatili e vulnerabili agli shock globali. Poiché i sistemi di criptovaluta gestiscono continuamente le richieste 24 ore su 24, 7 giorni su 7, sono progettati per subire la minor manutenzione offline possibile. Inoltre, è ovvio che il settore delle criptovalute sta subendo una rapida trasformazione perché diversi servizi di derivati ​​digitali vari come il margine, i futures e il trading di opzioni sono stati lanciati solo in un decennio dalla sua ascesa. La proliferazione di servizi innovativi ha innalzato i requisiti per la manutenibilità e la scalabilità dei sistemi di crypto trading.

II. OKEx Lightning System 2.0: prestazioni alla velocità della luce

Essendo uno dei principali scambi globali di asset digitali, OKEx serve decine di migliaia di utenti con le sue risorse crittografiche complete e prodotti derivati, con un volume di scambi giornaliero medio di miliardi di dollari. In qualità di leader del settore, stabiliamo standard estremamente più elevati per i nostri sistemi di trading. Oltre all’aggiornamento del nostro sistema di trading nell’agosto 2018, abbiamo implementato il nostro sistema Lightning 2.0 di nuova generazione con prestazioni leader a livello mondiale dopo più aggiornamenti. Le caratteristiche principali dell’aggiornamento Lightning 2.0 sono le seguenti:

Framework di aggiornamento Lightning 2.0

1. Memoizzazione

Nella fase iniziale di sviluppo dei sistemi di criptovaluta, le piattaforme di solito recuperano i dettagli di un ordine di offerta della controparte abbinandolo automaticamente nel database fino alla scadenza o all’esecuzione dell’ordine. Il sistema calcola quindi l’importo negoziato e genera una voce di transazione dopo l’abbinamento. Questo metodo potrebbe garantire la coerenza dei dati, ma non è riuscito a far fronte a molte richieste di mercato contemporaneamente a causa del lungo tempo di elaborazione.

Il nostro sistema di trading di nuova generazione, Lightning 2.0, ha adottato la più recente tecnica di corrispondenza in memoria, in cui il nostro sistema memorizza i dati degli ordini in memoria nel motore di corrispondenza degli ordini durante l’abbinamento automatico e l’accesso meno frequente al database durante il trading. Tutti i risultati di abbinamento e i dati intermedi vengono anche archiviati in memoria, il che può ridurre la quantità di input e output coinvolti, quindi aumentare in modo significativo la velocità di corrispondenza degli ordini.

Sebbene la memoizzazione possa ridurre notevolmente la latenza del trading, i sistemi di criptovaluta possono rischiare di perdere dati a causa della sospensione dell’alimentazione. Per risolvere questo problema, adottiamo l’approccio del sourcing di eventi per mantenere lo stato di un’entità aziendale e archiviare i dati in modo incentrato sugli eventi. Il sistema di trading tradizionalmente memorizza i dati dello stato corrente nel database, ma gli eventi vengono memorizzati per riflettere i cambiamenti di stato nell’approccio di sourcing degli eventi, che consente al sistema di ricostruire lo stato. Il sistema acquisisce periodicamente istantanee dello stato e riordina gli eventi dopo la creazione delle istantanee quando è richiesta la ricostruzione.

Inoltre, le moderne unità di elaborazione centrale (CPU) accedono ai dati in memoria a una velocità inferiore a quella prevista. Secondo a test, richiede solo 1/7 del tempo per recuperare i dati dalla cache L2 di una CPU rispetto alla tecnica di corrispondenza in memoria. Per ridurre ulteriormente la latenza, è importante capire come fare un buon uso della cache della CPU. L’unità di trasferimento dei dati è la linea della cache, che di solito è 64 byte. Mentre la CPU carica i dati in memoria, trasferisce i dati adiacenti in 64 byte nella cache. Di conseguenza, abbiamo apportato i seguenti miglioramenti al nostro sistema Lightning controllando la distribuzione dei dati in memoria:

  • Controlla la distribuzione in memoria comprimendo insieme i pezzi di dati che devono essere elaborati continuamente. Dopo che tutti i dati sono stati messi insieme, è necessario solo il primo caricamento dalla memoria in memoria alla cache durante la lettura di più parti dei dati. Successivamente, le letture successive possono raggiungere la cache per migliorare le prestazioni del sistema.
  • Controllare la distribuzione in memoria inserendo i dati che possono cambiare a una velocità maggiore (come i dati sui contatori) su diverse righe della cache. Quando più CPU modificano contemporaneamente byte diversi in una singola riga di cache, si verifica una falsa condivisione. Ad esempio, dopo che la CPU1 ha modificato i propri dati, la CPU2 deve ricaricare l’intera riga della cache quando legge nuovamente i propri dati perché i dati nella riga della cache sono stati aggiornati. Di conseguenza, entrambe le CPU devono aspettarsi a vicenda. Questo è il motivo per cui memorizziamo i dati in diverse linee di cache tramite riempimento per evitare questo problema.

2. Pubblica: sottoscrivi il modello e il protocollo binario

I due principali tipi di modelli di messaggistica sono i seguenti:

Confronto tra Lightning 1.0 e Lightning 2.0

Nel modello di pubblicazione-sottoscrizione, viene utilizzata una coda per la messaggistica. Quando un servizio deve richiedere altri servizi, le informazioni sulla richiesta vengono incapsulate in un messaggio e inserite nella coda. Altri servizi si iscriveranno alla coda dei messaggi per ottenere le informazioni ed elaborare la richiesta.

Nel modello richiesta-risposta, il client e il server sono fortemente accoppiati. Devono essere disponibili contemporaneamente. Il client può solo attendere fino a quando il server completa l’elaborazione della richiesta, il che riduce la sua velocità di elaborazione. Tuttavia, nel modello di pubblicazione-sottoscrizione, l’elaborazione della richiesta è completa dopo che l’editore inserisce il messaggio nella coda. L’editore è disaccoppiato dal sottoscrittore. D’altra parte, se il servizio dell’abbonato viene interrotto, il messaggio persiste sulla coda e l’elaborazione continua quando il suo servizio riprende senza la necessità per l’editore di inviare nuovamente il messaggio, migliorando così l’affidabilità della comunicazione di sistema. Pertanto, questo modello viene adottato in quasi tutti gli scenari per migliorare la disponibilità e la velocità effettiva del nostro sistema Lightning 2.0.

Dopo aver selezionato il modello richiesta-risposta, il passaggio successivo è la scelta di un formato di scambio di informazioni adatto. L’essenza della comunicazione è lo scambio di messaggi, di solito inclusi i dati. Diversi formati di scambio hanno diverse velocità di trasmissione e livelli di evolvibilità della comunicazione, oltre a utilizzare diversi linguaggi di programmazione. Pertanto, è una considerazione chiave nella progettazione di un sistema di scambio.

Due tipi comuni di formati di messaggi: basati su testo & binario

Le carenze di un protocollo di comunicazione basato su testo sono evidenti. Genera facilmente errori e consuma larghezza di banda quando si verifica l’analisi di un file di testo di grandi dimensioni, il che non funziona bene per i sistemi di trading estremamente sensibili ai problemi di efficienza e prestazioni. Un protocollo binario, tuttavia, può essere facilmente utilizzato per l’analisi, in modo da generare prestazioni migliori. Pertanto, abbiamo adottato il protocollo binario nel nostro sistema Lightning 2.0.

3. Ridimensionamento orizzontale

Al fine di migliorare ed espandere la capacità di elaborazione di un sistema di trading, sono desiderati sia il ridimensionamento orizzontale che il ridimensionamento verticale. Il ridimensionamento verticale si riferisce agli aggiornamenti del server, mentre il ridimensionamento orizzontale significa l’aggiunta di server. Le prestazioni hardware di un server sono soggette alla capacità di produzione umana. Sebbene la configurazione hardware (prestazioni hardware) di un server raggiunga un certo livello (limite), non può essere ulteriormente migliorata, quindi il ridimensionamento orizzontale è l’unica opzione. Tuttavia, l’approccio del ridimensionamento orizzontale potrebbe portare al bilanciamento del carico. Come distribuire ragionevolmente i carichi dell’intero sistema su diversi server?

La prima considerazione è la corsa dei dati. Sebbene l’aggiunta di server possa migliorare la capacità del sistema di elaborare i dati in parallelo, la sua capacità di elaborazione non può essere ancora efficacemente migliorata se si verifica una distribuzione irragionevole poiché il calcolo parallelo può far sì che i suoi server gareggino frequentemente per gli stessi dati.

Un sistema di trading fondamentalmente memorizza i dati di ordini, fondi e posizioni. Per ridurre il numero di gare di dati, viene eseguito il partizionamento del carico per suddividere i dati in frammenti in base al numero dei nostri utenti disponibili. I dati relativi a ordini, fondi e posizione degli utenti vengono elaborati in modo indipendente, il che aiuta a evitare gare di dati. Inoltre, abbiamo ulteriormente ottimizzato il nostro sistema aggiungendo un ciclo di elaborazione batch per ogni frammento per migliorare la capacità di elaborazione del nostro sistema. D’altra parte, i dati sui margini delle coppie di trading di derivati ​​sono un altro obiettivo da sottoporre a load sharding. Per un utente, ogni coppia di scambio è completamente indipendente. In questo modo, utilizziamo il partizionamento del carico in due fasi. Quando il nostro sistema necessita di più server, viene utilizzato il ribilanciamento del carico basato sullo sharding per ottenere la flessibilità dell’espansione del sistema.

4. Ridimensionamento del sistema

Un modo fondamentale per migliorare la manutenibilità e la scalabilità di un sistema di trading è separarne le funzionalità. In questo aggiornamento, abbiamo ulteriormente suddiviso la funzionalità del nostro sistema in 3 moduli, vale a dire corrispondenza degli ordini, contatore e controllo dei rischi. Ogni modulo contiene i propri dati interni e il proprio stato. Nello specifico, il modulo di abbinamento ordini è responsabile del mantenimento del portafoglio ordini e il modulo contatore memorizza i dati su posizioni e saldi contabili, mentre il modulo di controllo dei rischi svolge la funzione di gestione del rischio.

Poiché i moduli lavorano tra loro per abilitare la funzionalità dell’intero sistema di trading, è necessario un meccanismo per la loro comunicazione. Sono disponibili due opzioni per la comunicazione tra i servizi: condivisione dei dati e messaggistica.

La condivisione dei dati è il metodo più semplice che viene eseguito in un modo in cui un modulo aggiorna i propri dati e un altro modulo ottiene nuovi dati dopo la query. Tuttavia, questo approccio presenta due svantaggi significativi. Innanzitutto, se più moduli apportano modifiche e interrogano gli stessi dati, di solito si verificheranno gare di dati, durante le quali il tempo di risposta del database sarà molto più lungo. In secondo luogo, è difficile ottenere una comprensione in tempo reale delle modifiche in altri moduli e possiamo conoscere tali modifiche solo dopo la query.

Di conseguenza, i moduli del nostro sistema Lightning 2.0 sono progettati per salvare i propri dati e non per condividere dati tra loro. Se lo stato interno dei moduli cambia, la modifica verrà incapsulata in un evento e inserita nel loop degli eventi. Ciò può ridurre l’accoppiamento e la concorrenza tra i moduli del sistema e possono comunicare tra loro a una velocità ottimale dopo che l’evento è stato incapsulato, il che migliora notevolmente la velocità di comunicazione del nostro sistema.

III. Prestazioni dei dati Lightning 2.0

Abbiamo completato un aggiornamento completo del nostro sistema Lightning 2.0 nella seconda metà del 2019. Come sono migliorate le sue prestazioni rispetto a Lightning 1.0?

Ecco le ultime statistiche dei nostri test sui server di Hong Kong a novembre:

In termini di capacità di elaborazione degli ordini, il nostro sistema ha una capacità di elaborazione degli ordini massima di 100.000 txn / s, paragonabile ai sistemi di trading tradizionali nel mercato azionario globale.

I tre indicatori seguenti vengono utilizzati per testare la latenza del sistema:

Tre indicatori comuni per testare la latenza: ACK, Live e Cancel

Abbiamo utilizzato i dati dei test di settembre e novembre per confrontare le prestazioni prima e dopo l’upgrade del nostro sistema di trading (vedi sotto). Come indicato di seguito, la latenza media ACK è diminuita da 50 ms a 25 ms, la latenza media Live è passata da 134 ms a 63 ms e la latenza media di annullamento ridotta da 230 ms a 180 ms.

Mostra che il nostro sistema di trading Lightning 2.0 ha una latenza inferiore.

Prima dell’aggiornamento / Dopo l’aggiornamento

IV. Leader del settore nella tecnologia

La scalabilità, la riproducibilità e la flessibilità illimitate della blockchain significano che ci sono molte più nuove risorse che aspettano di essere scoperte. Il continuo sviluppo della tecnologia blockchain trasformerà la crescente proprietà intellettuale, copyright e risorse creative in criptovalute in futuro. Vedremo il mercato e gli utenti alla ricerca di maggiore affidabilità e prestazioni nei sistemi di trading.

In qualità di scambio di criptovalute leader a livello mondiale con servizi completi di C2C, spot e trading di derivati, miglioriamo costantemente i nostri prodotti di trading, il sistema di gestione del rischio, il motore di corrispondenza degli ordini, il servizio di archiviazione delle risorse crittografiche e il servizio clienti, siamo diventati la più grande crittografia del mondo piattaforma di trading di derivati ​​che sta riscuotendo grande popolarità tra gli utenti globali. Il nostro obiettivo finale è quello di crescere con i settori blockchain e criptovaluta impegnando risorse extra per perseguire una maggiore sicurezza ed efficienza del trading per spingere ulteriormente lo sviluppo di un mondo basato sulla blockchain che tutti nello spazio crittografico sognano.

Segui OKEx su:

Steemit: https://steemit.com/@okex-official

Sito web: https://www.okex.com

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me