部署
了解部署及其生命周期——概念与最佳实践以便更深入理解。
🗺️ 编排
通过我们的云原生边缘计算方法,在几秒钟内启动新服务器以满足容量需求。我们将服务器视为 群羊而非宠物 ——完全替换故障实例,而不是逐个手动修理。
大多数游戏并不能完美契合某一种模式。 通过 Discord 联系我们 以了解混合编排选项。
要全面了解所有优缺点,让我们比较各种编排方法。
基于对局的编排
为现代工作室提供的黄金标准,提供 最简单的集成与最高的成本效率.
👍 优点
最佳成本效率——按分钟实时扩展以满足玩家需求。
最低的运维成本,由于无地域托管,Edgegap 自动化处理 99% 的任务。
最低延迟,因为 Edgegap 的公共云基础设施拥有 615+ 个站点。
在突发流量激增时具有最快的扩容速度(突发能力)。
最高标准的安全性与作弊防护(服务器权威)。
意外服务器崩溃对玩家的影响最小,仅影响单场比赛。
👎 缺点
采用新的编排思维模型在初期需要一定的学习成本。
运行超过 24 小时的服务器将被自动终止。
🧩 最适合
对延迟敏感的游戏—— 当网络代码优化无法克服高延迟时:
第一人称射击、格斗游戏、VR 与 XR(虚拟与扩展现实)等,…
具有 对对局时长有上限设计的游戏,
大逃杀, PvPvE,合作射击、MOBA、体育类游戏、ARPG 与地牢爬行者等,…
🔎 可发现性
在有足够玩家加入时启动新游戏 匹配器.
向现有对局中 添加玩家以通过回填替换离开的玩家.
允许玩家浏览服务器并从列表中选择,具备 服务器浏览器.
区域待命
传统模型适用于 具有用户生成内容的持久世界和社交类 MMO 游戏.
👍 优点
熟悉且易于理解,是经验丰富的老手常用的老派方法。
最高标准的安全性与作弊防护(服务器权威)。
基于月度承诺的成本易于预测。
👎 缺点
更高的托管成本——每个区域需要一个或多个空闲待命服务器(突发容量)。
更高的运维成本——每个区域都需要重复进行扩展、运营和维护。
玩家较少的区域会因加入远程服务器而出现较高延迟。
🧩 最适合
服务器上保存用户生成内容的持久世界,即使玩家离线内容仍在服务器上存储。
MMO、带基地建造或物体摆放的沙盒、提取类射击游戏等,…
对延迟容忍的游戏—— 当不需要服务器权威的实时物理时:
移动游戏、合作游戏、TCG/CCG、回合制策略等,…
异步多人游戏, 服务器崩溃对玩家体验影响最小的情况:
与幽灵竞速、掠夺敌方基地、基于计时的建造/耕作游戏等,…
初始化过程开销大的应用——当准备服务器需要数分钟时。
🔎 可发现性
允许玩家浏览服务器并从列表中选择,具备 服务器浏览器.
点对点(Peer to Peer)
将开发精力从 专用服务器 转移到 面向非竞技类游戏的中继网络代码.
相关主题:监听服务器、玩家主机权威、NAT 穿透。
👍 优点
最低的托管成本,仅需中继服务器来解决 NAT 穿透问题。
最低的运维成本——只需维护客户端构建和分发渠道。
意外服务器崩溃对玩家的影响最小,仅影响单场比赛。
易于实现且原型开发时间短,不需要任何后端开发。
👎 缺点
需要增加点对点网络代码开发工作量,需掌握并发编程技能。
最差的延迟体验,对不利网络条件(例如移动网络)最为敏感。
安全性最弱,易受中间人攻击和会话劫持的威胁。
当主机离开时可能导致会话中断,除非你实现自定义的主机迁移。
🧩 最适合
合作与休闲类游戏—— 当作弊不会影响乐趣或破坏游戏时,
儿童游戏、探索类游戏、冒险类游戏等,…
🔎 可发现性
参见我们的 分布式中继 服务,启用具有一流延迟和安全性的点对点功能。
📍 服务器部署位置
无论选择哪种编排方法,为一组玩家选择合适的服务器位置对确保最佳延迟和最优玩家体验至关重要。了解不同的服务器部署策略,以及它们如何影响你的玩家。
Edgegap 在 可用容量最合适的位置 进行部署,以实现快速且低延迟的对局。

