PayPal hat den JunoDB-DBMS-Code geöffnet

PayPal hat den Quellcode für JunoDB geöffnet, ein fehlertolerantes DBMS, das Daten im Schlüsselwertformat manipuliert. Das System wurde ursprünglich mit Blick auf hohe Sicherheit, horizontale Skalierbarkeit, Fehlertoleranz und die Fähigkeit entwickelt, Hunderttausende gleichzeitiger Verbindungen unter Berücksichtigung vorhersehbarer Verzögerungen zu verarbeiten. Bei PayPal sind fast alle Dienste, von der Benutzeranmeldung bis zur Abwicklung von Finanztransaktionen, an JunoDB gebunden. Der Projektcode ist in Go (Java-Client-Bibliothek) geschrieben und wird unter der Apache 2.0-Lizenz vertrieben. Bei der weiteren Entwicklung werden Korrekturen, Verbesserungen und Änderungen aus der Community übernommen.

Die JunoDB-Architektur basiert auf der Verwendung eines Load Balancers, der Anfragen von Clientanwendungen entgegennimmt und sie auf Proxyserver verteilt, die bei einer Anfrage gleichzeitig auf eine Gruppe von Speicherservern zugreifen. Jeder Proxy stellt gleichzeitig Verbindungen zu allen Speicherservern her und leitet Anforderungen basierend auf dem im verteilten Speichersystem der etcd-Konfiguration gespeicherten Partitionsindex an eine Gruppe von Speicherservern weiter.

PayPal hat den JunoDB-DBMS-Code geöffnet

Daten werden partitioniert und mithilfe von Hashing an Speicherknoten gebunden, um die Datenbewegung zu reduzieren, wenn Knoten in einem Cluster wachsen oder schrumpfen. Um Fehlertoleranz zu gewährleisten, wird jeder Teil der Daten auf mehreren Speicherknoten repliziert, sodass Sie Informationen speichern können, wenn einzelne Server ausfallen. Unterstützt wird die Erstellung geografisch verteilter Speicher, bei denen sich Gruppen von Knoten in verschiedenen Rechenzentren befinden.

PayPal hat den JunoDB-DBMS-Code geöffnet

Auf Speicherknoten werden Daten im RAM oder im lokalen Speicher basierend auf der RocksDB-Bibliothek abgelegt. Bei der dauerhaften Speicherung werden die Daten in verschlüsselter Form gespeichert (der Verschlüsselungsschlüssel kann sowohl vom Client bestimmt als auch auf Proxy-Ebene festgelegt werden).

PayPal hat den JunoDB-DBMS-Code geöffnet

Für den Zugriff auf die Datenbank aus Anwendungen wird eine Client-Bibliothek bereitgestellt, die eine API für Anwendungen in Java, Go und C++ bereitstellt. Der Client-Teil wird so weit wie möglich vereinfacht und komplexe Logik und Einstellungen werden, wenn möglich, auf die Seite des DBMS verlagert. Die Interaktion zwischen dem Client und dem Balancer oder Proxy erfolgt über einen verschlüsselten Kommunikationskanal. Sie können eine Befehlszeilenschnittstelle zum Verwalten und Senden von Anforderungen verwenden, die die volle Funktionalität der Client-API nachahmt.

Das System ist darauf ausgelegt, Anfragen mit vorhersehbar geringer Latenz zu verarbeiten, beispielsweise ein Cluster aus drei Speicherknoten und einem Proxy, gebildet aus n1-highmem-32-Umgebungen (32 Intel Xeon 2.30-GHz-CPUs, 214 GB RAM und 450 GB SSD-basierter Speicher). konnte bei der Verarbeitung von 2.5 gleichzeitigen TLS-Verbindungen und einem Fluss von 95 Anfragen pro Sekunde (bei 16 gleichzeitigen Verbindungen und einem Fluss von 99 Anfragen) feste Verzögerungen von nicht mehr als 200 ms in 15 % der Fälle und 3000 ms in 80 % bereitstellen pro Sekunde betrugen die Verzögerungen in 6 % der Fälle nicht mehr als 95 ms und in 15 % 99 ms. Bei PayPal bedienen JunoDB-basierte Dienste etwa 350 Milliarden Anfragen pro Tag.

PayPal hat den JunoDB-DBMS-Code geöffnet


Source: opennet.ru

Kommentar hinzufügen