rqlite:一个基于SQLite构建的分布式数据库

今天给大家介绍一个基于 SQLite 构建的轻量级分布式关系型数据库:rqlite

rqlite 基于 Raft 协议,结合了 SQLite 的简洁性以及高可用分布式系统的稳健性,对开发者友好,操作极其简便,其核心设计理念是以最低的复杂度实现高可靠性。

核心特性

rqlite 提供了以下关键特性:

  • 部署简单:秒级部署,没有任何复杂配置。
  • 开发友好:简单易用的 HTTP API、CLI 以及客户端驱动。
  • 功能强大:基于 SQLite,支持权威检索、JSON 以及各种插件(向量搜索、sqlean)。
  • 大量数据: 支持 GB 级别的数据管理。
  • 高可靠性:通过复制实现容错性和高可用。
  • 动态集群:集成 Kubernetes、Consul、etcd 以及 DNS,实现自动集群管理。
  • 安全性强:支持各种加密和 TLS 安全传输。
  • 灵活一致性:可配置的读一致性和持久性。
  • 可扩展读:通过只读节提高读取性能。
  • 事务支持:HTTP API 支持事务语句。
  • 备份恢复:支持节点热备,压缩备份;自动备份到 AWS S3 以及 MinIO;支持从 SQLite 数据库文件恢复。
  • 监控信息:提供诊断和统计信息,节点状态信息,可读性检查等。

下载安装

rqlite 支持 Linux、macOS 以及 Windows,最简单安装方法的是下载二进制安装文件:

https://github.com/rqlite/rqlite/releases

选择对应操作系统的文件进行解压,然后执行以下命令运行单节点:

bash 复制代码
./rqlited -node-id=1 data/

其中,-node-id 指定了节点编号, data/ 是数据存储目录。服务启动后的监听地址为 http://localhost:4001

接下来使用客户端工具 rqlite shell 连接数据库并执行 SQL 语句:

sql 复制代码
$ rqlite
127.0.0.1:4001> CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)
1 row affected (0.000668 sec)
127.0.0.1:4001> .schema
+-----------------------------------------------------------------------------+
| sql                                                                         |
+-----------------------------------------------------------------------------+
| CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)               |
+-----------------------------------------------------------------------------+
127.0.0.1:4001> INSERT INTO foo(name) VALUES("fiona")
1 row affected
127.0.0.1:4001> SELECT * FROM foo
+----+-------+
| id | name  |
+----+-------+
| 1  | fiona |
+----+-------+

如果想要创建一个分布式 rqlite 集群,可以启动其他节点服务:

bash 复制代码
./rqlited -node-id 2 -http-addr localhost:4003 -raft-addr localhost:4004 -join localhost:4002 data2/

./rqlited -node-id 3 -http-addr localhost:4005 -raft-addr localhost:4006 -join localhost:4002 data3/

我们在同一个主机上启动了另外两个服务,分别使用了不同的节点编号和监听地址,同时加入了第一个节点集群。

然后在客户端中查看集群状态:

bash 复制代码
127.0.0.1:4001> .nodes
1:
  api_addr: http://localhost:4001
  addr: localhost:4002
  voter: true
  reachable: true
  leader: true
  id: 1
2:
  api_addr: http://localhost:4003
  addr: localhost:4004
  voter: true
  reachable: true
  leader: false
  id: 2
3:
  api_addr: http://localhost:4005
  addr: localhost:4006
  voter: true
  reachable: true
  leader: false
  id: 3

其中,第一个节点是 leader。此时,我们获得了一个分布式集群数据库,任何数据操作都会复制到其他节点。

官方网址:https://rqlite.io/

官方文档:https://rqlite.io/docs/

相关推荐
金海境科技7 分钟前
【服务器数据恢复】H3C华三Ceph分布式存储文件丢失数据恢复案例
服务器·经验分享·分布式·ceph
赫尔·普莱蒂科萨·帕塔7 分钟前
Kurator 分布式云原生环境技术深度分析与实践指南
分布式·云原生
xinyu_Jina8 分钟前
局域网文件传输:P2P应用层协议——元数据握手与数据通道的生命周期管理
数据库·asp.net·p2p
永亮同学11 分钟前
【探索实战】从“工具堆叠”到“平台治理”:基于 Kurator 构建统一分布式云原生管理底座的实践与思考
分布式·云原生
一起养小猫13 分钟前
【探索实战】Kurator云边协同实践:基于KubeEdge的分布式物联网平台构建
分布式·物联网·struts
Wang's Blog15 分钟前
RabbitMQ: 基于Docker技术实施集群部署实战指南
分布式·docker·rabbitmq
彬鸿科技25 分钟前
【SDR课堂第42讲】RFSOC开发入门之开发环境搭建(三)
linux·运维·数据库·ubuntu·postgresql·软件无线电·软无
九章-26 分钟前
金仓数据库助力中国石油安全环保技术研究院安全生产智能管控系统全面实现数据库国产化替代
数据库·安全
陌路2027 分钟前
redis 发布订阅功能
数据库·redis·缓存
丁丁丁梦涛29 分钟前
navicat跨服务器连接MySQL数据库
服务器·数据库·mysql