Punti principali

  • La nostra migrazione su Binance Ledger mirava a risolvere il problema degli hot account inerente al nostro precedente server di database relazionale.

  • Uno scambio di criptovalute opera 24 ore su 24, 7 giorni su 7, 365 giorni all'anno senza alcuna finestra di manutenzione per sfruttare la leva, a differenza di uno scambio regolare, che ha ore di pausa giornaliere.

  • La migrazione a un nuovo Binance Ledger doveva avvenire online, mantenere le risorse degli utenti SAFU e non comportare alcun impatto aziendale, quindi l’esperienza per gli utenti finali è rimasta fluida.

  • Abbiamo scelto una strategia di migrazione graduale, account per account, invece di una strategia completa e completa come quella impiegata dallo strumento gh-ost.

Scopri di più sulla nostra migrazione su Binance Ledger e sugli strumenti e le tecniche utilizzate durante il processo.

Binance Ledger è alla base delle nostre operazioni tecniche ed elabora milioni di transazioni giornaliere su una vasta base di utenti. Puoi saperne di più sul sistema, i suoi obiettivi e le sue sfide nel nostro blog Come Binance Ledger Potenzia la tua esperienza Binance. Il nostro processo di migrazione dalla vecchia alla nuova versione ha dovuto affrontare una sfida tipica: come potremmo aggiornare il motore al volo mentre l'aereo è ancora in volo? Abbiamo dovuto migrare le risorse dei nostri utenti e mantenere i fondi SAFU era la nostra massima priorità.

Le principali sfide della migrazione di Binance

Per raggiungere gli obiettivi prefissati è stato necessario affrontare il seguente elenco di sfide:

  1. Garantire la piena correttezza del nuovo libro mastro

  2. Essere in grado di rilevare qualsiasi problema relativo ai fondi e risolverlo in modo tempestivo e accurato

  3. Non comportare tempi di inattività per gli upstream

Confronto della nostra missione di migrazione con il DDL del database online

Prima di immergerci nei dettagli della nostra soluzione, diamo un'occhiata al problema comune relativo all'esecuzione di un DDL (linguaggio di definizione dei dati) online per una tabella di grandi dimensioni. Cos'è esattamente il DDL? Bene, immagina una tabella con centinaia di milioni di righe in cui dobbiamo aggiungere un'altra colonna. Vogliamo farlo online senza interruzioni dell'attività.

Lo strumento gh-ost è ampiamente utilizzato per risolvere questo problema e puoi vedere come funziona nel diagramma seguente.

Il processo si compone essenzialmente di due fasi:

  1. La fase di sincronizzazione, che continua finché la nuova tabella non sarà completamente identica alla tabella originale. Esistono due tipi di dati da sincronizzare:

    1. Dati esistenti

    2. Dati incrementali (nuovi dati generati dalla tabella originale durante il processo di migrazione in corso)

  2. La fase di cutover scambia la tabella originale con quella nuova senza interrompere le transazioni in corso.

Dove differivano i problemi di Binance Ledger

Nonostante alcune somiglianze, Binance Ledger ha dovuto affrontare alcune sfide intrinsecamente uniche nella nostra missione di migrazione online.

Innanzitutto, i sistemi backend di Binance operano in un ambiente distribuito, mentre il database online DDL si trova in un ambiente monolitico. In secondo luogo, non possiamo permetterci di adottare l’approccio “tutto in una volta” perché i dati erano il patrimonio dei nostri utenti. Infine, dobbiamo garantire che tutti i servizi rilevanti funzionino nel loro insieme prima di iniziare a effettuare la migrazione di massa.

Come nel precedente esempio DDL online, anche la nostra migrazione prevedeva due fasi:

  1. La fase di sincronizzazione, in cui è stato appositamente realizzato un servizio di replicatore dedicato per sincronizzare i saldi dal vecchio registro al nuovo registro

  2. La fase di cutover conto per conto

Approcci basati sulle fasi

Il compito era enorme e, come si suol dire, Roma non fu costruita in un giorno. L’approccio divide et impera spesso funziona come un incantesimo di fronte a un ambito problematico ampio e complesso.

Fase 1: replica

Il perché

Possiamo riassumere il nostro processo di pensiero qui in due punti principali:

  1. Abbiamo modellato Binance Ledger come un nuovo slave che si unisce al cluster MySQL esistente, che alimenta l'attuale sistema di contabilità. Sfruttando le tecniche di replica, potremmo mantenere i saldi degli utenti completamente sincronizzati in modo asincrono.

  2. Potremmo quindi instradare il traffico di produzione parola per parola su Binance Ledger per verificarne la correttezza e la robustezza. Anche se le cose si mettono male in questa fase, non ci sarà alcun impatto per noi e per i nostri utenti.

Il cosa

Di seguito, abbiamo illustrato la pipeline di replica complessiva. Il percorso critico a cui prestare attenzione è:

Trasferimento → Ledger → Replicatore di Binance Ledger → Binance Ledger

Il come

