mirror of
https://github.com/layue13/MoonBridge.git
synced 2026-10-25 18:46:18 +00:00
- 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>
设计文档
文档描述当前实现;源码和自动化测试是行为核对依据。各验收记录注明了自己的日期、提交和环境,详见验证方法。
从这里开始
- 要运行 Proxy:先看运行配置,再按部署需求修改认证方式、入口候选和后端地址。
- 要开发插件:先看插件开发;后端 Bukkit 插件另看后端 Channel 接入。
- 要理解初次登录为什么拒绝或如何重试:看初次登录路由及其专项验收记录。
- 要核对证据覆盖面:看验证方法,并按各记录注明的日期、提交、环境和探针类型判断。
| 文档 | 内容 |
|---|---|
| 架构与边界 | 模块职责、会话状态、线程模型、转服、目录所有权 |
| 消息与命令补全 | 富文本、模板、异步参数补全及协议边界 |
| 插件开发 | 生命周期、玩家/服务器视图、选服、命令与统一类型化事件 API |
| 转服协调 | 登录前决策、可选源服释放、异步确认、期限与失败边界 |
| 玩家权限与 LuckPerms | 通用权限接口、提供者生命周期、命令鉴权和原生 LuckPerms 平台插件 |
| 初次登录路由 | 显式入口、插件策略、超时、重试安全边界与验收契约 |
| 玩家操作与部署完善设计 | 消息、主动断开、服务器列表配置与验收边界 |
| 运行配置 | 认证、接入限制、超时、启动和部署边界 |
| 日志策略 | 各级别写什么、日志文件位置、玩家 IP 开关和永远不写的内容 |
| WebSocket 接入 | 与 TCP 并存的 WebSocket 玩家监听、CDN 部署、真实 IP 与客户端 mod |
| 后端 Channel 消息服务 | 共享宿主、跨后端路由、消息身份与交付语义 |
| Channel 消息设计契约 | 从参与者、寻址、响应与失败语义推导 API 和验收条件 |
| 验证方法 | 自动化测试、烟测、真实客户端与合成性能测量 |
| 发行物与安装位置 | gradlew release 产出的服务器包、后端插件、客户端 mod 各装在哪里 |
| 发布与依赖版本 | 本地 SNAPSHOT、CI 不可变版本、Maven 构件和发行包的区别 |
当前可引用的验证记录
- 初次路由专项验收:自动化路由覆盖与真实 Java 8 Uranium 后端协议探针;不是完整 Prism 模组包视觉验收。
- MoonBridge 后端 API 验收:隔离 Uranium 服务端中的 Bukkit 宿主和 API 功能验收;无玩家。
- 2026-09-26 Prism 历史记录:真实客户端及配对测量,仅适用于该记录描述的代码版本和环境。
设计约束:核心管理连接和协议;插件负责玩法与访问策略。ServerView 是后端目录快照,发现方式是目录的提供者,不引入核心负载观测。准入与会话通知使用同一事件类型、监听器和注册表;不同事件在派发策略上处理结果。常规 PLAY 转发没有通用事件派发。