# WuKongIM **Repository Path**: oywb33/WuKongIM ## Basic Information - **Project Name**: WuKongIM - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-17 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

WuKongIM Logo

WuKongIM

面向实时消息场景的高性能分布式通信基础设施。

在同一个频道模型核心上构建聊天、通知、客服、IoT、直播互动和 AI 消息能力。

快速开始 · 文档 · GitHub

English · 官网 · 版本发布 · 问题反馈

v3 beta Go 1.25.11 GitHub stars Apache 2.0

消息流经 WuKongIM 分布式集群

从单节点集群到分布式部署,始终使用同一套消息核心。

> [!NOTE] > WuKongIM v3 当前处于 Beta 阶段。API、配置和持久化格式在正式版前仍可能调整;生产使用前请按实际负载完成验证。 ## 为什么选择 WuKongIM? WuKongIM 是基于频道模型的通信服务。客户端向个人、群组或自定义频道发布有序消息,WuKongIM 负责持久化、复制、同步、在线状态和在线投递。
🧭 统一集群模型
单节点与多节点部署共用 Controller、Slot、Channel、路由和存储路径。
💾 内置核心存储
内置基于 Pebble 的消息、元数据和 Raft 存储,不依赖外部数据库、缓存或消息队列。
⚡ 可预期的消息语义
支持频道内有序、幂等、明确提交边界、离线同步和多设备会话。
🔭 面向真实运维
提供就绪检查、指标、追踪、诊断、压力视图、Manager 和专用运维工具。
### 适用场景 | 💬 消息产品 | 📣 实时互动 | 🔌 通信基础设施 | | --- | --- | --- | | 即时通讯、群聊、实时社区 | 应用通知、客服、直播互动 | IoT、音视频信令、消息中间件 | | 多设备会话与离线同步 | AI 助手和生成式消息工作流 | 自定义频道模型和插件集成 | ## 快速开始 ### 从源码启动单节点集群 环境要求:Git、Go `1.25.11`。 ```bash git clone https://github.com/WuKongIM/WuKongIM.git cd WuKongIM cp wukongim.toml.example wukongim.toml GOWORK=off go run ./cmd/wukongim -config ./wukongim.toml ``` 在另一个终端检查就绪状态: ```bash curl --fail http://127.0.0.1:5001/readyz ``` 该示例在一个节点上启动完整集群路径,并内嵌两个浏览器应用: | 打开 | 地址 | | --- | --- | | Chat Demo | | | Manager | — `admin` / `a1234567` | | API 与指标 | `http://127.0.0.1:5001` | 打开 Chat Demo,输入一个唯一测试 UID 即可开始发送消息,无需单独启动前端进程。 ### 体验三节点集群 环境要求:安装带 Compose 插件的 Docker。 ```bash docker compose up -d --build curl --retry 30 --retry-delay 2 --retry-all-errors --fail \ http://127.0.0.1:15001/readyz ``` 开发环境会启动三个 WuKongIM 节点、Prometheus 和 Grafana。打开 [Manager](http://127.0.0.1:18080) 或 [Chat Demo](http://127.0.0.1:15001/demo/),体验结束后执行 `docker compose down`。 > [!CAUTION] > Compose 环境暴露了开发凭据和本地 Benchmark 接口,请勿将这些默认设置用于生产。 ## 实际运行效果 ### 运维集群

WuKongIM v3 Manager 展示健康的单节点集群

v3 Manager 将集群健康、节点生命周期、Slot、Channel、诊断、备份和运行时压力收敛到同一个运维 Cockpit。

### 实时收发消息

WuKongIM 内嵌 Chat Demo 实时收发消息

内嵌 Chat Demo 使用与客户端集成相同的 API、Gateway、频道有序写入、持久化与投递路径。

## 架构 ```mermaid flowchart TB Clients["客户端 SDK"] --> Access Services["业务服务"] --> Access Operators["运维人员"] --> Manager subgraph Node["WuKongIM 节点"] Access["Gateway · HTTP API"] Manager["Manager · 运维 API"] Core["应用核心
用例 · 节点内运行时 · 基础设施适配"] Cluster["分布式运行时
Controller · Slot · Channel"] Storage["节点本地持久化
元数据 · 消息 · Raft 日志"] Observe["指标 · 诊断 · 追踪 · 运行时压力"] Access --> Core Manager --> Core Core --> Cluster Cluster --> Storage Access -.-> Observe Core -.-> Observe Cluster -.-> Observe end ``` - **Controller** 维护权威的成员关系、节点健康、物理哈希槽表、逻辑 Slot 放置和运维任务。 - **Slot** Raft Group 对用户、频道、成员关系、会话、插件绑定和 Channel 运行时元数据进行分片。稳定路由默认先使用 256 个物理哈希槽,再把这些 fence 映射到逻辑 Slot Group。 - **Channel** 维护有序消息日志、副本、提交进度、保留边界和运行时生命周期。 一个节点的部署也是**单节点集群**,不存在绕开集群语义的独立单机路径。深入设计请阅读[服务端架构指南](https://docs.githubim.com/zh/server/architecture)。 ### 消息生命周期 ```mermaid sequenceDiagram participant Client as 客户端 participant Access as Gateway / HTTP API participant Core as 消息用例 participant Channel as Channel 权威节点 participant Replicas as Channel 副本 participant Owners as 接收者 Owner 节点 Client->>Access: SEND / POST 消息 Access->>Core: 认证、鉴权、标准化 Core->>Channel: 有序追加 Channel->>Replicas: 追加并复制 Replicas-->>Channel: 推进提交进度 Channel-->>Core: 已提交结果 Core-->>Client: SENDACK / HTTP 响应 Channel-->>Owners: 有界的提交后 Fan-out Owners-->>Client: 在线投递或后续离线同步 ``` ## 核心能力 | 领域 | 内置能力 | | --- | --- | | 客户端接入 | TCP 上的 WKProto、WKProto/JSON-RPC WebSocket 多路复用、可插拔 Listener、有界异步分发 | | 消息 | 个人/群组/自定义频道、有序追加、幂等、自定义 Payload、命令消息、流式事件 | | 频道策略 | 订阅者、黑名单、白名单、封禁/解散、陌生人策略、系统用户、大群感知访问 | | 用户状态 | 分布式 Presence、多设备会话、在线状态、最近会话、已读游标、未读状态 | | 投递 | Owner 节点路由、`RECVACK` 跟踪、有界重试、接收者分区、提交后尽力 Fan-out | | 扩展能力 | HTTP Webhook,以及支持生命周期、消息 Hook 和 Host RPC 的节点内 PDK 兼容插件 | ## 可验证的性能 WuKongIM 不提供脱离上下文的“最大 QPS”数字。硬件、存储、频道模型、副本数、在线 Fan-out 和延迟目标都会改变结果。 - 使用 [`wkbench`](./cmd/wkbench/README.md) 搜索稳定入口吞吐、压测热点频道并观察尾延迟。 - 按照[性能排查手册](./docs/development/PERF_TRIAGE.md)一致地采集指标和 Profile。 - 查看仓库中的[性能报告](./docs/superpowers/reports/),并复现最接近实际负载的场景。 ## SDK | 平台 | 仓库 | | --- | --- | | Android | [WuKongIMAndroidSDK](https://github.com/WuKongIM/WuKongIMAndroidSDK) | | iOS | [WuKongIMiOSSDK](https://github.com/WuKongIM/WuKongIMiOSSDK) | | JavaScript / Web | [WuKongIMJSSDK](https://github.com/WuKongIM/WuKongIMJSSDK) | | Flutter | [WuKongIMFlutterSDK](https://github.com/WuKongIM/WuKongIMFlutterSDK) | | UniApp | [WuKongIMUniappSDK](https://github.com/WuKongIM/WuKongIMUniappSDK) | | HarmonyOS | [WuKongIMHarmonyOSSDK](https://github.com/WuKongIM/WuKongIMHarmonyOSSDK) | 请通过 [SDK 概览](https://docs.githubim.com/zh/sdk/overview)选择合适的集成方式。 ## 运维工具箱 | 工具 | 用途 | | --- | --- | | Manager | 用于集群状态、连接、消息、插件、迁移、诊断、备份和指标的浏览器运维 Cockpit | | [`wkcli`](./cmd/wkcli/README.md) | 提供命令行 Context、节点操作、运行时 `top`、模拟和轻量发送检查 | | [`wkbench`](./cmd/wkbench/README.md) | 提供黑盒负载验证、容量搜索、开发模拟和报告 | | [`wkdb`](./cmd/wkdb/README.md) | 提供节点本地离线检查,以及显式导出、导入和 Diff 流程 | | Prometheus 与 Grafana | 覆盖 Gateway、集群、存储、投递、Transport 和进程压力的可观测性 | 配置以 TOML 为主,`WK_` 环境变量覆盖文件值。请从 [`wukongim.toml.example`](./wukongim.toml.example)开始。 ## 生产使用前 - 替换所有示例账号、JWT Secret、Join Token 和内部 Capability。 - 为客户端与管理流量配置合适的 TLS 和网络访问策略。 - 将节点数据放在独立持久化存储上,并定义容量与数据保留边界。 - 在依赖恢复能力前完成[备份与恢复](./docs/development/BACKUP_AND_RESTORE.md)演练。 - 使用实际负载验证预期流量、大群、故障转移和尾延迟。 - 仅向可信网络开放 Manager、指标、诊断、Debug 和 Benchmark 接口。 ## 开发 仓库使用 Go `1.25.11`,Manager 使用 Bun `1.3.11`。 ```bash GOWORK=off go build ./cmd/wukongim ./cmd/wkcli ./cmd/wkbench ./cmd/wkdb GOWORK=off go test ./cmd/... ./internal/... ./pkg/... ./scripts/... ./docker/... -count=1 ``` 仓库约定请阅读 [`AGENTS.md`](./AGENTS.md),验证矩阵请阅读 [CI](./docs/development/CI.md)。 ## 社区 - 官网: - 文档: - 问题反馈: - 版本发布: - 微信:`wukongimgo`,备注加入 WuKongIM 技术交流群。 ## License WuKongIM 使用 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0)。