Το PayPal άνοιξε τον κωδικό JunoDB DBMS

Το PayPal άνοιξε τον πηγαίο κώδικα για το JunoDB, ένα DBMS ανεκτικό σε σφάλματα που χειρίζεται δεδομένα σε μορφή κλειδιού-τιμής. Το σύστημα σχεδιάστηκε αρχικά με υψηλή ασφάλεια, οριζόντια επεκτασιμότητα, ανοχή σφαλμάτων και δυνατότητα χειρισμού εκατοντάδων χιλιάδων ταυτόχρονων συνδέσεων έχοντας κατά νου προβλέψιμες καθυστερήσεις. Στο PayPal, σχεδόν όλες οι υπηρεσίες, από τη σύνδεση χρήστη έως την επεξεργασία οικονομικών συναλλαγών, συνδέονται με το JunoDB. Ο κώδικας του έργου είναι γραμμένος στο Go (βιβλιοθήκη πελάτη Java) και διανέμεται με την άδεια Apache 2.0. Σε περαιτέρω ανάπτυξη, θα γίνουν δεκτές διορθώσεις, βελτιώσεις και αλλαγές από την κοινότητα.

Η αρχιτεκτονική JunoDB βασίζεται στη χρήση ενός εξισορροπητή φορτίου που δέχεται αιτήματα από εφαρμογές πελάτη και τα διανέμει μεταξύ διακομιστών μεσολάβησης που έχουν πρόσβαση ταυτόχρονα σε μια ομάδα διακομιστών αποθήκευσης όταν υποβάλλεται ένα αίτημα. Κάθε διακομιστής μεσολάβησης δημιουργεί συνδέσεις με όλους τους διακομιστές αποθήκευσης ταυτόχρονα και ανακατευθύνει αιτήματα σε μια ομάδα διακομιστών αποθήκευσης με βάση το ευρετήριο διαμερισμάτων που είναι αποθηκευμένο στο κατανεμημένο σύστημα αποθήκευσης της διαμόρφωσης etcd.

Το PayPal άνοιξε τον κωδικό JunoDB DBMS

Τα δεδομένα διαμερίζονται και συνδέονται με κόμβους αποθήκευσης χρησιμοποιώντας κατακερματισμό για τη μείωση της κίνησης δεδομένων καθώς οι κόμβοι μεγαλώνουν ή συρρικνώνονται σε ένα σύμπλεγμα. Για να διασφαλιστεί η ανοχή σφαλμάτων, κάθε τμήμα δεδομένων αναπαράγεται σε πολλούς κόμβους αποθήκευσης, γεγονός που σας επιτρέπει να αποθηκεύετε πληροφορίες όταν αποτυγχάνουν μεμονωμένοι διακομιστές. Υποστηρίζεται η δημιουργία γεωγραφικά κατανεμημένων αποθηκευτικών χώρων, στις οποίες ομάδες κόμβων βρίσκονται σε διαφορετικά κέντρα δεδομένων.

Το PayPal άνοιξε τον κωδικό JunoDB DBMS

Σε κόμβους αποθήκευσης, τα δεδομένα τοποθετούνται στη μνήμη RAM ή σε τοπική αποθήκευση με βάση τη βιβλιοθήκη RocksDB. Με τη μόνιμη αποθήκευση, τα δεδομένα αποθηκεύονται σε κρυπτογραφημένη μορφή (το κλειδί κρυπτογράφησης μπορεί να προσδιοριστεί και από τον πελάτη και να οριστεί σε επίπεδο διακομιστή μεσολάβησης).

Το PayPal άνοιξε τον κωδικό JunoDB DBMS

Για πρόσβαση στη βάση δεδομένων από εφαρμογές, παρέχεται μια βιβλιοθήκη πελάτη που παρέχει ένα API για εφαρμογές σε Java, Go και C++. Το τμήμα πελάτη απλοποιείται όσο το δυνατόν περισσότερο και η πολύπλοκη λογική και ρυθμίσεις, αν είναι δυνατόν, μετακινούνται στο πλάι του DBMS. Η αλληλεπίδραση μεταξύ του πελάτη και του εξισορροπητή ή του διακομιστή μεσολάβησης πραγματοποιείται μέσω ενός κρυπτογραφημένου καναλιού επικοινωνίας. Μπορείτε να χρησιμοποιήσετε μια διεπαφή γραμμής εντολών για τη διαχείριση και την αποστολή αιτημάτων, η οποία μιμείται την πλήρη λειτουργικότητα του API πελάτη.

Το σύστημα έχει σχεδιαστεί για να επεξεργάζεται αιτήματα με προβλέψιμο χαμηλό λανθάνοντα χρόνο, για παράδειγμα, ένα σύμπλεγμα τριών κόμβων αποθήκευσης και ενός διακομιστή μεσολάβησης, που σχηματίζεται από περιβάλλοντα n1-highmem-32 (32 επεξεργαστές Intel Xeon 2.30 GHz, μνήμη RAM 214 G και αποθήκευση που βασίζεται σε 450 G SSD) , ήταν σε θέση να παρέχει σταθερές καθυστερήσεις που δεν υπερβαίνουν τα 2.5 ms στο 95% των περιπτώσεων και τα 16 ms στο 99% κατά την επεξεργασία 200 χιλιάδων ταυτόχρονων συνδέσεων TLS και ροής 15 χιλιάδων αιτημάτων ανά δευτερόλεπτο (με 3000 ταυτόχρονες συνδέσεις και ροή 80 χιλιάδων αιτημάτων ανά δευτερόλεπτο, οι καθυστερήσεις δεν ξεπερνούσαν τα 6 ms στο 95% των περιπτώσεων και τα 15 ms στο 99%). Στο PayPal, οι υπηρεσίες που βασίζονται στο JunoDB εξυπηρετούν περίπου 350 δισεκατομμύρια αιτήματα την ημέρα.

Το PayPal άνοιξε τον κωδικό JunoDB DBMS


Πηγή: opennet.ru

Προσθέστε ένα σχόλιο