面向分布式系统关键数据的可靠分布式键值存储,基于 Raft 共识算法与 gRPC 接口。
rqlite/rqlite
基于 SQLite 构建的轻量级、容错分布式关系型数据库,通过 Raft 共识实现多节点复制。
- Star
- 17,808
- Fork
- 820
- 未关闭 Issue
- 66
- 最近提交
- 15小时前
这是什么?
rqlite 是一个以 SQLite 作为存储引擎的分布式关系型数据库。它通过 HTTP API 提供完整的 SQL 能力,并将每次写入复制到集群的多个节点上,单个节点故障时数据库仍可继续服务。项目以单个二进制文件分发,没有外部依赖,适合在本地、Docker 或边缘设备上快速部署。
它可以看作是带关系模型的 etcd 替代品:应用可以使用 SQLite 提供的表、连接查询、全文检索和 JSON 支持,复制与领导者选举则由集群负责。节点可通过 Kubernetes、Docker Compose、Consul、etcd 或 DNS 自动发现彼此。
运维方面,它支持热备份并可自动上传到 AWS S3、MinIO 和 Google Cloud,也支持从 SQLite 文件恢复。项目提供 TLS 加密、认证与授权控制,并可调节读取一致性和写入持久性。客户端可使用 HTTP API、命令行工具、内置网页控制台或各语言客户端库。
核心功能
- 01通过 SQLite 提供完整 SQL 支持,包括全文检索和 JSON 功能
- 02数据在集群中复制,单个节点故障不会导致数据库不可用
- 03单个二进制文件,无外部依赖
- 04支持通过 Kubernetes、Docker Compose、Consul、etcd 或 DNS 自动组建集群
- 05支持热备份,并可自动备份到 S3、MinIO 和 Google Cloud
- 06提供 TLS 加密及认证与授权控制
- 07可调节读取一致性和写入持久性
适用场景
- 存储必须在节点故障时仍可访问的关键应用状态
- 在云端或 Kubernetes 环境中运行高可用的关系型数据服务
- 在资源有限的边缘设备上部署轻量数据库
- 在需要关系查询的场景中替代 etcd 这类键值存储
快速上手
- 1
使用 Docker 运行一个 rqlite 节点
docker run -p 4001:4001 rqlite/rqlite - 2
通过 HTTP API 创建表并插入一行数据
curl -XPOST 'localhost:4001/db/execute?pretty' -H 'Content-Type: application/json' -d '[ "CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)", "INSERT INTO foo(id, name) VALUES(1, \"fiona\")" ]' - 3
查询数据
curl -G 'localhost:4001/db/query?pretty' --data-urlencode 'q=SELECT * FROM foo'
标签
常见问题
- rqlite 是什么?
- 基于 SQLite 构建的轻量级、容错分布式关系型数据库,通过 Raft 共识实现多节点复制。 rqlite 是一个以 SQLite 作为存储引擎的分布式关系型数据库。它通过 HTTP API 提供完整的 SQL 能力,并将每次写入复制到集群的多个节点上,单个节点故障时数据库仍可继续服务。项目以单个二进制文件分发,没有外部依赖,适合在本地、Docker 或边缘设备上快速部署。
- rqlite 可以免费使用吗?用的什么许可证?
- rqlite 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- rqlite 还在维护吗?
- 活跃维护中。rqlite 最近一次提交是在 2026年10月21日。
- rqlite 适合用来做什么?
- 存储必须在节点故障时仍可访问的关键应用状态 在云端或 Kubernetes 环境中运行高可用的关系型数据服务 在资源有限的边缘设备上部署轻量数据库 在需要关系查询的场景中替代 etcd 这类键值存储
- rqlite 怎么安装和运行?
- 使用 Docker 运行一个 rqlite 节点: docker run -p 4001:4001 rqlite/rqlite 通过 HTTP API 创建表并插入一行数据: curl -XPOST 'localhost:4001/db/execute?pretty' -H 'Content-Type: application/json' -d '[ "CREATE TABLE foo (id INTEGER NOT NULL PRIMARY KEY, name TEXT)", "INSERT INTO foo(id, name) VALUES(1, \"fiona\")" ]' 查询数据: curl -G 'localhost:4001/db/query?pretty' --data-urlencode 'q=SELECT * FROM foo'
- 在哪里获取 rqlite?
- 源代码和安装说明在 GitHub 上:https://github.com/rqlite/rqlite
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于强一致键值存储构建的云原生分布式 SQL 数据库,兼容 PostgreSQL 协议。
一个用于数据库结构迁移的 CLI 与 Go 库,支持 SQL 文件和 Go 函数两种迁移方式。
开源分布式 SQL 数据库,兼容 MySQL 8.0,支持 ACID 事务、HTAP 分析与向量搜索。
Go 语言的全功能 ORM 库,可将结构体映射到数据库表,支持关联、钩子、事务和自动迁移。
开源时序数据库,面向实时事件、指标与监控数据,基于 Arrow、DataFusion 和 Parquet 构建。