服务器评分
服务器评分策略使用 Edgegap 的专利方法, 针对每场匹配单独优化服务器部署位置。执行非侵入性遥测以估算每位玩家到我们服务器位置的网络接近度,并选择能提供最佳:
响应性 ——为所有玩家平均提供最低延迟,
公平性 ——为所有玩家提供平衡且公平的延迟。
无响应的部署位置 ——服务器距离过远,所有玩家延迟高:

不公平的部署位置 ——延迟不均,一位玩家处于劣势:

良好部署示例 ——为所有玩家提供响应快且公平的延迟:

地理定位
或者, 提供玩家的经纬度坐标或首选服务器位置的坐标 以替代自动遥测。此方法需要额外的客户端侧地理查找实现,完全依赖游戏开发者的解决方案。
除非应用有关于跨区域数据传输的严格监管要求,或玩家 IP 不可用,否则不推荐将地理定位策略用于 部署 编排。
要将此策略与 部署 API一起使用,请在你的部署请求中列出玩家的公网 IP 或地理坐标。
区域锁定
服务器可使用粗略泛化的区域参数进行部署,方式为:
基于玩家元数据(玩家账号数据库)为玩家自动选择,或
在匹配过程中由玩家选择,允许放置在具有较高客户端-服务器延迟的位置。
单独使用此策略不推荐,因为它可能导致糟糕的网络性能。
将 区域选择作为与其他策略结合的预过滤条件 是更好的替代方案。
🟢 连接质量
有些游戏(和部分玩家)对延迟或卡顿比其他更敏感。虽然玩家报告是指示大规模事件或回归错误的良好指标, 但玩家可能对网络概念缺乏深入理解 并且容易将责任归咎于工作室、网络代码或服务器。
某些问题的根本原因可能对玩家是不可见的,因此工作室与托管提供商的合作可能至关重要。 Edgegap 的优先目标始终是提供尽可能最好的服务。
如果你收到大量玩家报告、遇到广泛的故障或反复出现的问题,请立即通过我们平台的支持工单与我们联系。
低延迟
玩家延迟由在以下各项之间传输数据的延迟组成:
物理设备—— 物理信号穿过 互联网网络拓扑,
主机到主机 ——由协议、传输与安全措施导致,
进程到进程 ——由客户端/服务器中对数据的(打包)与处理导致。
Edgegap 通过将服务器部署得更靠近玩家来降低物理延迟,从而实现更短的响应时间和更少的网络跃点。凭借跨 17 家云与裸金属提供商的站点,你将获得 在全球任何地方为玩家提供的一流延迟.
服务器与互联网的全球覆盖(不仅仅是 Edgegap)受限于诸如以下因素:
基础设施可用性 ——某一区域的互联网连接质量可能不足,
自然因素 ——高度复杂的服务器机架需要相对稳定的环境。
高可用性
全球各地不同位置的服务器可用性会随时间变化,并在一天中多次变动。Edgegap 会自动 按需上下扩展 位置 ,并会考虑:突发流量
——在 15 分钟内发起的部署, vCPU 要求
——每次部署更多的 vCPU 会增加特定位置的总体需求, 提供商可用性
——某些偏远位置可选的提供商较少, 机器可用性
——某些位置可能仅提供 4 vCPU 或 8 vCPU 的机器, 工作室请求
用于测试、质量保证、抢先体验、封闭测试或比赛。 所有应用的部署请求会被合并以评估位置需求。默认情况下,所有组织具有相同的分配优先级,且
对于需要特定硬件或位置的企业客户可以添加私有服务器池 。.
请 与我们联系以规划发布,或如果你对位置可用性有任何请求。
玩家问题解决
玩家问题可能根源于服务器漏洞或提供商事件,但也可能来自第三方,例如本地 ISP、游戏服务、底层库的漏洞、基础设施提供商或其他来源。
在排查玩家报告或事件时,请考虑以下因素:
区域性问题:
本地化的互联网服务提供商(ISP)可能暂时性地解决一个事件,
某些地区(例如中国、俄罗斯)可能由于本地化制裁而受限,
缓存级别 ——Edgegap 会优先在有缓存的位置进行快速部署:
最大部署时间 ——部署可能由于缓慢且耗时的初始化过程而失败:
参见 应用与版本 要增加超时时间,
将初始化步骤延后到绝对必要时,
服务器镜像或集成问题.
在客户端的对局历史 UI 中显示部署 ID 以便在排查时追踪玩家报告。
🔄 部署生命周期
Edgegap 的部署会经过若干生命周期阶段,由部署状态表示。
1. 启动部署
用于 测试目的 的部署可以使用以下方式启动:
虚幻引擎 - 用于 Unreal Engine 项目的 Docker 扩展或插件,
Unity - Unity 项目的插件,
仪表板 Web UI - 用于测试服务器集成的易用网页界面。
用于 生产环境(线上) 应使用以下方式启动:
部署 API - 服务器到服务器的定制集成(自定义扩展)。
保存 request_id (部署 ID)并为部署打标签 以便稍后识别和排查问题。
2. 部署中
一旦启动部署,我们的系统会快速连续执行多个步骤:
遥测——我们正在测量可用数据中心到每位玩家的网络响应性,
部署——我们正在保留容量并准备启动你的服务器容器,
容器启动——我们正在启动容器、安装依赖并初始化,
后处理——我们正在添加日志存储、监控并完成部署。
启用 在您的应用版本中启用缓存 以在几秒钟内部署服务器。
请求过多 429 ——为确保稳定性并防止意外账单,我们将对你的组织进行速率限制,限制为 40 次请求/秒. 联系我们 以规划发布、估算上线流量并为成功做好准备。
3. 部署已就绪
你的容器已完全初始化,服务器正在启动。在几秒到一分钟内,你的服务器可能仍在初始化,在游戏引擎(或自定义运行时)完全准备好接受玩家连接之前可能不会响应玩家请求。
一旦部署处于就绪状态, 重试玩家连接直到成功,或直到预定义的客户端超时。
服务器意外崩溃会导致您的服务器自动重启。 服务器状态可能会丢失.
4. 部署错误
你的部署在任何时间点可能因意外原因进入错误状态。这在测试集成或测试新服务器构建时更容易发生。
对于处于错误状态的部署你不会被收费,这些部署会在 24 小时后自动停止。
故障排查步骤:
通过 我们的可用性监控页面.
验证 Edgegap 服务状态
尝试使用 Docker Desktop 在本地测试你的服务器容器以排除 Edgegap 问题。 在寻求帮助时, 请包含你的部署 ID 及任何有用的细节
以便我们能及时调查!
5. 部署已停止我们不会在未经你指示的情况下停止你的服务器,
以避免对玩家体验造成负面影响。你的部署可能因以下原因被停止: 通过 DELETE_URL
自我停止 ——玩家离开且比赛结束后部署自行停止, 由你的后端停止,
——你的后端使用 部署 API 应用与版本 停止了该部署,
私有舰队 游戏最大时长
信号给你的主进程,允许短暂的终止期限。一旦到期,会发送
SIGKILL
可发现性
信号以停止部署。👀 可观测性允许游戏服务器与第三方互操作并获取运行时洞察。
一旦就绪,部署会被分配一个 URL( fqdn 和 部署.
部署标签以便轻松标记你的部署
来自你的游戏服务器的出站流量(到客户端或后端)从不被阻止
或过滤。Websockets (WS) 与 安全 Websockets (WSS)
要在 Edgegap 上使用基于 websocket 的网络代码,你有两种选择: 应用与版本 转移到 托管证书
,1 分钟内设置完成且无需编写任何代码:
配置你的)
使用 Websocket (WS) 并启用 TLS 升级,使用 Edgegap URL 连接客户端(例如:
要在 Edgegap 上使用基于 websocket 的网络代码,你有两种选择: 应用与版本 转移到 https://5fa53fa00a57.pr.edgegap.net/,
自管理证书 ,如果你想使用你自己的自定义域名:).
使用安全 Websocket (WSS) 配置你自己的 TLS 证书流程并使用自定义 DNS 记录(例如在 和 Cloudflare. 中)。.
未捕获的服务器异常会导致部署的容器重启并使 TLS 安全失效。在这种情况下,
停止你的服务器
将玩家重新分配到新的部署 服务器状态可能会丢失 注入变量 游戏服务器通常需要额外的信息,例如服务器 IP、内部端口值或其他。注入只读环境变量是一种可靠且与云无关的传参方式。.
在 C++ 中获取环境变量值的 GetEnvironmentVariable
应用版本变量
匹配器变量
此外还有下文的部署变量。
自定义变量
为每次部署定义最多 20 个自定义变量,每个变量可包含最多 4KB 的字符串数据。避免使用下面的保留名称,否则你的自定义变量将被覆盖!通过读取 Edgegap 注入到服务器的变量来访问重要信息:.标识符
ARBITRIUM_REQUEST_ID
——例如:.
f68e011bfb01避免使用下面的保留名称,否则你的自定义变量将被覆盖!唯一的部署 ID,也称为请求 ID。用于检索更多信息。.部署 URL 始终具有格式
{ARBITRIUM_REQUEST_ID}.pr.edgegap.net避免使用下面的保留名称,否则你的自定义变量将被覆盖!162.254.141.66.ARBITRIUM_HOST_ID
alpha-north-america-70364ef8避免使用下面的保留名称,否则你的自定义变量将被覆盖!承载你部署的机器的唯一标识符,与其他部署共享。.ARBITRIUM_PUBLIC_IP 该主机的公网 IP 地址,可用于替代 URL 进行连接。.
ARBITRIUM_DEPLOYMENT_TAGS
tag1,tag2避免使用下面的保留名称,否则你的自定义变量将被覆盖!2000以逗号分隔的用户定义部署标签,便于搜索与筛选避免使用下面的保留名称,否则你的自定义变量将被覆盖!256资源规格ARBITRIUM_HOST_BASE_CLOCK_FREQUENCY避免使用下面的保留名称,否则你的自定义变量将被覆盖!512,处理器频率,单位 MHz。
ARBITRIUM_DEPLOYMENT_VCPU_UNITS
,分配的 vCPU 单位(1024 = 1 vCPU)。避免使用下面的保留名称,否则你的自定义变量将被覆盖!ARBITRIUM_DEPLOYMENT_MEMORY_MB.,分配的内存,单位 MB(1024 = 1 GB)。 生命周期管理.
ARBITRIUM_DELETE_URL
https://api.edgegap.com/v1/self/stop/9f511e17/660可从部署内调用,部署将被优雅地停止需要唯一的一次性
https://api.edgegap.com/v1/self/stop/9f511e17/660避免使用下面的保留名称,否则你的自定义变量将被覆盖!ARBITRIUM_DELETE_TOKEN.在避免使用下面的保留名称,否则你的自定义变量将被覆盖!Authorization.头中。
7df4cd933df87084b34ae80d8abde293
ARBITRIUM_CONTEXT_URL可从部署内调用,部署将被优雅地停止需要唯一的一次性
ARBITRIUM_CONTEXT_URL避免使用下面的保留名称,否则你的自定义变量将被覆盖!https://api.edgegap.com/v1/context/9170f5211e17/17.
可发现性
仅可从部署内调用,返回更多部署详情。避免使用下面的保留名称,否则你的自定义变量将被覆盖!7777需要唯一的ARBITRIUM_CONTEXT_TOKEN避免使用下面的保留名称,否则你的自定义变量将被覆盖!31504dfaf50b9333b9ee07b22ed247e4a17e6ARBITRIUM_PORT_GAMEPORT_INTERNAL
,服务器监听的内部端口。避免使用下面的保留名称,否则你的自定义变量将被覆盖!ARBITRIUM_PORT_GAMEPORT_EXTERNAL,客户端连接的外部端口。
出于安全目的,外部端口值在每次部署时会随机化。 ARBITRIUM_PORT_GAMEPORT_PROTOCOL UDP ,你的网络传输协议。 应用与版本 示例假设你已将端口命名为 gameport (默认)。 每个端口都会添加一组经过清理的 .
变量:避免使用下面的保留名称,否则你的自定义变量将被覆盖!@Super Port!⇒ Ping 信标.ARBITRIUM_PORT_SUPER_PORT_INTERNAL避免使用下面的保留名称,否则你的自定义变量将被覆盖!139.177.198.69ARBITRIUM_BEACON_ENABLEDtrue避免使用下面的保留名称,否则你的自定义变量将被覆盖!30199,如果部署在运行的私有舰队上。避免使用下面的保留名称,否则你的自定义变量将被覆盖!30456ARBITRIUM_HOST_BEACON_PUBLIC_IP
,最近的 beacon 的公网 IP。
仪表板监控
我们的 仪表板 提供用于监控服务器可扩展性并协助运维的实用工具。
分析
查找 侧边栏菜单中的分析仪表板 在“服务器托管与编排”类别下。
🌟 升级到按需付费等级 以解锁详细的服务器性能指标和洞察:
常规洞察: 监控每个版本的实时服务器数量及资源使用概览,
CPU 洞察:排查因处理器密集型操作导致的服务器卡顿,
内存洞察:缓解因超出分配内存导致的服务器重启,
网络洞察: 检测低效的网络模式并优化网络代码。

