Rusqlite 使用示例
这是一个 Rust 语言中使用 SQLite 数据库的基础教程示例。
主要知识点
1. 基本设置
- 使用
rusqlitecrate 提供的Connection、params和Result类型 - 定义了一个
Person结构体,包含 id、name 和可选的 data 字段
2. 数据库连接
- 使用
Connection::open_in_memory()创建内存数据库连接
3. 创建表
- 通过
conn.execute()执行 SQL 语句创建 person 表 - 表结构包含:id (主键)、name (非空文本)、data (二进制数据)
4. 插入数据
- 使用参数化查询 (
?1,?2) 插入数据 - 通过元组传递参数值,避免 SQL 注入
5. 查询数据
- 使用
prepare()准备 SQL 查询语句 - 使用
query_map()将查询结果映射为 Person 对象 - 通过闭包
|row|从每行数据中提取字段值
6. 遍历结果
- 使用 for 循环遍历查询结果
- 打印每个找到的 Person 对象
关键特性
- 类型安全的数据库操作
- 使用 Rust 的
Result类型进行错误处理 - 参数化查询防止 SQL 注入
https://docs.rs/rusqlite/latest/rusqlite
Danube Messaging - 云原生消息平台
Danube 是一个用 Rust 构建的开源分布式消息代理平台,具有轻量级、云原生和成本效益的特点。
核心特性
- 嵌入式 Raft 共识:基于 openraft 实现元数据复制,无需依赖 ETCD 或 ZooKeeper
- 可靠消息传递:结合本地预写日志(WAL)、持久化段存储和元数据驱动恢复
- 低延迟分发:支持本地磁盘、共享文件系统和对象存储
- 基于 Tokio 构建:异步高性能运行时
快速开始方式
1. Docker Compose 集群部署
mkdir danube-docker && cd danube-docker
curl -O [docker-compose.yml]
curl -O [danube_broker.yml]
docker-compose up -d
包含:3个高可用 Broker、Prometheus 监控、danube-cli 工具
2. 单节点本地运行
./danube-broker --single-node --data-dir ~/danube-data
- 无需 Docker 和配置文件
- Broker 运行在 127.0.0.1:6650
- 管理端口 127.0.0.1:50051
- 数据持久化到本地目录
集群特性
- 水平扩展:零停机时间快速添加 Broker
- 智能负载均衡:自动主题分配和重新平衡
- 高可用性:自动领导者选举、故障转移和主题协调
- 无外部依赖:元数据存储完全嵌入式
项目结构
包含多个模块:broker、client、admin、CLI、core、持久化存储、Raft 实现等,最新版本 v0.9.0 进行了持久化和单节点 broker 的重大改进。
https://github.com/danube-messaging/danube
Danube 消息系统的持久化与存储
核心概念
Danube 可靠主题(reliable topics)通过持久化消息,使消费者能够回放历史记录,并确保主题在代理服务器之间移动时不会丢失数据。存储系统基于三个核心思想:
- 最近的写入存储在快速的本地预写日志(WAL)中
- 历史数据通过持久化导出的段(segments)保存
- 恢复和主题迁移依赖于嵌入式 Raft 元数据存储
三种存储模式
1. local(本地模式)
- 所有数据保存在代理服务器的本地磁盘
- 无后台导出,无远程存储
- 适用场景:单节点部署、开发环境、简单部署
2. shared_fs(共享文件系统模式)
- 热写入数据存储在本地 WAL
- 后台导出将封闭段复制到所有代理服务器可见的共享文件系统
- 适用场景:使用 NFS 或共享 POSIX 卷的本地多代理集群
3. object_store(对象存储模式)
- 热写入数据存储在本地 WAL
- 后台导出将封闭段推送到云对象存储(S3、GCS、Azure Blob)
- 适用场景:云原生多代理部署
关键配置项
WAL(预写日志)设置
- 缓存容量、文件同步间隔
- 批处理字节数上限
- 文件轮转阈值(大小和时间)
本地保留策略
- 控制本地 WAL 文件的清理时机
- 基于时间(默认 48 小时)和大小(默认 20GB)的清理策略
- 仅删除本地 WAL 文件,不删除持久化段对象
持久化后端配置
- shared_fs:配置共享段目录
- object_store:配置云存储后端、存储桶、区域等参数
选择建议
| 需求 | 推荐模式 |
|---|---|
| 最简单的单代理部署 | local |
| 多代理 + 共享磁盘 | shared_fs |
| 多代理 + 云原生 | object_store |
https://danube-docs.dev-state.com/concepts/persistence/
--
From 日报小组 Mike
社区学习交流平台订阅:
评论区
写评论还没有评论