
MLoadBalancer - 安全传输与负载均衡 / BungeeCord 替代方案
一个安全的(已签名)负载均衡器系统,适用于采用JWT身份验证的Hytale服务器。
MLoadBalancer
一个为 Hytale 服务器设计的负载均衡系统,采用 JWT 认证。支持两种运行模式:大厅(重定向玩家)和目标(接收重定向的玩家)。
适用于 Hytale 的 BungeeCord 替代方案
MLoadBalancer 是专为 Hytale 开发的、原生替代 BungeeCord(Minecraft 代理)的解决方案。
为什么选择 MLoadBalancer 而非 BungeeCord?
- 原生 Hytale:专为 Hytale API 构建,无需外部代理
- 集成认证:JWT 搭配 HMAC 签名,安全性内置于游戏本身
- 更简单:无需运行单独的代理服务器——作为插件在服务器内部运行
- 更佳性能:原生 Hytale 重定向,无中介层
- 易于配置:所有内容都在一个 JSON5 文件中,无需复杂的网络设置
快速对比:
- BungeeCord:位于客户端和服务器之间的外部代理(代理架构)
- MLoadBalancer:直接重定向玩家的原生插件(负载均衡架构)
如果你来自 Minecraft 并了解 BungeeCord,那么 MLoadBalancer 的作用相同,但为 Hytale 提供了更集成、更原生的方式!
这是什么?
MLoadBalancer 允许你拥有 一个大厅服务器,它能自动将玩家分发到 多个游戏服务器。它就像一个“入口大门”,将玩家引导至不同的游戏房间。
工作原理:
- 玩家连接到 大厅 服务器
- 大厅为玩家创建一个 安全令牌 (JWT)
- 大厅将玩家 重定向 到其中一个 目标 服务器
- 目标 服务器验证令牌并允许玩家加入
- 直接连接到目标服务器会被 阻止(安全性)
功能特性
流畅的多服务器玩家路由 🚀,无需外部代理。 基于 JWT 安全的大厅与目标服务器之间的交接 🔐。 可热重载的配置 🎛,实现零停机变更。 支持自动和基于命令的重定向 📡。 可选的每个服务器命令,用于更快的用户体验 🔌。 通过 API 与插件集成 🧩。
MLoadBalancer 专为真实服务器环境设计,玩家可以无缝地在不同实例间移动,而不会察觉到背后的基础设施。该插件支持大厅重定向和带有 JWT 安全性的目标验证。无需像 BungeeCord 那样的代理,一切都在 Hytale 内部原生完成。
关键能力包括负载均衡、安全令牌交接、可选的基于命令的路由、每个服务器的快捷方式、基于权限的访问(在 COMMANDS 模式下),以及可热重载的配置,使得操作员无需重启网络即可进行更改。
调度模式
玩家可以自动重定向(LOAD_BALANCER),或根据网络设计和玩家流程手动选择目的地(COMMANDS)🎮。当大厅纯粹作为入口路由器时,自动重定向是理想选择;而 COMMANDS 模式更适合玩家需要选择、分层访问或持久社交空间的中枢。
每个服务器的自定义命令
使用 COMMANDS 模式时,服务器可以可选地定义一个 customCommand 块。这可以实现如 /survival 或 /vip 这样的快捷命令,使重定向对于可能需要输入 /redirect survival 的玩家来说更快更直观 🧭。自定义命令与全局重定向命令共存,如果未定义全局命令,它就不会被注册。
权限
权限检查仅适用于 COMMANDS 模式,并允许基于角色的访问控制,例如仅供 VIP 使用的服务器、仅供工作人员的后端或分层体验 🔑。当权限设置为 null 时,该服务器对所有玩家开放。此模型模仿了常见的 Minecraft BungeeCord 网络,同时保持对 Hytale 的原生性。
未来增强
未来的工作包括支持 LOAD_BALANCER 模式下的权限、加权均衡 ⚖️、玩家计数 📊、健康检查 🩺 以及扩展的 UI/UX 选项 🎨。还计划了基于 GUI 的重定向 🖱️ 和基于世界传送门的重定向 🌀,以便玩家可以通过交互式元素而非仅通过命令来选择服务器。这些 UX 功能将建立在现有的 API 和认证管道之上。
插件 API 集成
MLoadBalancer 暴露了一个集成 API,允许外部插件参与服务器路由或将自定义有效载荷数据附加到 JWT 令牌上 📦。这使得可以在不发明新网络协议的情况下,将会话分配、玩家等级、队列状态或其他游戏上下文从大厅转发到目标服务器。
目标服务器之后可以读取转发的数据并据此采取行动,从而实现更丰富的跨服务器流程,例如自动配对、排队游戏或跨服务器小游戏 🧩。
配置
MLoadBalancer 的配置文件位于:
config/com.machina/mloadbalancer/config.json5(当可写时首选)- 备用路径:
mods/com.machina/mloadbalancer/config.json5(当主路径无法写入时)
配置文件使用 JSON5,允许尾随逗号和注释。
此外,本地化/可翻译的面向玩家的消息位于:
config/com.machina/mloadbalancer/translation.json5- 备用路径:
mods/com.machina/mloadbalancer/translation.json5
这使得所有 Machina 插件的配置路径保持一致。JSON5 允许尾随逗号和注释。
核心设置
enabled:启用负载均衡器的主开关role:lobby或target,定义服务器的行为jwt.secret:用于令牌签名/验证的共享 HMAC 密钥jwt.expirationMinutes:推荐令牌的有效期窗口
大厅设置
dispatchMode:LOAD_BALANCER(自动)或COMMANDS(玩家选择)lobby.preventDirectConnections:避免玩家停留在大厅loadBalancer.strategy:round-robin或randomservers[]:包含主机、端口、启用状态和权限的目标服务器列表
命令模式
command.name:全局重定向命令(例如redirect)servers[].customCommand.name:可选的每个服务器快捷命令servers[].permission:在COMMANDS模式下限制访问
全局命令是可选的;如果不存在,则不会注册。每个服务器的命令仍然可用。
目标设置
role = target:服务器仅接受经过 JWT 认证的大厅推荐
支持开发
你可以在此处支持开发 💖,以助力未来的更新和功能:
https://machinastudios.net/support-us
社区
你可以在此处支持开发 💖,以助力未来的更新和功能:
https://machinastudios.net/support-us
社区
💬 加入我们的 Discord 社区!
获取帮助、分享想法,并与其他开发者交流 🧑💻:
- 🆘 支持与故障排除
- 💡 建议与反馈
- 🤝 社区与协作
👉 加入我们的 Discord 服务器:https://discord.gg/QAFrzj48EN
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。