服务编排与管理
SFMC 采用多进程伴生架构:Bedrock Dedicated Server(BDS)负责运行游戏逻辑,数据持久化、QQ 互通与行为包装配则由伴随的 Node.js 守护进程承担。
1. 进程架构与组件职责
平台由以下核心子系统协同构成:
2. 启动时序与装载检查(Load Gate)
启动时序
执行 /start -all 命令时,系统按以下顺序依次启动各进程:
Minecraft BDS 触发 system.beforeEvents.startup 钩子时,SFMC SDK 的 ConfigManager 会立刻向 127.0.0.1:3001 请求初始配置快照(包含模块 Token、系统配置与权限表)。若 db-server 未提前就绪,模块因无法获取 Token 将无法正常初始化。
装载检查流程
启动 BDS 前,系统会自动执行前置检查与构建:
扫描与安装待装附加包
检查 <SFMC_ROOT>/packs/ 目录中的第三方 .mcpack、.mcaddon 与压缩包。若有新文件,自动解压部署至世界目录,详见 附加包管理。
代码指纹比对
读取世界行为包内的部署清单 sfmc-deploy-catalog.json,与当前本地模块源码的 SHA 指纹进行比对。
增量编译与行为包装配
若检测到模块增删、启停状态改变或源码发生变动,自动调用打包工具编译所有已启用模块,生成世界行为包产物。
放行或阻断
若编译或依赖校验失败,系统将终止 BDS 启动并输出错误提示,避免加载损坏的行为包导致世界异常。
3. 运维控制命令
在 sfmc 控制台中可执行以下管理命令:
服务启停与状态
日志查看与指令转发
- 查看日志:执行
logs <svc> [-n 行数] [-f]跟踪指定服务日志(如logs bds -f)。 - 切换日志流:在控制台中按
TAB键或使用Ctrl + L,可在各服务日志间切换。 - 向 BDS 发送指令:使用
send命令向 BDS 控制台输入指令:
4. 生产环境常驻运行
在长期运行的生产服务器上,推荐使用系统服务管理器进行保活守护。
方案 A:Linux systemd 服务守护(推荐)
创建配置文件 /etc/systemd/system/sfmc.service:
加载并启动服务:
方案 B:PM2 进程管理
如果已有 PM2 环境,可创建 ecosystem.config.cjs 进行守护:
5. 端口与网络安全规范
生产环境中请确保内部通信端口不暴露至公网:
在 Linux 云服务器上,可通过 ufw 限制端口访问: