PayPal hat den Code der Datenbank JunoDB veröffentlicht.

Das Unternehmen PayPal hat den Quellcode der ausfallsicheren Datenbank JunoDB veröffentlicht, die Daten im Schlüssel-Wert-Format verarbeitet. Das System wurde ursprünglich mit dem Fokus auf hohe Sicherheit, horizontale Skalierbarkeit, Ausfallsicherheit und die Fähigkeit, Hunderttausende gleichzeitige Verbindungen mit vorhersehbaren Latenzen zu verarbeiten, entworfen. Bei PayPal sind praktisch alle Dienste, von der Benutzeranmeldung bis zur Verarbeitung finanzieller Transaktionen, auf JunoDB angewiesen. Der Code des Projekts ist in der Programmiersprache Go geschrieben (Clientbibliothek in Java) und wird unter der Lizenz Apache 2.0 veröffentlicht. Im weiteren Verlauf der Entwicklung werden Korrekturen, Verbesserungen und Änderungen von der Community angenommen.

Die Architektur von JunoDB basiert auf einem Lastenausgleich, der Anfragen von Client-Anwendungen entgegennimmt und sie zwischen Proxy-Servern verteilt, die gleichzeitig auf eine Gruppe Server von Speicherknoten zugreifen, während die Anfrage ausgeführt wird. Jeder Proxy-Server stellt Verbindungen zu allen Servern Speicherknoten her und leitet die Anfragen an die Gruppe von Speicherservern basierend auf dem Partitionierungsindex weiter, der in einem verteilten Konfigurationsspeichersystem namens etcd gespeichert ist.

PayPal hat den Code der Datenbank JunoDB veröffentlicht.

Die Daten werden partitioniert und an Speicherknoten mithilfe von Hashing gebunden, was die Datenbewegung bei der Erweiterung oder Reduzierung von Knoten im Cluster verringert. Um die Ausfallsicherheit zu gewährleisten, wird jede Datenportion auf mehreren Speicherknoten repliziert, was die Information beim Ausfall einzelner Server erhält. Die Erstellung geografisch verteilter Speichersysteme wird unterstützt, in denen Gruppen von Knoten in verschiedenen Rechenzentren untergebracht sind.

PayPal hat den Code der Datenbank JunoDB veröffentlicht.

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

PayPal hat den Code der Datenbank JunoDB veröffentlicht.

Um auf die Datenbank aus Anwendungen zuzugreifen, wird eine Client-Bibliothek bereitgestellt, die eine API für Anwendungen in den Programmiersprachen Java, Go und C++ bietet. Der Client-Bereich ist so einfach wie möglich gehalten, während komplexe Logik und Einstellungen, wo immer es geht, auf die Seite des DBMS ausgelagert werden. Die Interaktion zwischen Client und Load Balancer oder Proxy erfolgt über einen verschlüsselten Kommunikationskanal. Für das Management und das Senden von Anfragen kann eine Kommandozeilenschnittstelle verwendet werden, die alle Funktionen der Client-API nachbildet.

Das System ist für die Verarbeitung von Anfragen mit vorhersehbar niedrigen Latenzen ausgelegt. Zum Beispiel konnte ein Cluster aus drei Speicherknoten und einem Proxy, das aus Umgebungen n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G RAM und 450G SSD-Speicher) gebildet wurde, feste Latenzen von nicht mehr als 2,5 ms in 95% der Fälle und 16 ms in 99% bei der Verarbeitung von 200.000 gleichzeitigen TLS-Verbindungen und einem Durchsatz von 15.000 Anfragen pro Sekunde bereitstellen (bei 3.000 gleichzeitigen Verbindungen und einem Durchsatz von 80.000 Anfragen pro Sekunde übertrafen die Latenzen nicht 6 ms in 95% der Fälle und 15 ms in 99%). Bei PayPal bedienen JunoDB-basierte Dienste etwa 350 Milliarden Anfragen pro Tag.

PayPal hat den Code der Datenbank JunoDB veröffentlicht.


Quelle: opennet.ru
60GB SSD 8Gb DDR4