部署地图
在以下位置查找部署地图 仪表板上的部署详细信息页面.
在地图上预览部署位置、可用位置和估计的玩家位置:

部署平衡点
在以下位置查找部署平衡点热力图 仪表板上的应用详情页面.
预览部署平衡点热力图并按以下条件过滤 应用与版本。平衡点是对给定部署中各玩家具有相等网络接近性的近似位置:

部署日志
在以下位置查找部署日志 仪表板上的部署详细信息页面.
部署日志显示有关以下内容的信息 部署:

容器日志
在以下位置查找容器日志 仪表板上的部署详细信息页面.
在出现问题或调试时检查您的游戏服务器日志:

部署停止后,容器日志将被删除。 设置 第三方 S3 日志存储 以保存日志。
容器指标
在以下位置查找容器指标 仪表板上的部署详细信息页面.
查看容器指标(处理器、内存、网络)以:
在出现连接问题时识别常见问题, 部署,
检测导致资源使用激增的低效实现模式,
找出特定场景下的低效资源使用,
验证在优化期间服务器资源使用的变化,
基准测试服务器初始化的资源消耗和持续时间。
历史指标以 1 分钟时间周期显示平均值,可在免费层使用。
🌟 升级到按需付费等级 以解锁具有 1 秒时间间隔的精确指标。

