Główne dania na wynos

  • Nasza migracja Binance Ledger miała na celu rozwiązanie problemu gorącego konta, nieodłącznie związanego z naszym poprzednim serwerem relacyjnej bazy danych.

  • Giełda kryptowalut działa 24 godziny na dobę, 7 dni w tygodniu, 365 dni w roku, bez okna konserwacyjnego, w którym można wykorzystać dźwignię, w przeciwieństwie do zwykłej giełdy, która ma codzienne godziny przerw.

  • Migracja do nowego Binance Ledger musiała odbywać się online, utrzymywać zasoby użytkowników w SAFU i nie wiązać się z żadnym wpływem biznesowym, więc doświadczenie dla użytkowników końcowych pozostało bezproblemowe.

  • Wybraliśmy strategię stopniowej migracji poszczególnych kont zamiast strategii polegającej na przenoszeniu wszystkich danych na raz, stosowanej w narzędziu Ghost.

Dowiedz się więcej o naszej migracji Binance Ledger oraz narzędziach i technikach stosowanych w całym procesie.

Binance Ledger wspiera nasze operacje techniczne i przetwarza miliony codziennych transakcji wśród ogromnej bazy użytkowników. Możesz dowiedzieć się więcej o systemie, jego celach i wyzwaniach na naszym blogu Jak Binance Ledger zasila Twoje doświadczenie Binance. Nasz proces migracji ze starej do nowej wersji stanął przed typowym wyzwaniem: jak zaktualizować silnik na bieżąco, gdy samolot jest jeszcze w locie? Musieliśmy przeprowadzić migrację zasobów naszych użytkowników, a utrzymanie środków w systemie SAFU było naszym najwyższym priorytetem.

Kluczowe wyzwania migracyjne Binance

Aby osiągnąć wyznaczone cele, należało stawić czoła poniższej liście wyzwań:

  1. Zapewnij pełną poprawność nowej księgi

  2. Być w stanie wykryć każdy problem z funduszem i naprawić go w odpowiednim czasie i dokładnie

  3. Nie powodują przestojów na wyższym szczeblu łańcucha dostaw

Porównanie naszej misji migracyjnej z internetową bazą danych DDL

Zanim zagłębimy się w szczegóły naszego rozwiązania, przyjrzyjmy się typowemu problemowi wykonywania języka DDL (języka definicji danych) online dla dużej tabeli. Czym właściwie jest DDL? Cóż, wyobraźmy sobie tabelę zawierającą setki milionów wierszy, w której musimy dodać kolejną kolumnę. Chcemy to robić online, bez zakłócania działalności firmy.

Narzędzie gh-ost jest szeroko stosowane do rozwiązania tego problemu, a jego działanie można zobaczyć na poniższym schemacie.

Proces składa się zasadniczo z dwóch faz:

  1. Faza synchronizacji, która trwa do momentu, aż nowa tabela będzie w pełni identyczna z oryginalną tabelą. Synchronizowane są dwa rodzaje danych:

    1. Istniejące dane

    2. Dane przyrostowe (nowe dane wygenerowane z oryginalnej tabeli w trakcie trwającego procesu migracji)

  2. Faza przełączania polegająca na zamianie pierwotnego stołu na nowy bez przerywania trwających transakcji.

Gdzie problemy Binance Ledger były inne

Pomimo pewnych podobieństw, Binance Ledger stanął przed pewnymi z natury wyjątkowymi wyzwaniami podczas naszej misji migracji online.

Po pierwsze, systemy backendowe Binance działają w środowisku rozproszonym, podczas gdy internetowa baza danych DDL działa w środowisku monolitycznym. Po drugie, nie możemy sobie pozwolić na przyjęcie podejścia polegającego na przeniesieniu wszystkiego na raz, ponieważ dane stanowiły aktywa naszych użytkowników. Na koniec musimy upewnić się, że wszystkie odpowiednie usługi działają jako całość, zanim zaczniemy przeprowadzać masową migrację.

Podobnie jak w poprzednim przykładzie DDL online, nasza migracja również składała się z dwóch faz:

  1. Faza synchronizacji, podczas której specjalnie zbudowano dedykowaną usługę replikatora w celu synchronizacji sald ze starej księgi do nowej księgi

  2. Faza przeniesienia konta po koncie

Podejścia fazowe

Zadanie było duże, a jak mówią, nie od razu Rzym zbudowano. Podejście „dziel i rządź” często działa jak czar w obliczu dużej i złożonej domeny problemowej.

Faza 1: Replikacja

Dlaczego

Możemy podsumować nasz proces myślowy w dwóch głównych punktach:

  1. Zamodelowaliśmy Binance Ledger jako nowego niewolnika dołączającego do istniejącego klastra MySQL, który zasila obecny system księgi głównej. Wykorzystując techniki replikacji, moglibyśmy zapewnić pełną synchronizację sald użytkowników w sposób asynchroniczny.

  2. Moglibyśmy następnie dosłownie skierować ruch produkcyjny do Binance Ledger, aby sprawdzić jego poprawność i solidność. Nawet jeśli na tym etapie coś pójdzie nie tak, nie będzie to miało żadnego wpływu na nas i naszych użytkowników.

Co

Poniżej zilustrowaliśmy ogólny potok replikacji. Ścieżka krytyczna, na którą należy zwrócić uwagę, to:

Transfer → Księga → Replikator Binance Ledger → Binance Ledger

Jak

