MLoadBalancer - 安全传输与负载均衡 / BungeeCord 替代方案

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 允许你拥有 一个大厅服务器,它能自动将玩家分发到 多个游戏服务器。它就像一个“入口大门”,将玩家引导至不同的游戏房间。

工作原理:

  1. 玩家连接到 大厅 服务器
  2. 大厅为玩家创建一个 安全令牌 (JWT)
  3. 大厅将玩家 重定向 到其中一个 目标 服务器
  4. 目标 服务器验证令牌并允许玩家加入
  5. 直接连接到目标服务器会被 阻止(安全性)

功能特性

流畅的多服务器玩家路由 🚀,无需外部代理。 基于 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:启用负载均衡器的主开关
  • rolelobbytarget,定义服务器的行为
  • jwt.secret:用于令牌签名/验证的共享 HMAC 密钥
  • jwt.expirationMinutes:推荐令牌的有效期窗口

大厅设置

  • dispatchModeLOAD_BALANCER(自动)或 COMMANDS(玩家选择)
  • lobby.preventDirectConnections:避免玩家停留在大厅
  • loadBalancer.strategyround-robinrandom
  • servers[]:包含主机、端口、启用状态和权限的目标服务器列表

命令模式

  • 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