PayPal otworzył kod JunoDB DBMS

PayPal otworzył kod źródłowy dla JunoDB, odpornego na błędy systemu DBMS, który manipuluje danymi w formacie klucz-wartość. System został pierwotnie zaprojektowany z myślą o wysokim poziomie bezpieczeństwa, skalowalności poziomej, odporności na awarie i możliwości obsługi setek tysięcy jednoczesnych połączeń z przewidywalnymi opóźnieniami. W PayPal prawie wszystkie usługi, od logowania użytkownika po przetwarzanie transakcji finansowych, są powiązane z JunoDB. Kod projektu jest napisany w Go (biblioteka kliencka Java) i dystrybuowany na licencji Apache 2.0. W dalszym rozwoju, poprawki, ulepszenia i zmiany od społeczności będą akceptowane.

Architektura JunoDB opiera się na wykorzystaniu modułu równoważenia obciążenia, który przyjmuje żądania od aplikacji klienckich i rozdziela je między serwery proxy, które jednocześnie uzyskują dostęp do grupy serwerów pamięci masowej, gdy wysyłane jest żądanie. Każdy serwer proxy nawiązuje jednocześnie połączenia ze wszystkimi serwerami pamięci masowej i przekierowuje żądania do grupy serwerów pamięci masowej na podstawie indeksu partycji przechowywanego w rozproszonym systemie pamięci masowej w konfiguracji etcd.

PayPal otworzył kod JunoDB DBMS

Dane są dzielone na partycje i łączone z węzłami magazynowania przy użyciu funkcji mieszania w celu ograniczenia ruchu danych w miarę wzrostu lub zmniejszania się węzłów w klastrze. Aby zapewnić odporność na awarie, każda porcja danych jest replikowana na kilku węzłach magazynowania, co pozwala na zapisywanie informacji w przypadku awarii poszczególnych serwerów. Obsługiwane jest tworzenie rozproszonych geograficznie magazynów, w których grupy węzłów znajdują się w różnych centrach danych.

PayPal otworzył kod JunoDB DBMS

W węzłach magazynowania dane są umieszczane w pamięci RAM lub w pamięci lokalnej w oparciu o bibliotekę RocksDB. W przypadku trwałego przechowywania dane są przechowywane w postaci zaszyfrowanej (klucz szyfrujący może być określony zarówno przez klienta, jak i ustawiony na poziomie proxy).

PayPal otworzył kod JunoDB DBMS

Aby uzyskać dostęp do bazy danych z aplikacji, dostarczana jest biblioteka klienta, która zapewnia interfejs API dla aplikacji w językach Java, Go i C++. Część kliencka jest maksymalnie uproszczona, a złożona logika i ustawienia, jeśli to możliwe, są przenoszone na bok DBMS. Interakcja między klientem a balancerem lub proxy odbywa się za pośrednictwem szyfrowanego kanału komunikacyjnego. Możesz użyć interfejsu wiersza poleceń do zarządzania i wysyłania żądań, który naśladuje pełną funkcjonalność interfejsu API klienta.

System został zaprojektowany do przetwarzania żądań z przewidywalnymi niskimi opóźnieniami, na przykład klastra trzech węzłów pamięci masowej i jednego serwera proxy, utworzonych ze środowisk n1-highmem-32 (32 procesory Intel Xeon 2.30 GHz, 214 GB pamięci RAM i 450 GB pamięci masowej opartej na dyskach SSD). , był w stanie zapewnić stałe opóźnienia nieprzekraczające 2.5 ms w 95% przypadków i 16 ms w 99% przy przetwarzaniu 200 tys. jednoczesnych połączeń TLS i przepływie 15 tys. na sekundę opóźnienia nie przekraczały 3000 ms w 80% przypadków i 6 ms w 95%). W PayPal usługi oparte na JunoDB obsługują około 15 miliardów żądań dziennie.

PayPal otworzył kod JunoDB DBMS


Źródło: opennet.ru

Dodaj komentarz