PayPal ha aperto il codice del DBMS JunoDB

L'azienda PayPal ha reso disponibili i codici sorgenti del database distribuito JunoDB, che gestisce i dati nel formato chiave-valore. Il sistema è stato progettato fin dall'inizio con un forte focus sulla sicurezza, la scalabilità orizzontale, l'affidabilità e la capacità di gestire centinaia di migliaia di connessioni simultanee con ritardi prevedibili. In PayPal, praticamente tutti i servizi, dall'accesso degli utenti all'elaborazione delle transazioni finanziarie, si basano su JunoDB. Il codice del progetto è scritto in linguaggio Go (la libreria client è in Java) ed è distribuito sotto licenza Apache 2.0. Durante lo sviluppo futuro, saranno accolti correttivi, miglioramenti e modifiche dalla community.

L'architettura di JunoDB si basa sull'utilizzo di un bilanciatore di carico, che accetta richieste dalle applicazioni client e le distribuisce tra i server proxy, che accedono simultaneamente a un gruppo server di archiviazione durante l'esecuzione della richiesta. Ogni server proxy stabilisce connessioni con tutti i server server di archiviazione e reindirizza le richieste al gruppo di server di archiviazione sulla base dell'indice di partizionamento, che è memorizzato in un sistema di archiviazione distribuito chiamato etcd.

PayPal ha aperto il codice del DBMS JunoDB

I dati sono partizionati e associati ai nodi di archiviazione utilizzando l'hashing, il che consente di ridurre il movimento dei dati quando aumentano o diminuiscono i nodi nel cluster. Per garantire l'affidabilità, ogni porzione di dati è replicata su più nodi di archiviazione, il che consente di mantenere le informazioni in caso di guasto di singoli server. È supportata la creazione di archivi distribuiti geograficamente, in cui i gruppi di nodi sono collocati in diversi data center.

PayPal ha aperto il codice del DBMS JunoDB

Sui nodi di archiviazione, i dati vengono memorizzati nella memoria operativa o nello storage locale basato sulla libreria RocksDB. Nel caso di archiviazione permanente, i dati vengono memorizzati in forma crittografata (la chiave di crittografia può essere definita sia dal client sia impostata a livello di proxy).

PayPal ha aperto il codice del DBMS JunoDB

Per accedere al database dalle applicazioni è disponibile una libreria client che offre un'API per applicazioni scritte in Java, Go e C++. La parte client è stata semplificata al massimo, mentre la logica complessa e le configurazioni sono state trasferite, quando possibile, sul lato del DBMS. L'interazione tra client e bilanciatore di carico o proxy avviene tramite un canale di comunicazione crittografato. Per gestire e inviare richieste, è possibile utilizzare l'interfaccia della riga di comando, che riproduce tutte le funzionalità dell'API client.

Il sistema è progettato per elaborare le richieste con latenze prevedibili e basse, ad esempio, un cluster formato da tre nodi di storage e un proxy, configurato utilizzando ambienti n1-highmem-32 (32 CPU Intel Xeon 2.30GHz, 214G di RAM e 450G di storage basato su SSD), è stato in grado di fornire latenze fisse non superiori a 2,5 ms nel 95% dei casi e 16 ms nel 99% durante l'elaborazione di 200.000 connessioni TLS simultanee e un flusso di 15.000 richieste al secondo (con 3.000 connessioni simultanee e un flusso di 80.000 richieste al secondo, le latenze non hanno superato 6 ms nel 95% dei casi e 15 ms nel 99%). In PayPal, i servizi basati su JunoDB gestiscono circa 350 miliardi di richieste al giorno.

PayPal ha aperto il codice del DBMS JunoDB


Fonte: opennet.ru
Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster