PayPal abriu o código JunoDB DBMS

O PayPal abriu o código-fonte do JunoDB, um DBMS tolerante a falhas que manipula dados no formato chave-valor. O sistema foi originalmente projetado com alta segurança, escalabilidade horizontal, tolerância a falhas e capacidade de lidar com centenas de milhares de conexões simultâneas com atrasos previsíveis em mente. No PayPal, quase todos os serviços, desde o login do usuário até o processamento de transações financeiras, estão vinculados ao JunoDB. O código do projeto é escrito em Go (biblioteca cliente Java) e distribuído sob a licença Apache 2.0. No futuro desenvolvimento, serão aceitas correções, melhorias e mudanças da comunidade.

A arquitetura do JunoDB é baseada no uso de um balanceador de carga que aceita solicitações de aplicativos clientes e as distribui entre servidores proxy que acessam simultaneamente um grupo de servidores de armazenamento quando uma solicitação é feita. Cada proxy estabelece conexões com todos os servidores de armazenamento de uma vez e redireciona as solicitações para um grupo de servidores de armazenamento com base no índice de partição armazenado no sistema de armazenamento distribuído da configuração do etcd.

PayPal abriu o código JunoDB DBMS

Os dados são particionados e vinculados a nós de armazenamento usando hash para reduzir a movimentação de dados à medida que os nós crescem ou diminuem em um cluster. Para garantir a tolerância a falhas, cada parte dos dados é replicada em vários nós de armazenamento, o que permite salvar informações quando servidores individuais falham. É suportada a criação de storages distribuídos geograficamente, nos quais grupos de nós estão localizados em diferentes datacenters.

PayPal abriu o código JunoDB DBMS

Nos nós de armazenamento, os dados são colocados na RAM ou no armazenamento local baseado na biblioteca RocksDB. Com o armazenamento persistente, os dados são armazenados de forma criptografada (a chave de criptografia pode ser determinada pelo cliente e definida no nível do proxy).

PayPal abriu o código JunoDB DBMS

Para acessar o banco de dados a partir de aplicativos, é fornecida uma biblioteca cliente que fornece uma API para aplicativos em Java, Go e C++. A parte do cliente é simplificada o máximo possível e lógica e configurações complexas, se possível, são movidas para o lado do DBMS. A interação entre o cliente e o balanceador ou proxy é realizada por meio de um canal de comunicação criptografado. Você pode usar uma interface de linha de comando para gerenciar e enviar solicitações, o que imita toda a funcionalidade da API do cliente.

O sistema foi projetado para processar solicitações com baixa latência previsível, por exemplo, um cluster de três nós de armazenamento e um proxy, formado a partir de ambientes n1-highmem-32 (32 CPUs Intel Xeon 2.30GHz, 214G RAM e 450G de armazenamento baseado em SSD), foi capaz de fornecer latência fixa não superior a 2.5 ms em 95% dos casos e 16 ms em 99% ao processar 200 mil conexões TLS simultâneas e um fluxo de 15 mil solicitações por segundo (com 3000 conexões simultâneas e fluxo de 80 mil solicitações por segundo, os atrasos não ultrapassaram 6 ms em 95% dos casos e 15 ms em 99%). No PayPal, os serviços baseados em JunoDB atendem a cerca de 350 bilhões de solicitações por dia.

PayPal abriu o código JunoDB DBMS


Fonte: opennet.ru

Adicionar um comentário