Lançamento do rqlite 6.0, um SGBD distribuído e tolerante a falhas baseado em SQLite.

Foi lançado o rqlite 6.0, um sistema de banco de dados distribuído que utiliza o SQLite como motor de armazenamento e permite organizar o funcionamento de um cluster de armazenamentos sincronizados entre si. Entre as características do rqlite, destaca-se a simplicidade na instalação, implantação e manutenção de um armazenamento distribuído e tolerante a falhas, semelhante ao etcd e ao Consul, mas que utiliza um modelo relacional para trabalhar com dados em vez do formato chave/valor. O código do projeto é escrito na linguagem Go e é distribuído sob a licença MIT.

Para manter todos os nós em um estado sincronizado, é utilizado o algoritmo de consenso Raft. O rqlite utiliza a biblioteca original do SQLite e o driver padrão go-sqlite3, sobre os quais é executada uma camada que processa as solicitações dos clientes, realizando a replicação para outros nós e monitorando o alcance de consenso para a seleção do nó líder.

As mudanças no banco de dados podem ser feitas apenas pelo nó que é eleito como líder, mas conexões com operações de gravação podem ser direcionadas a outros nós do cluster, que retornarão o endereço do líder para repetição da solicitação (na próxima versão, promete-se adicionar o redirecionamento automático para o líder). O foco principal está na tolerância a falhas, portanto, o SGBD é escalável somente para operações de leitura, enquanto as operações de gravação são o gargalo. É possível iniciar um cluster rqlite de um único nó, e essa solução pode ser usada para organizar o acesso ao SQLite via HTTP sem oferecer tolerância a falhas.

Os dados do SQLite em cada nó são armazenados na memória e não em um arquivo. No nível da camada de implementação do protocolo Raft, é mantido um log de todos os comandos do SQLite que levam a alterações no banco de dados. Esse log é usado na replicação (replicação em nível de reprodução de solicitações em outros nós), no início de um novo nó ou na recuperação após a perda de conectividade. Para reduzir o tamanho do log, uma compactação automática é aplicada, que é iniciada após um número definido de alterações e resulta na gravação em disco de um snapshot, em relação ao qual um novo log começa a ser mantido (o estado do banco de dados na memória é idêntico ao snapshot + o log de alterações acumuladas).

Recursos do rqlite:

  • Facilidade de implantação do cluster, sem a necessidade de instalação separada do SQLite.
  • A capacidade de obter rapidamente um repositório SQL replicado.
  • Pronto para uso em projetos de produção.
  • Disponibilidade de uma API HTTP(S) que permite atualizar dados em modo batch e identificar o nó líder do cluster. Também é fornecida uma interface de linha de comando e a possibilidade de usar várias bibliotecas de clientes criadas para SQLite.
  • Disponibilidade de um serviço para descoberta de nós, permitindo a criação dinâmica de clusters.
  • Suporte à criptografia da troca de dados entre nós.
  • Possibilidade de configurar o nível de verificação de atualidade e consistência dos dados na leitura.
  • Opção de conexão de nós em modo somente leitura, que não participam da determinação do consenso e são utilizados para aumentar a escalabilidade do cluster em operações de leitura.
  • Suporte à forma própria de transações com base na agregação de comandos em uma única solicitação (transações baseadas em BEGIN, COMMIT, ROLLBACK, SAVEPOINT e RELEASE não são suportadas).
  • Suporte para criação de backups quentes.

A nova versão traz alterações arquitetônicas significativas voltadas para aumentar a confiabilidade do cluster, melhorando o processo de direcionamento de solicitações de leitura e gravação para os nós corretos do cluster. Os nós do rqlite agora podem multiplexar várias conexões lógicas entre si, utilizando conexões TCP estabelecidas entre os nós pelo protocolo Raft. Se uma solicitação requer privilégios do nó líder, mas é enviada para um nó secundário, o nó secundário pode determinar o endereço do líder e transmiti-lo ao cliente, sem a necessidade de realizar cálculos de consenso pelo protocolo Raft.

A mudança também eliminou a necessidade de um componente separado para sincronização de metadados e removeu o processamento separado do estado Raft e dos metadados. Os nós secundários agora direcionam solicitações ao nó líder apenas quando necessário, para determinar o endereço do nó líder. A API fornece a capacidade de obter informações sobre o estado de outros nós no cluster. A interface de linha de comando adicionou o comando “.sysdump”.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster