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

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

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

As alterações no banco de dados podem ser realizadas apenas pelo nó que foi escolhido como líder, mas as conexões de operações de gravação podem ser direcionadas a outros nós do cluster, que retornarão o endereço do líder para repetir a solicitação (na próxima versão, prometem adicionar o encaminhamento automático das solicitações para o líder). O foco principal é na tolerância a falhas, portanto, o SGBD é escalável apenas para operações de leitura, enquanto as operações de gravação são o ponto de estrangulamento. É possível iniciar um cluster rqlite a partir de um único nó, e essa solução pode ser usada para organizar o acesso ao SQLite via HTTP sem fornecer tolerância a falhas.

Os dados do SQLite em cada nó são armazenados não em um arquivo, mas na memória. No nível da camada que implementa o protocolo Raft, é mantido um log de todos os comandos do SQLite que levam a mudanças no banco de dados. Esse log é usado para replicação (replicação no nível da reprodução de solicitações em outros nós), ao iniciar um novo nó ou para recuperação após a perda de conectividade. Para reduzir o tamanho do log, é aplicada a compactação automática, que é iniciada após um número definido de alterações e resulta em um instantâneo, em relação ao qual começa a ser mantido um novo log (o estado do banco de dados na memória é idêntico ao instantâneo + 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 determinar o nó líder do cluster. Também é fornecida uma interface de linha de comando e bibliotecas do cliente para diversas linguagens de programação.
  • 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.

No novo lançamento:

  • Adicionado suporte ao cluster automático do rqlite usando um novo serviço de descoberta de nós, que pode operar em armazenamento distribuído como Consul e etcd. O serviço permite que os nós do rqlite se descubram automaticamente — o administrador apenas precisa iniciar alguns nós em diferentes servidores, especificando um endereço comum para o cluster Consul ou etcd (por exemplo, "example.com:8500"), e os nós serão automaticamente unidos ao cluster. O nó líder atualiza periodicamente seu endereço no armazenamento Consul ou etcd, permitindo a mudança de líder sem a necessidade de reconfigurar os outros nós e a adição de novos nós mesmo após a mudança de líder. O suporte ao antigo serviço de descoberta de nós (Discovery mode), baseado em AWS Lambda, foi descontinuado.
  • Na interface CLI, é permitido especificar vários hosts — se o primeiro nó estiver indisponível, será feita uma tentativa nos próximos hosts.
  • O código para análise de argumentos da linha de comando do rqlited foi reescrito.
  • O uso do pacote protobuf obsoleto foi descontinuado.
  • O armazenamento BoltDB, utilizado na implementação do protocolo Raft, foi substituído por bbolt, um fork do projeto etcd.

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