PayPal ha aperto il codice DBMS di JunoDB

PayPal ha aperto il codice sorgente per JunoDB, un DBMS tollerante ai guasti che manipola i dati in formato chiave-valore. Il sistema è stato originariamente progettato con elevata sicurezza, scalabilità orizzontale, tolleranza ai guasti e capacità di gestire centinaia di migliaia di connessioni simultanee tenendo conto dei ritardi prevedibili. In PayPal, quasi tutti i servizi, dall'accesso dell'utente all'elaborazione delle transazioni finanziarie, sono legati a JunoDB. Il codice del progetto è scritto in Go (libreria client Java) e distribuito con licenza Apache 2.0. In un ulteriore sviluppo, saranno accettate correzioni, miglioramenti e modifiche dalla comunità.

L'architettura di JunoDB si basa sull'utilizzo di un load balancer che accetta richieste dalle applicazioni client e le distribuisce tra server proxy che accedono contemporaneamente a un gruppo di server di archiviazione quando viene effettuata una richiesta. Ogni proxy stabilisce connessioni a tutti i server di archiviazione contemporaneamente e reindirizza le richieste a un gruppo di server di archiviazione in base all'indice di partizione archiviato nel sistema di archiviazione distribuito della configurazione etcd.

PayPal ha aperto il codice DBMS di JunoDB

I dati vengono partizionati e associati ai nodi di archiviazione utilizzando l'hashing per ridurre lo spostamento dei dati man mano che i nodi crescono o si riducono in un cluster. Per garantire la tolleranza agli errori, ogni porzione di dati viene replicata su diversi nodi di archiviazione, il che consente di salvare le informazioni in caso di guasto dei singoli server. È supportata la creazione di archivi distribuiti geograficamente, in cui gruppi di nodi si trovano in diversi data center.

PayPal ha aperto il codice DBMS di JunoDB

Sui nodi di archiviazione, i dati vengono inseriti nella RAM o nell'archiviazione locale in base alla libreria RocksDB. Con l'archiviazione persistente, i dati vengono archiviati in forma crittografata (la chiave di crittografia può essere determinata sia dal client che impostata a livello di proxy).

PayPal ha aperto il codice DBMS di JunoDB

Per accedere al database dalle applicazioni, viene fornita una libreria client che fornisce un'API per le applicazioni in Java, Go e C++. La parte client è semplificata il più possibile e la logica e le impostazioni complesse, se possibile, vengono spostate a lato del DBMS. L'interazione tra il client e il bilanciatore o proxy avviene attraverso un canale di comunicazione crittografato. È possibile utilizzare un'interfaccia della riga di comando per gestire e inviare richieste, che simula la piena funzionalità dell'API client.

Il sistema è progettato per elaborare le richieste con bassa latenza prevedibile, ad esempio un cluster di tre nodi di archiviazione e un proxy, formato da ambienti n1-highmem-32 (32 CPU Intel Xeon da 2.30 GHz, 214 GB di RAM e 450 GB di storage basato su SSD) , è stato in grado di fornire ritardi fissi non superiori a 2.5 ms nel 95% dei casi e 16 ms nel 99% nell'elaborazione di 200mila connessioni TLS simultanee e un flusso di 15mila richieste al secondo (con 3000 connessioni simultanee e un flusso di 80mila richieste al secondo, i ritardi non hanno superato i 6 ms nel 95% dei casi e i 15 ms nel 99%). Su PayPal, i servizi basati su JunoDB servono circa 350 miliardi di richieste al giorno.

PayPal ha aperto il codice DBMS di JunoDB


Fonte: opennet.ru

Aggiungi un commento