Repolode
rqlite

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. 1

    使用 Docker 运行一个 rqlite 节点

    docker run -p 4001:4001 rqlite/rqlite
  2. 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. 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 数据每日更新。

相关项目