Si 您正在寻找分布式 DBMS 使用 SQLite 作为存储引擎,让我告诉你 rqlite 适合你,因为它允许从彼此同步的存储中组织集群的工作。
从 rqlite 特征来看, 突出了安装、实施和维护的简便性 分布式存储 容错,有点类似于 etcd 和 Consul, 但它使用关系数据模型而不是键/值格式。
关于 rqlite
Raft 共识算法用于保持所有节点同步。 Rqlite 使用原始 SQLite 库和 go-sqlite3 驱动程序,除此之外,它还执行一个处理客户端请求的层,在其他节点中自我复制并监控就主节点的选择达成的共识。
对数据库的更改只能由被选为领导者的节点进行,但是有写操作的连接可以被定向到集群中的其他节点,它会返回leader的地址来重复请求(在下一个版本中,他们承诺添加自动转发调用到leader)。
主要关注的是容错, 所以数据库管理系统 仅在读取操作中缩放, 写操作是瓶颈。 可以从单个节点运行 rqlite 集群,这样的解决方案可用于通过 HTTP 提供对 SQLite 的访问,而无需提供容错能力。
SQLite 数据 在每个节点中,它们不是存储在文件中,而是存储在内存中. 在实现 Raft 协议的层级,会记录所有导致数据库更改的 SQLite 命令。
此记录用于复制(在查询重播级别复制到其他节点)、启动新节点时或从连接丢失中恢复。
为了减少记录的大小,使用了自动打包,在指定的更改次数后开始并导致确认快照,新记录开始(内存中的数据库状态与快照+累积更改日志)。
从 rqlite 特性:
- 易于集群部署,无需单独安装 SQLite。
- 能够快速获取复制的 SQL 存储。
- 准备在生产项目中使用。
- HTTP (S) API 的可用性,它允许以批处理模式更新数据并确定集群的领先节点。 还提供了各种编程语言的命令行界面和客户端库。
- 存在定义其他节点的服务,允许您动态创建集群。
- 支持节点间数据交换的加密。
- 能够在阅读时自定义检查数据的相关性和一致性的级别。
- 可选的连接不参与共识确定的只读节点的能力,用于增加集群对读取操作的可扩展性。
- 支持基于在单个请求中组合命令的本机形式的事务(不支持基于 BEGIN、COMMIT、ROLLBACK、SAVEPOINT 和 RELEASE 的事务)。
关于 rqlite 6.0
新版本 引入旨在提高集群可靠性的重大架构更改 通过改进将读写请求定向到正确的集群节点的过程。
现在 Rqlite 节点 可以复用多个逻辑连接 它们之间使用通过 Raft 协议在节点之间建立的 TCP 连接。 如果请求需要Leader节点的权限,但是发送到Secondary节点,Secondary节点可以确定Leader的地址并发送给客户端,不需要进行Raft共识计算。
该更改还删除了用于同步元数据的单独组件,并删除了 Raft 对状态和元数据的单独处理。
辅助节点现在仅在需要时才向领导节点发送请求,当需要找出领导节点的地址时。 API 提供了获取集群中其他节点状态信息的能力。 Sysdump 命令添加到 CLI。
最后 如果您有兴趣了解更多信息 或者查阅安装说明和用户手册,你可以做到 从下面的链接。