Files
layue13andClaude Opus 5.5 b7d6497ca8 perf: WebSocket 经 CDN:wss 改用 BoringSSL、保活 Ping、整合包形态基准
- ProxySessionBenchmark 新增 --profile modded(仿大型整合包的双向包组与 2 MiB 登录突发,逐字节校验)、
  --websocket-tls 1(keytool 一次性证书的 wss)和 --client-coalesce 1。
- wss 监听改用随包附带的 BoringSSL(netty-tcnative-boringssl-static 2.0.84):TLS 占 wss 代理 I/O CPU 的 55%,
  换用后每帧 CPU 在每一对配对测量中都更低(窗口 1 -22%,窗口 8 -36%),帧率 +31%/+34%;其他平台回落 JDK,
  启动日志标明所用实现。jar 由 10.4 MB 增至 16.5 MB。
- 新增 websocket.pingIntervalSeconds(默认 30,0 关闭):升级后代理静默不超过该时长,期间无写出就发空 Ping,
  避免 CDN/负载均衡在安静的登录、选服阶段按空闲超时断开。IdleStateHandler 版本在窗口 8 多耗 7.6% CPU,
  未达规则;改为写时置位标志、每半个间隔检查的实现,JFR 中几乎不可见。
- 文档:WebSocket 接入新增“经 CDN 部署”,更正消息大小描述;记录见
  testing/benchmarks/results/2026-10-23-websocket-cdn.md。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 16:40:48 +08:00
..

设计文档

文档描述当前实现;源码和自动化测试是行为核对依据。各验收记录注明了自己的日期、提交和环境,详见验证方法。

从这里开始

文档 内容
架构与边界 模块职责、会话状态、线程模型、转服、目录所有权
消息与命令补全 富文本、模板、异步参数补全及协议边界
插件开发 生命周期、玩家/服务器视图、选服、命令与统一类型化事件 API
转服协调 登录前决策、可选源服释放、异步确认、期限与失败边界
玩家权限与 LuckPerms 通用权限接口、提供者生命周期、命令鉴权和原生 LuckPerms 平台插件
初次登录路由 显式入口、插件策略、超时、重试安全边界与验收契约
玩家操作与部署完善设计 消息、主动断开、服务器列表配置与验收边界
运行配置 认证、接入限制、超时、启动和部署边界
日志策略 各级别写什么、日志文件位置、玩家 IP 开关和永远不写的内容
WebSocket 接入 与 TCP 并存的 WebSocket 玩家监听、CDN 部署、真实 IP 与客户端 mod
后端 Channel 消息服务 共享宿主、跨后端路由、消息身份与交付语义
Channel 消息设计契约 从参与者、寻址、响应与失败语义推导 API 和验收条件
验证方法 自动化测试、烟测、真实客户端与合成性能测量
发行物与安装位置 gradlew release 产出的服务器包、后端插件、客户端 mod 各装在哪里
发布与依赖版本 本地 SNAPSHOT、CI 不可变版本、Maven 构件和发行包的区别

当前可引用的验证记录

设计约束:核心管理连接和协议;插件负责玩法与访问策略。ServerView 是后端目录快照,发现方式是目录的提供者,不引入核心负载观测。准入与会话通知使用同一事件类型、监听器和注册表;不同事件在派发策略上处理结果。常规 PLAY 转发没有通用事件派发。