Principalele produse la pachet

  • Migrarea noastră Binance Ledger a urmărit să rezolve problema contului fierbinte inerentă fostului nostru server de baze de date relaționale.

  • Un schimb de criptomonede funcționează 24/7, 365 de zile pe an, fără o fereastră de întreținere de utilizat, spre deosebire de un schimb obișnuit, care are ore zilnice de pauză.

  • Migrarea la un nou Binance Ledger trebuia să aibă loc online, să păstreze activele utilizatorilor SAFU și să nu aibă niciun impact asupra afacerii, astfel încât experiența pentru utilizatorii finali a rămas fără probleme.

  • Am ales o strategie de migrare treptată, cont cu cont, în loc de o strategie de trecere, totală, așa cum este folosită de instrumentul gh-ost.

Aflați mai multe despre migrarea Binance Ledger și despre instrumentele și tehnicile utilizate pe parcursul procesului.

Binance Ledger susține operațiunile noastre tehnice și procesează milioane de tranzacții zilnice într-o bază vastă de utilizatori. Puteți afla mai multe despre sistem, obiectivele sale și provocările sale în blogul nostru Cum Binance Ledger vă alimentează experiența Binance. Procesul nostru de migrare de la versiunea veche la versiunea nouă s-a confruntat cu o provocare tipică: cum am putea actualiza motorul din mers în timp ce avionul este încă în zbor? A trebuit să migrăm activele utilizatorilor noștri, iar păstrarea fondurilor SAFU a fost prioritatea noastră principală.

Principalele provocări ale migrației ale Binance

Următoarea listă de provocări a trebuit să fie abordată pentru a ne atinge obiectivele stabilite:

  1. Asigurați corectitudinea deplină a noului registru

  2. Să fie capabil să detecteze orice problemă de fond și să o remedieze în timp util și cu precizie

  3. Nu suportați timpi de nefuncționare pentru amonte

Comparând misiunea noastră de migrare cu baza de date online DDL

Înainte de a ne aprofunda în detaliile soluției noastre, să ne uităm la problema comună a realizării unui DDL (limbaj de definire a datelor) online pentru un tabel mare. Ce este mai exact DDL? Ei bine, imaginați-vă un tabel cu sute de milioane de rânduri în care trebuie să adăugăm o altă coloană. Dorim să facem acest lucru online, fără a perturba afacerea.

Instrumentul gh-ost este utilizat pe scară largă pentru a rezolva această problemă și puteți vedea cum funcționează în diagrama următoare.

Procesul constă în esență din două faze:

  1. Faza de sincronizare, care continuă până când noul tabel este complet identic cu cel original. Există două tipuri de date care trebuie sincronizate:

    1. Date existente

    2. Date incrementale (date noi generate din tabelul original în timpul procesului de migrare în curs)

  2. Faza de trecere schimbă tabelul inițial cu cel nou fără a întrerupe tranzacțiile în curs.

Unde diferă problemele Binance Ledger

În ciuda unor asemănări, Binance Ledger a avut câteva provocări inerente unice în misiunea noastră de migrare online.

În primul rând, sistemele de backend Binance funcționează într-un mediu distribuit, în timp ce baza de date online DDL este într-un mediu monolitic. În al doilea rând, nu ne putem permite să adoptăm abordarea de trecere totală, deoarece datele erau activele utilizatorilor noștri. În cele din urmă, trebuie să ne asigurăm că toate serviciile relevante funcționează în ansamblu înainte de a începe să efectuăm migrarea în masă.

Ca și în exemplul precedent DDL online, migrarea noastră a avut, de asemenea, două faze:

  1. Faza de sincronizare, în care un serviciu de replicare dedicat a fost creat special pentru a sincroniza soldurile din vechiul registru cu noul registru

  2. Faza de trecere cont cu cont

Abordări bazate pe etape

Sarcina a fost mare și, după cum se spune, Roma nu a fost construită într-o zi. Abordarea împărțiți și cuceriți funcționează adesea ca un farmec în fața unui domeniu de problemă mare și complex.

Faza 1: Replicare

De ce

Putem rezuma aici procesul nostru de gândire în două puncte principale:

  1. Am modelat Binance Ledger ca un nou sclav care se alătură clusterului MySQL existent, care alimentează sistemul actual de contabilitate. Prin folosirea tehnicilor de replicare, am putea menține soldurile utilizatorilor complet sincronizate în mod asincron.

  2. Am putea apoi să direcționăm traficul de producție literal către Binance Ledger pentru a-i valida corectitudinea și robustețea. Chiar dacă lucrurile se încurcă în această fază, nu există niciun impact pentru noi și utilizatorii noștri.

Ce

Mai jos, am ilustrat conducta generală de replicare. Calea critică la care trebuie să acordați atenție este:

Transfer → Ledger → Replicator Binance Ledger → Binance Ledger

Cum