Abbiamo suddiviso il processo di replica in due passaggi separati:

  1. Ho scaricato un'istantanea del DB del registro e l'ho poi importata in Binance Ledger

  2. Replicato il log bin del database contabile dopo il momento in cui è stato eseguito il dump dello snapshot.

Alla fine, i dati dei saldi e i registri dei saldi verranno mantenuti completamente sincronizzati tra il vecchio registro e Binance Ledger, che potrà essere ulteriormente convalidato dal modulo di riconciliazione completa.

Il quando

Binance Ledger è stato lanciato all'inizio di agosto 2022. Successivamente, abbiamo avviato il processo di replica, che è durato fino alla metà di novembre 2022. Questo processo è stato un periodo importante per noi poiché la correttezza del nuovo sistema di contabilità doveva essere convalidata al 100%. Questo passaggio non può essere ignorato prima di procedere con la fase di migrazione successiva.

Alla fine, non abbiamo riscontrato problemi e abbiamo eseguito diverse routine di rilascio per sentirci più a nostro agio con la situazione. Il processo di tre mesi non è stato particolarmente veloce, ma era necessario per il nostro obiettivo SAFU.

Fase 2: migrazione online

Il perché

Per migrare centinaia di milioni di account, abbiamo creato un processo di migrazione personalizzato.

Il cosa

Di seguito, abbiamo illustrato il flusso di migrazione principale per un account:

Ecco alcune note chiave da tenere a mente:

  1. Il sistema degli account mantiene la mappatura della proprietà per ciascun account.

    1. Conto A → libro mastro

    2. Conto B → Binance Ledger

    3. Conto C → vietato

  1. Prima della migrazione di un account, se esistessero transazioni simultanee in sospeso, queste verrebbero saltate per ridurre l'impatto aziendale.

  2. Abbiamo modificato la mappatura della proprietà da registro a vietata, impedendo qualsiasi ulteriore aggiornamento del saldo e rendendola quindi immutabile.

  3. Abbiamo riconciliato i saldi tra il vecchio registro e Binance Ledger.

  4. Abbiamo cambiato la mappatura della proprietà da vietata a Binance Ledger, consentendo ai futuri aggiornamenti del saldo di essere indirizzati direttamente a Binance Ledger.

Secondo il nostro parametro di prestazione, sono necessari in media 150 ms dal passaggio 3 al passaggio 5. In teoria, gli utenti non possono effettuare alcuna transazione durante questo periodo di migrazione di 150 ms. Si è scoperto che non vi erano transazioni impattate.

L'esecuzione

Noi di Binance sosteniamo il principio della “buona esecuzione anziché una pianificazione meticolosa”. Una solida esecuzione è vitale per il nostro successo e la sicurezza dei fondi è sempre la nostra massima priorità. Abbiamo adottato una strategia di migrazione graduale per un periodo di tre settimane per individuare i problemi il prima possibile, il che a sua volta ha contribuito a ridurre l’entità dell’impatto negativo.

Il processo di riconciliazione

La riconciliazione è estremamente importante per individuare tempestivamente potenziali anomalie di equilibrio da una prospettiva imparziale. Possiamo condurre il processo quasi in tempo reale per agire tempestivamente prima che le cose peggiorino. Due tipi di moduli di riconciliazione sono sviluppati appositamente per il processo di migrazione online: in tempo reale e completo.

Tempo reale

Il processo di riconciliazione a livello di transazione è progettato per rilevare qualsiasi problema relativo ai fondi in tempo reale.

Pieno

Possiamo eseguire periodicamente una riconciliazione completa in base agli snapshot sincronizzati con il data warehouse. Questo processo garantisce che tutti i saldi siano gli stessi tra il vecchio registro e Binance Ledger.

Ad esempio, supponiamo di avere 10 milioni di utenti che risiedono ancora nel vecchio registro. Possiamo utilizzare questa riconciliazione completa per verificare che i saldi e i registri dei saldi siano gli stessi tra il vecchio registro e Binance Ledger.

Conclusione del processo di migrazione

In poche parole, la missione è stata compiuta 1) utilizzando tecniche di replica per convalidare la correttezza del nuovo Binance Ledger 2) implementando una strategia di migrazione account per account per aggiornare il motore lentamente, in modo sicuro ma sicuro.

Riteniamo che il suddetto paradigma di migrazione online possa essere riutilizzato in compiti simili. Se i processi e gli argomenti discussi hanno suscitato il tuo interesse, perché non prendere in considerazione l'idea di unirti al team? Siamo sempre alla ricerca di persone dedicate con nuove prospettive sulle nostre sfide quotidiane su Binance.

Riferimenti

  1. Come Binance Ledger potenzia la tua esperienza su Binance

  2. Strumento di migrazione dello schema online di GitHub per MySQL

Ulteriori letture

  • Utilizzo di MLOps per creare una pipeline di machine learning end-to-end in tempo reale | Blog di Binance

  • Binance è il posto giusto per te? Motivi per non iscriversi a Binance | Blog di Binance