Proces replikacji podzieliliśmy na dwa oddzielne etapy:

  1. Zrzuciłem migawkę bazy danych księgi, a następnie zaimportowałem ją do księgi Binance

  2. Zreplikowano dziennik bin bazy danych księgi po zrzuceniu migawki.

Ostatecznie dane sald i dzienniki sald będą w pełni zsynchronizowane pomiędzy starą księgą a Księgą Binance, co będzie można dodatkowo zweryfikować za pomocą modułu pełnego uzgadniania.

Kiedy

Binance Ledger został uruchomiony na początku sierpnia 2022 r. Następnie rozpoczęliśmy proces replikacji, który trwał do połowy listopada 2022 r. Proces ten był dla nas ważnym okresem, ponieważ poprawność nowego systemu ksiąg wymagała 100% sprawdzenia poprawności. Tego kroku nie można było pominąć przed przystąpieniem do kolejnej fazy migracji.

Ostatecznie nie znaleźliśmy żadnych problemów i przeprowadziliśmy kilka procedur wydawania, aby lepiej się zorientować w sytuacji. Trzymiesięczny proces nie był szczególnie szybki, ale był niezbędny, aby osiągnąć nasz cel SAFU.

Faza 2: migracja online

Dlaczego

Aby przeprowadzić migrację około setek milionów kont, stworzyliśmy dostosowane zadanie migracji.

Co

Poniżej przedstawiliśmy podstawowy proces migracji dla jednego konta:

Oto kilka kluczowych uwag, o których warto pamiętać:

  1. System kont utrzymuje mapowanie własności dla każdego konta.

    1. Konto A → księga

    2. Konto B → Księga Binance

    3. Konto C → zabronione

  1. Jeśli przed migracją konta istniała jakakolwiek oczekująca transakcja, zostałaby ona pominięta, aby zmniejszyć wpływ na działalność biznesową.

  2. Zmieniliśmy mapowanie własności z księgi na zabronione, uniemożliwiając dalsze aktualizacje salda, dzięki czemu jest ono niezmienne.

  3. Uzgodniliśmy salda pomiędzy starą księgą a Księgą Binance.

  4. Zmieniliśmy mapowanie własności z zabronionej na Binance Ledger, umożliwiając kierowanie przyszłych aktualizacji salda bezpośrednio do Binance Ledger.

Według naszych wskaźników wydajności przejście od kroku 3 do kroku 5 zajęło średnio 150 ms. Teoretycznie użytkownicy nie mogą przeprowadzać żadnych transakcji w tym okresie migracji trwającym 150 ms. Okazało się, że nie było żadnych transakcji, na które miało to wpływ.

Egzekucja

W Binance opowiadamy się za zasadą „dobrego wykonania zamiast skrupulatnego planowania”. Solidna realizacja jest kluczem do naszego sukcesu, a bezpieczeństwo funduszy jest zawsze naszym najwyższym priorytetem. Przyjęliśmy strategię stopniowej migracji na okres trzech tygodni, aby jak najwcześniej wykryć problemy, co z kolei pomogło zmniejszyć skalę negatywnego wpływu.

Proces pojednania

Uzgadnianie jest niezwykle ważne, jeśli chodzi o wykrywanie w odpowiednim czasie potencjalnych anomalii salda z bezstronnej perspektywy. Możemy przeprowadzić ten proces w czasie zbliżonym do rzeczywistego, aby podjąć szybkie działania, zanim sytuacja się pogorszy. Specjalnie na potrzeby procesu migracji online opracowano dwa typy modułów uzgadniających: w czasie rzeczywistym i pełne.

Czas rzeczywisty

Proces uzgadniania oparty na poziomie transakcji ma na celu wykrywanie wszelkich problemów z funduszami w czasie rzeczywistym.

Pełny

Okresowo możemy przeprowadzić pełne rozliczenie na podstawie migawek zsynchronizowanych z hurtownią danych. Ten proces zapewnia, że ​​wszystkie salda pomiędzy starą księgą a Księgą Binance są takie same.

Załóżmy na przykład, że w starej księdze nadal znajduje się 10 milionów użytkowników. Możemy wykorzystać to pełne uzgodnienie, aby sprawdzić, czy salda i dzienniki sald są takie same pomiędzy starą księgą a księgą Binance.

Zakończenie procesu migracji

W skrócie, misja została zrealizowana poprzez 1) zastosowanie technik replikacji w celu sprawdzenia poprawności nowej księgi Binance Ledger 2) wdrożenie strategii migracji konto po koncie w celu powolnej, bezpiecznej, ale pewnej aktualizacji silnika.

Wierzymy, że powyższy paradygmat migracji online można ponownie wykorzystać w podobnych zadaniach. Jeśli omówione procesy i tematy wzbudziły Twoje zainteresowanie, dlaczego nie rozważyć dołączenia do zespołu? Zawsze szukamy oddanych osób ze świeżym spojrzeniem na nasze codzienne wyzwania w Binance.

Bibliografia

  1. Jak Binance Ledger wspomaga Twoje doświadczenie Binance

  2. Narzędzie do migracji schematów online GitHub dla MySQL

Dalsze czytanie

  • Wykorzystanie MLOps do zbudowania kompleksowego potoku uczenia maszynowego w czasie rzeczywistym | Blog Binance'a

  • Czy Binance to odpowiednie miejsce dla Ciebie? Powody, dla których nie warto dołączać do Binance | Blog Binance'a