Am împărțit procesul de replicare în două etape separate:

  1. A descărcat un instantaneu al DB registrului și apoi l-a importat în Binance Ledger

  2. S-a replicat jurnalul bin al DB registrului după momentul în care instantaneul a fost descărcat.

În cele din urmă, datele soldurilor și jurnalele de sold ar fi păstrate în deplină sincronizare între vechiul registru și Binance Ledger, care poate fi validat în continuare prin modulul complet de reconciliere.

Când

Binance Ledger a intrat în funcțiune la începutul lunii august 2022. După aceea, am început procesul de replicare, care a durat până la mijlocul lunii noiembrie 2022. Acest proces a fost o perioadă importantă pentru noi, deoarece corectitudinea noului sistem de registru trebuia validată 100%. Acest pas nu a putut fi sărit înainte de a continua cu următoarea fază de migrare.

În cele din urmă, nu am găsit probleme și am efectuat mai multe rutine de eliberare pentru a ne simți mai confortabil cu situația. Procesul de trei luni nu a fost deosebit de rapid, dar a fost necesar pentru obiectivul nostru SAFU.

Faza 2: migrarea online

De ce

Pentru a migra în jur de sute de milioane de conturi, am creat o lucrare de migrare personalizată.

Ce

Mai jos, am prezentat fluxul de migrare de bază pentru un cont:

Iată câteva note cheie de reținut:

  1. Sistemul de cont menține maparea proprietății pentru fiecare cont.

    1. Contul A → registru

    2. Contul B → Binance Ledger

    3. Contul C → interzis

  1. Înainte de a migra un cont, dacă a existat vreo tranzacție simultană în așteptare, aceasta ar fi omisă pentru a reduce impactul asupra afacerii.

  2. Am schimbat maparea proprietății din registru în interzis, interzicând orice actualizări ulterioare de sold, făcându-l astfel imuabil.

  3. Am reconciliat soldurile între vechiul registru și Binance Ledger.

  4. Am schimbat maparea proprietății de la interzis la Binance Ledger, permițând ca actualizările viitoare ale soldului să fie direcționate direct către Binance Ledger.

Conform valorii noastre de performanță, a fost nevoie de o medie de 150 ms de la pasul 3 la pasul 5. În teorie, utilizatorii nu pot efectua nicio tranzacție în această perioadă de migrare de 150 ms. S-a dovedit că au existat tranzacții cu impact zero.

Execuția

La Binance, susținem principiul „execuției bune în locul planificării meticuloase”. Execuția solidă este vitală pentru succesul nostru, iar siguranța fondurilor este întotdeauna prioritatea noastră principală. Am adoptat o strategie de migrare treptată pe o perioadă de trei săptămâni pentru a identifica problemele cât mai curând posibil, ceea ce, la rândul său, a contribuit la reducerea amplorii impactului negativ.

Procesul de reconciliere

Reconcilierea este extrem de importantă în detectarea eventualelor anomalii de echilibru la timp dintr-o perspectivă imparțială. Putem conduce procesul într-o manieră aproape în timp real pentru a lua măsuri prompte înainte ca lucrurile să se înrăutățească. Două tipuri de module de reconciliere sunt dezvoltate special pentru procesul de migrare online: în timp real și complet.

În timp real

Procesul de reconciliere la nivel de tranzacție este construit pentru a detecta orice problemă de fond în timp real.

Deplin

Putem efectua periodic o reconciliere completă pe baza instantaneelor ​​sincronizate cu depozitul de date. Acest proces asigură că toate soldurile sunt aceleași între vechiul registru și Binance Ledger.

De exemplu, să presupunem că mai avem 10 milioane de utilizatori care locuiesc în vechiul registru. Putem folosi această reconciliere completă pentru a verifica dacă soldurile și jurnalele de sold sunt aceleași între vechiul registru și Binance Ledger.

Încheierea procesului de migrare

Pe scurt, misiunea a fost îndeplinită prin 1) utilizarea tehnicilor de replicare pentru a valida corectitudinea noului Binance Ledger 2) implementarea unei strategii de migrare cont cu cont pentru a actualiza motorul încet, în siguranță, dar sigur.

Credem că paradigma de migrare online menționată mai sus poate fi reutilizată în sarcini similare. Dacă procesele și subiectele discutate v-au stârnit interesul, de ce să nu vă alăturați echipei? Căutăm mereu persoane dedicate, cu perspective noi asupra provocărilor noastre zilnice la Binance.

Referințe

  1. Cum Binance Ledger vă ajută experiența Binance

  2. Instrumentul online de migrare a schemelor GitHub pentru MySQL

Lectură suplimentară

  • Utilizarea MLOps pentru a construi o conductă de învățare automată end-to-end în timp real | Blogul Binance

  • Este Binance locul potrivit pentru tine? Motive pentru a nu te înscrie în Binance | Blogul Binance