Coordinate IM 系统 - 企业即时通讯解决方案
⚡ 高性能 · 安全可靠 · 完全自主可控
🚀 产品简介
Coordinate 是一款从零自主研发的企业级即时通讯系统,采用 Rust 语言构建,具备高性能、高可靠、低资源占用的特性。系统包含服务端、桌面客户端和管理后台三大核心组件,为企业提供一站式通讯解决方案。
核心理念
- 安全优先:服务端统一管控订阅权限,客户端仅保留基础连接权限
- 性能至上:自研 MQTT 广播引擎,毫秒级消息延迟,支持万级并发
- 统一技术栈:前后端均采用 Rust,消除技术栈碎片化
📦 核心组件
| 组件 |
技术栈 |
说明 |
| coordinate-server |
Rust + Axum + PostgreSQL |
HTTP API 服务,处理用户/团队/频道/帖子/文件等核心业务逻辑 |
| coordinate-broadcast |
Rust + MQTT 协议 |
实时消息广播引擎,支持 WebSocket 连接与分布式 pub/sub |
| coordinate-desktop |
Rust + GPUI |
跨平台桌面客户端,Rocket.Chat 风格 UI |
| coordinate-sdk |
Rust |
多语言客户端 SDK,一次开发多端接入 |
| coordinate-connector |
Rust |
MQTT 协议实现模块 |
| coordinate-core |
Rust |
共享类型与模型定义 |
| 管理后台 |
Web 管理界面 |
用户管理、权限配置、系统监控、日志分析 |
✨ 核心特性
1. 🚄 高性能消息分发
- 基于 rumqttd 二次开发的广播组件
- 支持 万级并发连接(rumqttd 官方压测数据:10,000+)
- 消息端到端延迟 < 50ms
- 消息持久化与历史回溯
- 主题格式:
users/{user_id}、channels/{channel_id}、teams/{team_id}
2. 🛡️ 智能安全订阅
- 服务端统一管控订阅权限,权限精细化隔离
- 客户端仅保留 CONNECT / DISCONNECT / PING 权限
- PUBLISH / SUBSCRIBE / UNSUBSCRIBE 由服务端 MQTT 客户端代理
- 支持批量订阅/退订与清空订阅
- 零数据库依赖:广播服务不直连数据库,通过 MQTT 客户端接收指令
3. 💻 卓越桌面体验
- 采用 GPUI 框架开发(Zed 编辑器同款),原生性能
- Rocket.Chat 风格 UI 设计,三栏布局:
- 左侧:工作区/服务器切换栏
- 中侧:频道/讨论组/私聊列表
- 右侧:主聊天区域
- 流畅的滚动体验与响应式界面
- 支持 中英文双语界面(rust-i18n)
- 用户头像支持在线/离线状态指示
4. 💬 完整通讯功能
| 功能 |
描述 |
| 频道 (Channel) |
公开/私有频道,支持成员管理 ✅ |
| 私聊 (DM) |
一对一即时消息 ✅ |
| 消息线程 (Thread) |
消息回复链,支持引用 ✅ |
| 文件传输 |
上传/下载/分享文件 ✅ |
| Markdown |
消息富文本格式支持 ✅ |
| @提及 |
消息中 @用户提醒 ✅ |
| 机器人 (Bot) |
服务端支持管理,客户端接入 ⏳ 规划中 |
5. 🏢 企业级权限体系
- 基于 角色 (Role) 的权限控制模型
- 团队 (Team):工作区级别隔离
- 频道成员精细化管理
🛠 技术架构
flowchart LR
subgraph Desktop [桌面客户端 coordinate-desktop]
D[Rust + GPUI<br/>960x680 双线程]
end
subgraph Server [coordinate-server]
S_HTTP[HTTP :8065<br/>业务逻辑]
S_MQTT[MQTT 客户端<br/>→ broadcast]
end
subgraph Broadcast [coordinate-broadcast]
B_WS[WebSocket :8000]
B_RPC[RPC :8066]
B_RPC ---> B_WS
end
DB[(PostgreSQL<br/>+ Redis)]
D -->|HTTP :8065| S_HTTP
D -->|WS :8000| B_WS
S_MQTT -.->|MQTT| B_RPC
S_HTTP --> DB
关键端口
| 端口 |
服务 |
说明 |
| 8065 |
coordinate-server |
HTTP REST API(桌面客户端调用) |
| 8000 |
coordinate-broadcast |
WebSocket(桌面客户端实时消息) |
| 8066 |
coordinate-broadcast |
MQTT 控制接口(服务端订阅管理) |
| 6379 |
Redis |
缓存与会话存储 |
| 5432 |
PostgreSQL |
持久化数据存储 |
主题订阅格式
# 用户消息
users/{user_id}
# 频道消息
channels/{channel_id}
# 团队消息
teams/{team_id}
📊 数据模型
用户模型
- 用户信息与头像
- 在线状态管理(在线/离线/忙碌/离开/自定义)
- 用户偏好设置 (Preference)
通讯模型
- Team:团队/工作区,顶级组织单元 ✅
- Channel:公开或私有频道 ✅
- Thread:消息线程,消息 Reply 链 ✅
- Post:消息主体 ✅
- Direct Message:一对一私聊 ✅
- FileInfo:文件元数据 ✅
🎯 适用场景
| 场景 |
说明 |
| 🏢 企业内通 |
内部协作、通知公告、文件共享 |
| 👥 团队协作 |
项目沟通、任务协调、知识沉淀 |
| 💬 客服系统 |
客户咨询、工单流转、满意度评价 |
| 📡 物联网 |
设备状态推送、告警通知、远程控制 |
| 🔄 分布式通知 |
系统事件推送、服务间通信 |
🏆 技术优势
| 优势 |
说明 |
| ⚡ Rust 语言 |
内存安全,无 GC 停顿,极致性能 |
| 🔧 自研协议 |
不依赖 Kafka/RabbitMQ,降低运维复杂度 |
| 🔗 统一技术栈 |
前后端同源 Rust,减少技术栈维护成本 |
| 📈 弹性扩展 |
广播服务无状态,支持水平扩容 |
| 🔒 安全架构 |
服务端集中权限管控,安全边界清晰 |
| 💾 低资源占用 |
二进制部署,内存占用 < 100MB |
性能指标
| 指标 |
数值 |
| 单机并发连接 |
10,000+ (rumqttd 官方压测) |
| 消息吞吐量 |
100,000 msg/s |
| 端到端延迟 |
< 50ms |
| 内存占用 |
< 100MB |
| 启动时间 |
< 2s |
🔐 安全特性
- 权限收敛:客户端无 PUBLISH/SUBSCRIBE 权限,由服务端代理
- MQTT 鉴权:内部 MQTT 客户端使用静态密钥
- WebSocket 认证:连接时携带 token 认证
- 数据隔离:Team 级别数据完全隔离
- 无外部依赖:广播服务不直连数据库,缩小攻击面
🔧 快速开始
环境要求
- Rust 1.70+
- PostgreSQL 14+
- Redis 7+
服务端启动
# 1. 启动 Redis
docker run --name redis -d -p 6379:6379 redis
# 2. 启动消息广播服务
cargo run --bin coordinate-broadcast --release -- -c mqtt.toml -v
# 3. 启动 API 服务
cargo run --bin coordinate-server -- serve -c config.toml
# 4. 运行数据库迁移 (如需要)
cd migrations && refinery migrate
桌面客户端
# 编译
cargo build --release
# 运行
cargo run
# 环境变量 (可选)
export COORDINATE_ENDPOINT=http://localhost:8065
export LOCAL_DIR=./data
# 测试模式
RUST_LOG=debug cargo run
API 验证
# 健康检查
curl http://localhost:8065/health
# WebSocket 连接
ws://localhost:8000
📁 项目结构
coordinate/ # IM 服务端
├── coordinate-server/ # API 服务 (Axum)
├── coordinate-broadcast/ # 消息广播 (MQTT + WebSocket)
├── coordinate-desktop/ # 桌面客户端 (Rust + GPUI)
├── coordinate-sdk/ # 客户端 SDK
├── coordinate-connector/ # MQTT 协议实现
├── coordinate-core/ # 共享类型
└── migrations/ # 数据库迁移 (refinery)
coordinate-desktop/ # 桌面端
├── src/ # GPUI 源码
├── locales/ # 国际化资源
└── data/ # 本地数据存储
frontend/ # 管理端前端
├── src/ # 前端源码
└── public/ # 静态资源
🗺️ 发展规划
📮 联系我们
Built with Rust 🦀 | Performance by Design | Security by Default