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

打印 上一主题 下一主题

主题 1646|帖子 1646|积分 4938

今天给大家介绍一个基于 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
选择对应操作系统的文件进行解压,然后执行以下命令运行单节点:
  1. ./rqlited -node-id=1 data/
复制代码
其中,-node-id 指定了节点编号, data/ 是数据存储目录。服务启动后的监听地点为 http://localhost:4001。
接下来利用客户端工具 rqlite shell 毗连数据库并执行 SQL 语句:
  1. $ rqlite
  2. 127.0.0.1:4001>CREATETABLE foo (id INTEGERNOTNULLPRIMARYKEY, name TEXT)
  3. 1row affected (0.000668 sec)
  4. 127.0.0.1:4001>.schema
  5. +-----------------------------------------------------------------------------+
  6. |sql                                                                         |
  7. +-----------------------------------------------------------------------------+
  8. |CREATETABLE foo (id INTEGERNOTNULLPRIMARYKEY, name TEXT)               |
  9. +-----------------------------------------------------------------------------+
  10. 127.0.0.1:4001>INSERTINTO foo(name)VALUES("fiona")
  11. 1row affected
  12. 127.0.0.1:4001>SELECT*FROM foo
  13. +----+-------+
  14. | id | name  |
  15. +----+-------+
  16. |1| fiona |
  17. +----+-------+
复制代码
如果想要创建一个分布式 rqlite 集群,可以启动其他节点服务:
  1. ./rqlited -node-id 2 -http-addr localhost:4003 -raft-addr localhost:4004 -join localhost:4002 data2/
  2. ./rqlited -node-id 3 -http-addr localhost:4005 -raft-addr localhost:4006 -join localhost:4002 data3/
复制代码
我们在同一个主机上启动了另外两个服务,分别利用了差别的节点编号和监听地点,同时加入了第一个节点集群。
然后在客户端中查看集群状态:
  1. 127.0.0.1:4001> .nodes
  2. 1:
  3.   api_addr: http://localhost:4001
  4.   addr: localhost:4002
  5.   voter: true
  6.   reachable: true
  7.   leader: true
  8.   id: 1
  9. 2:
  10.   api_addr: http://localhost:4003
  11.   addr: localhost:4004
  12.   voter: true
  13.   reachable: true
  14.   leader: false
  15.   id: 2
  16. 3:
  17.   api_addr: http://localhost:4005
  18.   addr: localhost:4006
  19.   voter: true
  20.   reachable: true
  21.   leader: false
  22.   id: 3
复制代码
其中,第一个节点是 leader。此时,我们获得了一个分布式集群数据库,任何数据操作都会复制到其他节点。
官方网址:https://rqlite.io/
官方文档:https://rqlite.io/docs/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表