Flare 是一个高性能的即时通讯框架,基于 Rust 开发,支持多协议接入、分布式部署和全球化服务。
- 运行时: tokio 1.0+ (异步运行时)
- 网络协议:
- WebSocket (tokio-tungstenite 0.26)
- QUIC (quinn 0.11.5)
- gRPC (tonic 0.12)
- 安全性:
- TLS (rustls 0.23.5)
- 证书管理 (rustls-pemfile 2.0)
- 数据处理:
- Protocol Buffers (prost 0.13.5)
- JSON (serde_json 1.0)
- 工具库:
- 日志 (log 0.4, env_logger 0.11)
- 错误处理 (anyhow 1.0, thiserror 2.0)
- 时间处理 (chrono 0.4)
- 并发原语 (async-broadcast 0.7)
- 并发集合 (dashmap 6.1)
-
🚀 高性能设计
- 基于 Rust 1.85+ 开发,零成本抽象
- 异步 I/O,基于 tokio 1.0+ 运行时
- 支持多协议并发处理
-
🌐 多协议支持
- WebSocket:基于 tokio-tungstenite 0.26
- QUIC:基于 quinn 0.11.5,支持 0-RTT
- gRPC:基于 tonic 0.12,支持服务发现
-
🔐 安全性
- TLS 1.3 加密传输 (rustls 0.23.5)
- 支持自定义认证插件
- 数据加密存储
-
🌍 全球化部署
- 多数据中心支持
- 就近接入策略
- 跨区域消息同步
-
🎯 可扩展性
- 插件化架构
- 支持自定义协议
- 灵活的消息处理机制
┌─────────────────┐
│ DNS Router │
└────────┬────────┘
│
┌─────────────────────┬─┴──┬─────────────────────┐
│ │ │ │
┌──────┴──────┐ ┌──────┴────┴─┐ ┌──────┴──────┐
│ DC-A │ │ DC-B │ │ DC-C │
│(Asia) │ │ (America) │ │ (Europe) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
┌────────────┼────────────────────┼────────────────────┐ │
│ │ │ │ │
┌───────┴────────┐ │ ┌──────┴──────┐ ┌──────┴─────┴──┐
│ Load Balancer │ │ │ Service │ │ Storage │
│ - WebSocket │ │ │ Discovery │ │ - Redis │
│ - QUIC │ │ └──────┬──────┘ │ - ScyllaDB │
└───────┬────────┘ │ │ └───────────────┘
│ │ │
┌───────┴────────┐ │ ┌─────┴─────┐
│ Signal Service │◄──┴─────────────┤ Monitor │
└───────┬────────┘ └───────────┘
│
┌───────┴────────┐
│ Push Service │
└────────────────┘
flare/
├── flare-core/ # 核心库
├── flare-im-core/ # 即时通讯核心实现
└── flare-rpc-core/ # RPC 框架实现
- Rust 1.85.0 或更高版本
- OS: Linux, macOS
- 内存: 8GB+
- CPU: 4核+
[dependencies]
flare-core = "0.1.0" # 核心库
flare-im-core = "0.1.0" # IM 功能
flare-rpc-core = "0.1.0" # RPC 功能
# 可选依赖
tokio = { version = "1.0", features = ["full"] }
anyhow = "1.0"
use flare_im_core::server::websocket::WsServer;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let server = WsServer::new()
.with_addr("127.0.0.1:8080")
.with_tls("cert.pem", "key.pem")
.build()?;
server.run().await?;
Ok(())
}
use flare_im_core::client::quic::QuicClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = QuicClient::new("example.com:8443")
.with_token("your-auth-token")
.build()?;
client.connect().await?;
client.send_message("Hello").await?;
Ok(())
}
- 单机并发连接:100w+
- 消息延迟:<50ms
- CPU 使用率:<30%
- 内存占用:<4GB
- OS: Linux, macOS
- Rust: 1.85+
- 内存: 8GB+
- CPU: 4核+
基础库,提供核心功能和工具:
- 配置管理 (serde 1.0)
- 日志系统 (log 0.4, env_logger 0.11)
- 错误处理 (anyhow 1.0, thiserror 2.0)
- 通用工具 (chrono 0.4, uuid 1.0)
即时通讯核心实现:
- WebSocket 支持 (tokio-tungstenite 0.26)
- QUIC 支持 (quinn 0.11.5)
- 消息处理 (async-broadcast 0.7)
- 会话管理 (dashmap 6.1)
RPC 框架实现:
- 服务发现 (consul/etcd)
- 负载均衡 (tower 0.5)
- 服务注册 (tonic 0.12)
- 拦截器 (tower 0.5)
- 协议生成 (prost 0.13.5, prost-build 0.13.5)
- Rust: 1.85.0+
- 主要依赖版本:
- tokio: 1.0+
- tonic: 0.12
- quinn: 0.11.5
- tokio-tungstenite: 0.26
- rustls: 0.23.5
- Fork 项目
- 创建特性分支
- 提交变更
- 推送到分支
- 创建 Pull Request
本项目采用 MIT 协议,详见 LICENSE 文件。
- Issues: GitHub Issues
- 邮箱: [email protected]
- 讨论组: GitHub Discussions
感谢以下开源项目: