交付总览/技术架构
链路上每一环都给你源码
很多方案只给客户端 SDK,网关和路由是黑盒。这里把整条链路摊开:你能改任意一环,也能把它整体搬进自己的机房。
链路 13 环 部署形态 5 种 含一键安装脚本
一条消息从发出到落地
整条链路按发生顺序排开,并按阶段分组。每一环都对应源码里一个可独立改动的位置,没有一环是黑盒。
接入网关
2 项长连接接入
客户端先取一次性 ws-token,经 Nginx 升级为 WebSocket 长连接。
帧协议编解码
自定义 Action 帧协议,默认 Protobuf 编解码并可切 JSON。
按这张图划分机器
最小可用是单台机器装齐全部服务,压力上来再把媒体、存储与从节点拆出去。虚线框的组件不装也能跑。
01 / 客户端Flutter 一套代码构建
02 / 接入层Nginx 反代 + coturn 旁挂
03 / 应用层单个 Go 进程,systemd 托管
04 / 存储与外部依赖默认全在本机,可指向自有机房
消息主存优先级:ScyllaDB → MongoDB → MySQL 逐级降级。未配置 ScyllaDB 时写 MongoDB,MongoDB 连接失败再降到 MySQL,三套实现同构。
用的都是招得到人的技术
技术选型有意保守。你接手之后要招人维护,冷门框架只会变成负债。
服务端
Go 1.25 + Gin客户端
Flutter从一台机器起,按需拆开
交付包里带一键安装脚本,中间件和服务一次装齐。要拆机器时同一个脚本可以只装其中某个组件。
单机全栈
默认形态 · 一键脚本install.sh 在单台机器装齐中间件,服务端以 systemd 托管单个 Go 进程。
双节点主从
双机从节点只装应用、连主节点存储,跨节点消息经 NATS 转发。
容器化目前只覆盖管理后台(多阶段 Dockerfile + nginx 托管静态产物)。服务端本身不提供容器编排清单,如果你要上 Kubernetes 需要自己写。
选一个服务器配置,看能撑多少人
按你打算买的机器规格选一档,下面给出对应的人数区间。区间是按配置和常见使用强度推的规划参考,不是压测实测值。
从能跑通全部服务的最低配置排到机房级集群。
这些数字怎么来的
估算口径- 同时在线指同一时刻保持长连接的人数,不是当天用过的人数。
- 区间下限对应重度使用,上限对应以文字沟通为主。
这份估算用来判断该买多大的机器,不作为性能承诺。压测工具随源码一起交付,跑出来的数才是你的数。
工程规模
这几个数是从仓库里数出来的,不是压测结论。上面那张容量表是按配置和使用强度推的规划参考,同样不是实测值——真实的并发承载、消息吞吐与 P99 延迟,得在你自己的机器上跑一遍才算数,压测工具随源码交付。