< 返回版块

Mike Tang 发表于 2026-03-27 14:33

Rusqlite 使用示例

这是一个 Rust 语言中使用 SQLite 数据库的基础教程示例。

主要知识点

1. 基本设置

  • 使用 rusqlite crate 提供的 ConnectionparamsResult 类型
  • 定义了一个 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

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页