16 个版本
0.1.0-rc.16 | 2024年6月26日 |
---|---|
0.1.0-rc.11 | 2024年4月2日 |
0.1.0-rc.10 | 2024年3月20日 |
0.1.0-rc.7 | 2023年12月26日 |
0.1.0-alpha30 |
|
#760 在 数据库接口
74 每月下载量
555KB
10K SLoC
优雅、简洁的 Rust 开发框架🛸
TARDIS([tɑːrdɪs] "时间和空间相对维度") 来自 "神秘博士"。
💖 核心功能
- MySQL、PostgreSQL 关系型数据库客户端
- OpenAPI v3.x 的 Web 服务和 Web 客户端
- Redis 协议的分布式缓存客户端
- AMQP 协议的 RabbitMQ 客户端
- Elasticsearch 的搜索客户端
- SMTP 协议的邮件客户端
- 任意 S3 兼容 API 的对象存储客户端
- 主流加密算法和 SM2/3/4 算法
- 主流中间件的容器化单元测试
- 多环境配置
- 多应用程序聚合
- 配置加密支持
- 国际化和多语言支持
- 常用操作(例如:统一错误处理、加密和解密、常规校验和)
⚙️关键特性
conf-remote
启用统一配置中心crypto
加密、解密和摘要操作crypto-with-sm
使用 SM.x 操作的加密、解密和摘要future
异步操作reldb-core
基于SeaORM的关系型数据库核心操作reldb-postgres
基于Postgres驱动的数据库reldb-mysql
基于MySQL驱动的数据库reldb-sqlite
基于SQLite驱动的数据库reldb
基于Postgres/MySQL/SQLite驱动的数据库web-server
基于Poem的 Web 服务操作web-server-grpc
基于 Poem 的 gRPC Web 服务web-client
Web 客户端操作ws-client
WebSocket 客户端操作cache
缓存操作mq
消息队列操作mail
邮件发送操作os
对象存储操作test
单元测试操作tracing
OpenTelemetry 支持tokio-console
由 tokio-console 支持的终端订阅层tracing-appender
以周期性将日志写入文件。cluster
与 tardis 集群协同工作k8s
支持集群的 k8sbuild-info
获取构建信息,如软件包版本或 git 版本
🚀 快速入门
框架的核心操作都使用 TardisFuns
作为入口点。例如。
TardisFuns::init(relative_path) // Initialize the configuration
TardisFuns::field.x // Some field operations
TardisFuns::reldb().x // Some relational database operations
TardisFuns::web_server().x // Some web service operations
Web 服务示例
依赖配置
[dependencies]
tardis = { version = "^0", features = ["web-server"] }
处理器配置
use tardis::basic::error::TardisError;
use tardis::web::poem_openapi;
use tardis::web::poem_openapi::param::Query;
use tardis::web::web_resp::{TardisApiResult, TardisResp};
pub struct Api;
#[poem_openapi::OpenApi]
impl Api {
#[oai(path = "/hello", method = "get")]
async fn index(&self, name: Query<Option<String>>) -> TardisResult<String> {
match name.0 {
Some(name) => TardisResp::ok(format!("hello, {name}!")),
None => TardisResp::err(TardisError::NotFound("name does not exist".to_string())),
}
}
}
启动类配置
use tardis::basic::result::TardisResult;
use tardis::tokio;
use tardis::TardisFuns;
use crate::processor::Api;
mod processor;
#[tokio::main]
async fn main() -> TardisResult<()> {
// Initial configuration
TardisFuns::init("config").await?;
// Register the processor and start the web service
TardisFuns::web_server().add_module("", Api).start().await;
TardisFuns::web_server().web_server.await;
Ok(())
}
以集群模式运行
当有多个节点时,您可以启用集群模式,尤其是在 k8s 的情况下。
[fw.cluster]
watch_kind = "k8s"
k8s_svc = "my-service"
k8s_ns = "my-namespace"
依赖项
为了使用 gRPC 功能,您需要 Protocol Buffers 编译器 protoc
以及 Protocol Buffers 资源文件。
Ubuntu
sudo apt update && sudo apt upgrade -y
sudo apt install -y protobuf-compiler libprotobuf-dev
Alpine Linux
sudo apk add protoc protobuf-dev
macOS
假设已安装 Homebrew。(如果没有,请参阅 Homebrew 网站上的安装说明。)
brew install protobuf
Windows
- 从 这里 下载最新版本的
protoc-xx.y-win64.zip
- 提取文件
bin\protoc.exe
并将其放置在PATH
中的某个位置 - 通过在命令提示符中打开并输入
protoc --version
来验证安装
更多示例
|-- examples
|-- reldb Relational database usage example
|-- web-basic Web service Usage Example
|-- web-client Web client Usage Example
|-- websocket WebSocket Usage Example
|-- cache Cache Usage Example
|-- mq Message Queue Usage Example
|-- todos A complete project usage example
|-- multi-apps Multi-application aggregation example
|-- pg-graph-search Graph search by Postgresql example
|-- perf-test Performance test case
|-- tracing-otlp Trace and send data by otlp prococol example
常见问题解答
-
在 Windows 下运行时,出现
failed to run custom build command for openssl-sys
错误。解决方案如下(参见 https://github.com/sfackler/rust-openssl/issues/1062 )git clone https://github.com/Microsoft/vcpkg --depth=1 cd vcpkg bootstrap-vcpkg.bat vcpkg.exe integrate install vcpkg.exe install openssl:x64-windows-static set OPENSSL_NO_VENDOR=1 set OPENSSL_DIR=<Current Dir>\packages\openssl_x64-windows-static
-
在 Ubuntu 下运行时(类似于其他发行版),出现
failed to run custom build command for openssl-sys
错误apt install build-essential perl pkg-config libssl-dev
-
为
openssl-sys
的 FreeBSD 部署sudo pkg install cmake ninja zip pkgconf gmake git clone https://github.com/Microsoft/vcpkg --depth=1 cd vcpkg sh bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg install openssl
-
在 Linux 下运行时,出现
failed to run custom build command for opentelemetry-proto
错误apt install protobuf-compiler
-
在 MacOS 下运行时,出现
failed to run custom build command for opentelemetry-proto
错误brew install protobuf
感谢 Jetbrains
提供 开源许可证
依赖项
~13–70MB
~1M SLoC