跳到主要内容

名词解释

此页面是为了阐明一些在文档中可能出现的词语的隐含含义。这些词语的含义与其一般意义不同,可能附加了一些前提和考虑。了解这些名词确切的含义有助于你更好地理解文档的各个部分。

归档(archive)

归档

归档是指一个可以运行的服务端及其伴随的完整数据文件的集合,归档目录是指存储这些文件的那一个目录。归档目录可以简称为归档。

归档也可以是一种动作,指的是在服务器关闭的情况下,将归档目录从 ECS 复制到 OSS 保存起来,并删除 ECS 实例的流程。

备份(backup)

备份是指对归档中 savings 部分(见归档的示意图)的运行时克隆,这意味着备份与归档不同,它可以发生在服务器运行状态下,因而其内容不一定可靠(备份的内容不一定与时间完全对应,可能滞后)。

备份不是对归档的完整拷贝,而仅限于对世界存档的拷贝。这样设计是因为备份是一种相对于归档频繁得多的操作,因而备份理应取相比归档更少的数据量来确保实时性。同时,更少的数据量使得备份更容易被压缩、可以维持多个版本以供冗余与记录用途。

任务(task)

任务是指一个长耗时的流程,该流程的耗时性质导致其不适合放在一次 HTTP 请求—响应周期内完成,因此总是遵循触发与执行分离的模式。

任务由一个任务定义(TaskDefinition)结构体来详细描述,该结构体包含了该任务的详细配置、前置条件以及任务的流程代码。

任务的标识符是其类型,称为任务类型(task type)。一些任务可能是类型互斥的,这意味着当一个任务正在执行时,其同类任务不被允许触发。

关于任务的详细解释,请前往任务

监控器(monitor)

监控器是对 go-aliyunmc 中一系列必需的常驻协程的统称。常驻是指它们的运行贯穿整个程序的运行,不会因为任何非异常因素提前结束。

监控器下有一个子类型称为快照监控器(snapshot monitor)。快照监控器用于从外部系统(例如,服务器)同步数据并存储在该监控器管理的内部数据结构上,其用来同步的方法一般为轮询。外部可以以并发安全的方式访问该监控器维护的数据。由于快照监控器维护的数据总是可能发生变化,因此外部(即除了该监控器自身)拿到的数据总可能是过时的,将其统称为快照(snapshot),它是一个带有额外参考信息的只读副本。

注意,快照的概念不仅限于外部系统数据,还可能包含可能随时被修改的监控器内部状态,例如 AutoArchiveIdleMonitorautoArchiveFlowRunning 状态。但该状态不是一个 snapshot[T] 包围的结构。

关于监控器的详细解释,请前往监控器

OSS、ossutil

本文档中的 OSS 均指阿里云对象存储服务(Object Storage Service)ossutil 是指阿里云为其 OSS 服务开发的管理 OSS bucket 的命令行工具,GitHub 地址为 https://github.com/aliyun/ossutil

ECS

ECS 指的是阿里云提供的一类称为**弹性计算服务(Elastic Computing Service)**的产品。你可以简单将它理解为提供服务器或者虚拟主机的服务。在本文档中,有时会使用 ECS 来代指 Minecraft 服务端所在的那个主机。

实例

实例(instance) 指的是 ECS 提供的一个虚拟主机,用于运行 Minecraft 服务端。

实例规格

本文档中所提到的 实例规格(instance type) 是一种标识 ECS 性能和特点的标签,其格式类似于 ecs.u1-c1m4.xlarge,通常分为三段:第一段保持为 ecs 不变,第二段包含该 ECS 所属的规格族、代数,部分还包含了其 CPU 核数与内存之比,第三段表示该实例在该类型中的“大小”,可能是 smalllargexlarge2xlarge 等值,越高表示该实例的计算资源越多。

远程服务器、远程主机、服务器主机、远端、remote

都是指被 go-aliyunmc 控制的那个用于运行 Minecraft 服务端的阿里云主机,它是一个抢占式实例,按照 aliyun.toml 中的相关配置创建,并使用部署任务进行部署。

服务所在主机、控制主机、本地、local

都是指 go-aliyunmc 所运行的那个主机,该主机一定与服务器主机不是同一个主机,二者有着不同的网络环境、系统配置等。

Minecraft 服务端

Minecraft 服务端指的是在服务器上的那个用来作为多人游戏连接端点的程序。服务端分为很多种,包括官方(原版/Vanilla)服务端、Bukkit、Paper、Spigot、NeoForge、Forge、Fabric 等。只要能够作为一个 Minecraft 游戏服务器供外部连接,就可以称之为服务端。

服务端与服务器的区别

这两个概念经常混淆,并且基本上你只能通过上下文区分它们的意思。“服务器”既可以指 ECS 实例,也可以指 Minecraft 服务端运行起来的那个进程,也可以是其他含义,请注意辨别。