16 个版本

0.1.0-rc.162024年6月26日
0.1.0-rc.112024年4月2日
0.1.0-rc.102024年3月20日
0.1.0-rc.72023年12月26日
0.1.0-alpha30 2022年11月29日

#760数据库接口

Download history 353/week @ 2024-05-03 71/week @ 2024-05-10 2/week @ 2024-05-17 1/week @ 2024-05-24 1/week @ 2024-06-07 134/week @ 2024-06-21 36/week @ 2024-06-28 33/week @ 2024-07-05 30/week @ 2024-07-12 5/week @ 2024-07-19 66/week @ 2024-07-26

74 每月下载量

MIT/Apache

555KB
10K SLoC

优雅、简洁的 Rust 开发框架🛸


Crate Docs Build Status Test Coverage License

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 支持集群的 k8s
  • build-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