上下文与状态
可以以 JSON 格式检索其他部署信息:
请求过多 429 - 我们对您的组织施加速率限制为 10 req/s 针对上下文和状态 API 端点。使用 未捕获的服务器异常会导致部署的容器重启并使 TLS 安全失效。在这种情况下, 和 Webhook 以获得可扩展的解决方案。
筛选部署
要在所有部署中快速搜索,您可以 使用我们的仪表板:

或者,让玩家 选择一个持久(始终在线)的服务器 从一个带有的列表中 服务器浏览器.
列出具有 API 的部署 并通过后端集成应用过滤:
可从部署内调用, 注入变量 nin
[ "7e709a0d8efd", "4ba353100b4b" ]
可从部署内调用, 注入变量 nin
[ "tagA", "tagB" ]
可从部署内调用, 注入变量 nin
[ "my-app", "my-other-app" ]
可从部署内调用, 注入变量 nin
[ "1.0.0", "prod" ]
按请求中出现的顺序按多个字段排序结果:
asc 注入变量 desc
asc 注入变量 desc
示例过滤查询:
别忘了在请求中添加 部署将被优雅地停止 带有您的 Edgegap API 令牌的标头。
Webhook 与回调
如果您需要在部署变为 Ready 或出现错误时接收简单的 HTTP 通知,您可以指定一个 webhook URL 在您的 部署 API 请求中.
Webhook 不会被重试,因此如果由于速率限制或错误导致您的后端未处理请求,Webhook 可能会丢失。仅将 Webhook 用于 非关键用例或调试目的.
🚨 故障排除
在排查部署问题时:
中没有错误
在本地运行您的服务器以排除集成错误,
在本页查看故障排除步骤, 联系社区 社区 Discord
最后更新于
这有帮助吗?

