Coordinate IM 系统 - 企业即时通讯解决方案

0 阅读5分钟

Coordinate IM 系统 - 企业即时通讯解决方案

⚡ 高性能 · 安全可靠 · 完全自主可控

🚀 产品简介

Coordinate 是一款从零自主研发的企业级即时通讯系统,采用 Rust 语言构建,具备高性能、高可靠、低资源占用的特性。系统包含服务端、桌面客户端和管理后台三大核心组件,为企业提供一站式通讯解决方案。

核心理念

  • 安全优先:服务端统一管控订阅权限,客户端仅保留基础连接权限
  • 性能至上:自研 MQTT 广播引擎,毫秒级消息延迟,支持万级并发
  • 统一技术栈:前后端均采用 Rust,消除技术栈碎片化

📦 核心组件

组件技术栈说明
coordinate-serverRust + Axum + PostgreSQLHTTP API 服务,处理用户/团队/频道/帖子/文件等核心业务逻辑
coordinate-broadcastRust + MQTT 协议实时消息广播引擎,支持 WebSocket 连接与分布式 pub/sub
coordinate-desktopRust + GPUI跨平台桌面客户端,Rocket.Chat 风格 UI
coordinate-sdkRust多语言客户端 SDK,一次开发多端接入
coordinate-connectorRustMQTT 协议实现模块
coordinate-coreRust共享类型与模型定义
管理后台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

关键端口

端口服务说明
8065coordinate-serverHTTP REST API(桌面客户端调用)
8000coordinate-broadcastWebSocket(桌面客户端实时消息)
8066coordinate-broadcastMQTT 控制接口(服务端订阅管理)
6379Redis缓存与会话存储
5432PostgreSQL持久化数据存储

主题订阅格式

# 用户消息
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

🔐 安全特性

  1. 权限收敛:客户端无 PUBLISH/SUBSCRIBE 权限,由服务端代理
  2. MQTT 鉴权:内部 MQTT 客户端使用静态密钥
  3. WebSocket 认证:连接时携带 token 认证
  4. 数据隔离:Team 级别数据完全隔离
  5. 无外部依赖:广播服务不直连数据库,缩小攻击面

🔧 快速开始

环境要求

  • 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/                         # 静态资源

🗺️ 发展规划

  • 移动端 iOS/Android 原生客户端
  • 端到端加密 (E2EE)
  • 消息已读回执与未读计数
  • 频道 pin 置顶
  • 消息搜索与历史归档
  • 视频/语音通话能力
  • 国际化更多语言
  • 讨论组 (Discussion)
  • 群组 (Group)
  • 机器人 (Bot) 客户端接入

📮 联系我们

  • 📧 QQ:309777427

Built with Rust 🦀 | Performance by Design | Security by Default