PayPal avas JunoDB andmebaasi lähtekoodi

PayPal avaldas JunoDB, mittetäieliku andmebaasi lähtekoodid, mis manipuleerivad võtme-väärtuse formaadis andmeid. Süsteem on algselt projekteeritud kõrge turvalisuse, horisontaalse skaleeritavuse, rikkete kindluse ning võimekuse jaoks töödelda sadu tuhandeid samaaegseid ühendusi ettearvatavate viivitustega. Peaaegu kõik PayPali teenused, alates kasutajate sisselogimisest kuni rahandustehingute töötlemiseni, sõltuvad JunoDB-st. Projekti kood on kirjutatud Go keeles (klienditeeki Java keeles) ja jagatakse Apache 2.0 litsentsi alusel. Edasises arenduses võetakse kogukonna parandusi, täiustusi ja muudatusi arvesse.

JunoDB arhitektuur põhineb koormuse tasakaalustajal, mis võtab vastu päringud kliendirakendustelt ja jagab need edasi vaheserveritele, mis samal ajal pöördudes andmebaasi rühma poole serverite päringu täitmise ajal. Iga vaheserver loob ühenduse kõigi serveritega and redirects requests to the storage server group based on a partitioning index, which is stored in a distributed storage configuration system called etcd.

PayPal avas JunoDB andmebaasi lähtekoodi

Data is partitioned and mapped to storage nodes using hashing, which reduces data movement when nodes in the cluster are added or removed. To ensure fault tolerance, each portion of data is replicated across multiple storage nodes, preserving information in the event of individual server failures. Territorially distributed storages are supported, where groups of nodes are located in different data centers.

PayPal avas JunoDB andmebaasi lähtekoodi

On storage nodes, data is placed in memory or in local storage based on the RocksDB library. For persistent storage, data is stored in an encrypted format (the encryption key can be defined by either the client or set at the proxy level).

PayPal avas JunoDB andmebaasi lähtekoodi

Andmebaasi juurdepääsuks saadetakse rakendustele kliendiraamatukogu, mis pakub API-d Java, Go ja C++ keelte rakendustele. Kliendi osa on maksimaalselt lihtsustatud ning keeruline loogika ja seadistused on võimalusel viidud andmebaasi poolele. Kliendi ja tasakaalustaja või proksi vaheline suhtlemine toimub krüpteeritud suhtluskanali kaudu. Juhtimiseks ja päringute saatmiseks saab kasutada käsurealiidest, mis katab kogu kliendi API võimalused.

Süsteem on projekteeritud töötlema päringuid ettearvatavate madalate viivitustega; näiteks kolmepoolne salvestuskluster ja üks proksi, mis on moodustatud n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G RAM ja 450G SSD-põhine salvestus) keskkondadest, suutis pakkuda fikseeritud viivitusi, mis ei ületanud 2,5 ms 95% juhtudest ja 16 ms 99% juhtudest 200 000 samaaegse TLS-ühenduse ja 15 000 päringu kohta sekundis (3000 samaaegse ühenduse ja 80 000 päringu mahu korral ei ületanud viivitused 6 ms 95% juhtudest ja 15 ms 99% juhtudest). PayPalis teenindavad JunoDB baasil teenused umbes 350 miljardit päringut päevas.

PayPal avas JunoDB andmebaasi lähtekoodi


Allikas: opennet.ru
Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster