PayPal abrió el código JunoDB DBMS

PayPal ha abierto el código fuente del DBMS JunoDB tolerante a fallos, que manipula datos en formato clave-valor. Inicialmente, el sistema se diseñó con alta seguridad, escalabilidad horizontal, tolerancia a fallas y la capacidad de manejar cientos de miles de conexiones simultáneas con latencias predecibles en mente. En PayPal, casi todos los servicios, desde los inicios de sesión de los usuarios hasta el procesamiento de transacciones financieras, están vinculados a JunoDB. El código del proyecto está escrito en Go (una biblioteca cliente de Java) y se distribuye bajo la licencia Apache 2.0. Un mayor desarrollo aceptará correcciones, mejoras y cambios de la comunidad.

La arquitectura de JunoDB se basa en el uso de un equilibrador de carga que acepta solicitudes de aplicaciones cliente y las distribuye entre servidores proxy que acceden simultáneamente a un grupo de servidores de almacenamiento cuando se ejecuta la solicitud. Cada servidor proxy establece conexiones con todos los servidores de almacenamiento a la vez y reenvía solicitudes a un grupo de servidores de almacenamiento según el índice de partición, que se almacena en la configuración etcd del sistema de almacenamiento distribuido.

PayPal abrió el código JunoDB DBMS

Los datos se particionan y vinculan a nodos de almacenamiento mediante hash, lo que reduce el movimiento de datos a medida que los nodos del clúster crecen o se reducen. Para garantizar la tolerancia a fallas, cada dato se replica en varios nodos de almacenamiento, lo que le permite guardar información cuando fallan servidores individuales. Se admite la creación de almacenamientos distribuidos geográficamente, en los que se ubican grupos de nodos en diferentes centros de datos.

PayPal abrió el código JunoDB DBMS

En los nodos de almacenamiento de datos, se encuentran en la RAM o en el almacenamiento local basado en la biblioteca RocksDB. Cuando se almacenan permanentemente, los datos se almacenan en forma cifrada (la clave de cifrado puede ser determinada por el cliente o configurada en el nivel de proxy).

PayPal abrió el código JunoDB DBMS

Para acceder a la base de datos desde aplicaciones, se proporciona una biblioteca cliente que proporciona una API para aplicaciones en Java, Go y C++. La parte del cliente se simplifica tanto como sea posible y la lógica y las configuraciones complejas se transfieren al lado del DBMS siempre que sea posible. La interacción entre el cliente y el balanceador o proxy se realiza a través de un canal de comunicación cifrado. Para administrar y enviar solicitudes, puede utilizar la interfaz de línea de comandos, que replica todas las capacidades de la API del cliente.

El sistema está diseñado para procesar solicitudes con latencias bajas predecibles, por ejemplo, un clúster de tres nodos de almacenamiento y un proxy, formado a partir de entornos n1-highmem-32 (32 CPU Intel Xeon de 2.30 GHz, 214 GB de RAM y 450 GB de almacenamiento basado en SSD). , pudo proporcionar retrasos fijos que no superan los 2.5 ms en el 95% de los casos y los 16 ms en el 99% al procesar 200 mil conexiones TLS simultáneas y un flujo de 15 mil solicitudes por segundo (con 3000 conexiones simultáneas y un flujo de 80 mil solicitudes). por segundo, los retrasos no superaban los 6 ms en el 95% de los casos y los 15 ms en el 99%). En PayPal, los servicios basados ​​en JunoDB atienden alrededor de 350 mil millones de solicitudes por día.

PayPal abrió el código JunoDB DBMS


Fuente: opennet.ru

Añadir un comentario