Galvenās līdzņemamās vietas
Mūsu Binance Ledger migrācijas mērķis bija atrisināt aktuālo konta problēmu, kas raksturīga mūsu bijušajam relāciju datu bāzes serverim.
Kriptofondu birža darbojas 24 stundas diennaktī, 365 dienas gadā bez apkopes perioda, lai piesaistītu līdzekļus, atšķirībā no parastās biržas, kurā ir ikdienas pārtraukuma stundas.
Migrācijai uz jaunu Binance Ledger bija jānotiek tiešsaistē, jāsaglabā lietotāju līdzekļi SAFU, un tai nebija nekādas ietekmes uz uzņēmējdarbību, tāpēc galalietotāju pieredze palika nemanāma.
Mēs izvēlējāmies pakāpenisku migrācijas stratēģiju katram kontam, nevis pārgrieztu, visu uzreiz stratēģiju, ko izmanto gh-ost rīks.
Uzziniet vairāk par mūsu Binance Ledger migrāciju un visā procesā izmantotajiem rīkiem un metodēm.
Binance Ledger ir mūsu tehnisko darbību pamatā un apstrādā miljoniem ikdienas darījumu plašā lietotāju bāzē. Vairāk par sistēmu, tās mērķiem un izaicinājumiem varat uzzināt mūsu emuārā How Binance Ledger uzlabo jūsu Binance pieredzi. Mūsu migrācijas process no vecās versijas uz jauno saskārās ar tipisku izaicinājumu: kā mēs varētu uzlabot dzinēju lidojuma laikā, kamēr lidmašīna joprojām atrodas lidojumā? Mums bija jāmigrē mūsu lietotāju līdzekļi, un līdzekļu saglabāšana SAFU bija mūsu galvenā prioritāte.
Binance galvenie migrācijas izaicinājumi
Lai sasniegtu izvirzītos mērķus, bija jārisina šāds izaicinājumu saraksts:
Nodrošiniet pilnu jaunās virsgrāmatas pareizību
Spēt atklāt jebkuru fonda problēmu un to savlaicīgi un precīzi novērst
Nav dīkstāves augštecē
Mūsu migrācijas misijas salīdzināšana ar tiešsaistes datu bāzi DDL
Pirms iedziļināmies risinājuma detaļās, apskatīsim izplatīto problēmu, kas saistīta ar tiešsaistes DDL (datu definīcijas valodas) veikšanu lielai tabulai. Kas īsti ir DDL? Iedomājieties tabulu ar simtiem miljonu rindu, kur mums jāpievieno vēl viena kolonna. Mēs vēlamies to darīt tiešsaistē, netraucējot uzņēmējdarbību.
Lai atrisinātu šo problēmu, plaši tiek izmantots gh-ost rīks, un jūs varat redzēt, kā tas darbojas nākamajā diagrammā.
Process būtībā sastāv no diviem posmiem:
Sinhronizācijas fāze, kas turpinās, līdz jaunā tabula ir pilnībā identiska sākotnējai tabulai. Sinhronizējami divu veidu dati:
Esošie dati
Inkrementālie dati (jauni dati, kas ģenerēti no sākotnējās tabulas notiekošā migrācijas procesa laikā)
Pārgriešanas fāzē sākotnējā tabula tiek aizstāta ar jauno, nepārtraucot nevienu notiekošo darījumu.
Kur Binance Ledger problēmas atšķīrās
Neskatoties uz dažām līdzībām, Binance Ledger mūsu tiešsaistes migrācijas misijā bija dažas unikālas problēmas.
Pirmkārt, Binance aizmugursistēmas darbojas izkliedētā vidē, savukārt tiešsaistes datubāze DDL atrodas monolītā vidē. Otrkārt, mēs nevaram atļauties izmantot “viss uzreiz” samazinājuma pieeju, jo dati bija mūsu lietotāju līdzekļi. Visbeidzot, pirms masveida migrācijas sākšanas mums ir jānodrošina, lai visi attiecīgie pakalpojumi darbotos kopumā.
Tāpat kā iepriekšējā tiešsaistes DDL piemērā, mūsu migrācijai bija arī divi posmi:
Sinhronizācijas fāze, kurā tika īpaši izveidots īpašs replicatora pakalpojums, lai sinhronizētu atlikumus no vecās virsgrāmatas uz jauno virsgrāmatu
Pārslēgšanas fāze par katru kontu
Uz fāzēm balstītas pieejas
Uzdevums bija liels, un, kā saka, Roma netika uzcelta vienā dienā. Skaldi un valdi pieeja bieži darbojas kā šarms, saskaroties ar lielu un sarežģītu problēmu jomu.
1. fāze: replikācija
Kāpēc
Šeit mēs varam apkopot mūsu domāšanas procesu divos galvenajos punktos:
Mēs modelējām Binance Ledger kā jaunu vergu, kas pievienojas esošajam MySQL klasterim, kas nodrošina pašreizējo virsgrāmatas sistēmu. Izmantojot replikācijas metodes, mēs varētu pilnībā asinhroni sinhronizēt lietotāju atlikumus.
Pēc tam mēs varētu burtiski novirzīt ražošanas trafiku uz Binance Ledger, lai apstiprinātu tās pareizību un noturību. Pat ja šajā posmā viss kļūst skābs, tas neietekmēs mūs un mūsu lietotājus.
Kas
Zemāk mēs esam ilustrējuši kopējo replikācijas konveijeru. Kritiskais ceļš, kam jāpievērš uzmanība, ir:
Pārsūtīšana → Virsgrāmata → Binance Ledger replikators → Binance Ledger
Kā
Mēs sadalījām replikācijas procesu divos atsevišķos posmos:
Izrakstīja virsgrāmatas DB momentuzņēmumu un pēc tam importēja to Binances virsgrāmatā
Replicēts virsgrāmatas DB bin žurnāls pēc brīža, kad momentuzņēmums tika izmests.
Galu galā atlikumu un bilances žurnālu dati tiks pilnībā sinhronizēti starp veco virsgrāmatu un Binance Virsgrāmatu, ko tālāk var apstiprināt pilnais saskaņošanas modulis.
Kad
Binance Ledger sāka darboties 2022. gada augusta sākumā. Pēc tam mēs sākām replikācijas procesu, kas ilga līdz 2022. gada novembra vidum. Šis process mums bija svarīgs periods, jo jaunās virsgrāmatas sistēmas pareizība bija jāapstiprina 100%. Šo darbību nevarēja izlaist pirms nākamās migrācijas fāzes.
Galu galā mēs neatradām nekādas problēmas un veicām vairākas izlaišanas rutīnas, lai apmierinātu situāciju. Trīs mēnešu process nebija īpaši ātrs, taču tas bija nepieciešams mūsu SAFU mērķa sasniegšanai.
2. fāze: tiešsaistes migrācija
Kāpēc
Lai migrētu aptuveni simtiem miljonu kontu, mēs izveidojām pielāgotu migrēšanas darbu.
Kas
Tālāk ir parādīta viena konta galvenā migrācijas plūsma.
Šeit ir dažas galvenās piezīmes, kas jāpatur prātā.
Kontu sistēma katram kontam uztur īpašumtiesību kartēšanu.
Konts A → virsgrāmata
Konts B → Finansu virsgrāmata
Konts C → aizliegts
Ja pirms konta migrēšanas bija kāds nepabeigts vienlaicīgs darījums, tas tiks izlaists, lai samazinātu ietekmi uz uzņēmējdarbību.
Mēs mainījām īpašumtiesību kartēšanu no virsgrāmatas uz aizliegto, neļaujot veikt turpmākus bilances atjauninājumus, tādējādi padarot to nemainīgu.
Mēs saskaņojām līdzsvaru starp veco virsgrāmatu un Binances virsgrāmatu.
Mēs mainījām īpašumtiesību kartēšanu no aizliegtas uz Binance Ledger, ļaujot turpmākos bilances atjauninājumus novirzīt tieši uz Binance Ledger.
Saskaņā ar mūsu veiktspējas metriku no 3. darbības līdz 5. darbībai pagāja vidēji 150 ms. Teorētiski lietotāji nevar veikt nevienu darījumu šajā 150 ms migrācijas periodā. Izrādījās, ka nebija nekādu ietekmētu darījumu.
Izpilde
Uzņēmumā Binance mēs atbalstām principu “laba izpilde, nevis rūpīga plānošana”. Stingra izpilde ir ļoti svarīga mūsu panākumiem, un fondu drošība vienmēr ir mūsu galvenā prioritāte. Mēs pieņēmām pakāpenisku migrācijas stratēģiju trīs nedēļu laikā, lai pēc iespējas ātrāk atklātu problēmas, kas savukārt palīdzēja samazināt negatīvās ietekmes apmēru.
Izlīguma process
Saskaņošana ir ļoti svarīga, lai savlaicīgi atklātu iespējamās līdzsvara anomālijas no objektīva perspektīvas. Mēs varam veikt procesu gandrīz reāllaikā, lai nekavējoties rīkoties, pirms situācija pasliktinās. Īpaši tiešsaistes migrācijas procesam ir izstrādāti divu veidu saskaņošanas moduļi: reāllaika un pilna.
Īsts laiks
Uz darījumu līmeni balstīts saskaņošanas process ir izveidots, lai reāllaikā atklātu jebkuru fonda problēmu.
Pilns
Mēs varam periodiski veikt pilnu saskaņošanu, pamatojoties uz momentuzņēmumiem, kas sinhronizēti ar datu noliktavu. Šis process nodrošina, ka visi atlikumi starp veco virsgrāmatu un Binance virsgrāmatu ir vienādi.
Piemēram, pieņemsim, ka mums ir 10 miljoni lietotāju, kas joprojām dzīvo vecajā virsgrāmatā. Mēs varam izmantot šo pilno saskaņošanu, lai pārbaudītu, vai atlikumi un bilances žurnāli ir vienādi starp veco virsgrāmatu un Binances virsgrāmatu.
Migrācijas procesa noslēgums
Īsumā, misija tika paveikta, 1) izmantojot replikācijas metodes, lai apstiprinātu jaunā Binance Ledger pareizību; 2) ieviešot atsevišķu kontu migrācijas stratēģiju, lai lēni, droši, bet pārliecinoši jauninātu dzinēju.
Mēs uzskatām, ka iepriekšminēto tiešsaistes migrācijas paradigmu var atkārtoti izmantot līdzīgos uzdevumos. Ja apspriestie procesi un tēmas ir izraisījušas jūsu interesi, kāpēc gan neapsvērt iespēju pievienoties komandai? Mēs vienmēr meklējam mērķtiecīgus cilvēkus ar jaunu skatījumu uz mūsu ikdienas izaicinājumiem uzņēmumā Binance.
Atsauces
Kā Binance Ledger uzlabo jūsu Binance pieredzi
GitHub tiešsaistes shēmu migrācijas rīks MySQL
Tālāka lasīšana
MLOps izmantošana reāllaika pilnīgas mašīnmācīšanās cauruļvada izveidei | Binance emuārs
Vai Binance ir īstā vieta jums? Iemesli nepievienoties Binance | Binance emuārs
