top of page

我们的托管世界是怎么运转的

作家相片: Marcel Dütscher
Marcel Dütscher
7月5日
讀畢需時 1 分鐘

你自己的一个网络世界,朋友随时可以加入——还不用任何人去架设服务器。这就是我们“托管世界”的想法,这篇文章里我会带你看看,在门户网站的“开始游戏”按钮背后,到底发生了什么。


一切的核心是 WorldHost:我们服务器上的一个小服务,负责管理世界。每个世界都运行在自己的 Docker 容器里——完全隔离,有自己的存档、自己的内存上限和自己的 CPU 上限。没人玩的时候,什么都不运行:世界在睡觉,容器停止,不占用任何资源。


当有人在门户网站点击“开始游戏”时,是这样的:WorldHost 先检查你到底能不能加入——对于有密码保护的世界,密码会在世界被唤醒之前就检查,所以没人能靠尝试加入就把别人的世界启动起来。检查通过之后,容器才会启动,世界读取存档,而你会收到一个只对这个世界有效、很快过期的加入令牌。与此同时,门户网站会显示“正在唤醒世界……”的状态。


等所有玩家都离开世界,过一会儿它就会重新睡去——存档写好,容器停止。如果你更想在本地继续玩自己的世界,可以下载存档,以后再上传回来:托管世界的存档和本地游戏的存档是一样的。


整个系统故意做得很小:没有 Kubernetes,没有云端魔法——一台服务器、Docker,再加一个负责启动和停止容器的服务。对一个家庭项目来说,这能走得出奇地远。具体能走多远,以及这样一台服务器要花多少钱,是我们关于 VPS 那篇文章里的故事。

最新文章

查看全部
为什么新版本叫 2026.7.19,而不是 0.9.2 🗓️

今天更新的人,会从 0.9.1 版本一下跳到 2026.7.19。这看起来像是笔误,其实是一个刻意的决定:我们改变了版本号方案,从“语义化”版本改成了基于日期的版本(年.月.序号)。原因如下。 旧方案回答的是没人问的问题。语义化版本(0.9.1、1.2.3 ……)来自软件库的世界。在那里它很棒:第一个数字承诺“不会破坏任何东西”,第二个承诺“只有新增”,第三个承诺“只有修复”。而游戏不对任何人做这

 
 
大扫除:我们终于把 GitHub 的缓存用对了 🧹

在上一篇技术文章里,我们测量了构建和检查流水线到底花了什么:不是钱,而是等待时间和存储空间。那篇文章的结尾是“清理工作已经计划好,但还没完成”。结果比预想的快:从今天中午起,它已经进入主分支了。下面是数字。 先看结果。我们仓库的缓存用量,从 63 个条目共 5.32 GB,降到了 13 个条目共 2.46 GB。以前每个拉取请求都要跑的 C# 安全分析,现在在那里只需要 4 秒,而不是 4 分半,

 
 
每月一千次构建,而且一次都不花钱 ⚙️

先更正一件事。这篇文章的第一版声称,我们的 GitHub 构建分钟数用完了,被迫升级到 Pro 账号。这是错的,而且只要看一眼文档就能弄清楚:对公开仓库来说,GitHub 的构建分钟数是免费的。产物和缓存也一样。我们的仓库从五月底起就是公开的,所以我们从来没有为任何一分钟付过钱,以后也不会。与其悄悄改掉文字,我们宁愿重写一遍,告诉你们测量到底显示了什么。结果比错误的版本有趣得多。 先猜测,后查看。

 
 

留言


這篇文章不開放留言。請連絡網站負責人了解更多。
bottom of page