Func Stateful Q&A
Func Stateful Q&A
1. Func 服务的 Stateful 和 Stateless 模式有什么区别?
Func Stateful 和 Stateless 区别在于 Stateful 应用是长时间运行的,而 Stateless 则是一次性的。Stateful 应用通常由 socket server 构成,用来处理用户的连接。Stateless 应用通常是由一系列代码指令构成,当应用执行完成后即销毁此应用。
2. Func 的服务器和 Multiverse 的服务器有什么区别?我在我的游戏开发过程中应该如何选择这几款产品?
Multiverse 主要提供针对"开启游戏对局"或"创建对战房间"等场景的战斗服;而 Func 则为游戏提供一个持续存在的逻辑服务器,供玩家连接和游玩。在实际使用过程中,Multiverse 的服务器生命周期会随着 一场游戏对局 的推进和结算而变更,每开启一场游戏对局就会启用一个 Multiverse 服务器用于同步对局中的玩家的状态等相关对局信息;而 Func 的服务器生命周期通常是和 一款完整游戏 的运营周期密切相关,随着游戏玩家增多,您可以手动启用新的游戏服务器,或者配置 弹性伸缩 功能来动态调整投入使用的游戏服务器数量和配置。
3. Func Stateful 支持哪些编程语言?
Func Stateful 支持所有服务端常用的编程语言,只要编译成linux可执行文件就可以在 Func Stateful 的启动配置页面上传到镜像启动。
4. Func Stateful 支持配置多个启动配置吗?
是的,Func Stateful 支持为同一个 UOS APP 配置多个不同的启动配置。每个启动配置可以有不同的镜像、环境变量和启动参数等设置。这样可以方便地管理不同版本或不同用途的服务器配置,比如测试环境和生产环境可以使用不同的启动配置。
在启用 Func Stateful 服务时,会自动创建一个默认启动配置(即 DEFAULT)。您可以在默认配置中对您的服务器进行配置和实时的修改。倘若您在实际使用过程中需要同时启用多个不同的启动配置来创建服务器,您可以在「启动配置页面」创建新的启动配置。在后续开发过程中,您只需要在修改启动配置或者管理服务器之前,在启动配置列表中选择相应的启动配置即可。
5. Func Stateful 服务器 生命周期有哪几个阶段?
服务器共有 6 种状态
created
对应服务器页面显示的 正在分配 状态, 代表服务器创建成功, 正在为你分配服务器。
running
对应服务器页面显示的 正在运行 状态, 代表分配服务器成功, 服务器正在运行。
failed
对应服务器页面显示的 创建失败 状态, 可以查看日志定位失败原因。
deleting
对应服务器页面显示的 删除中 状态, 代表服务器正在删除,处于回收资源的过程中。
deleted
对应服务器页面显示的 已删除 状态,代表服务器已经被删除。
* 试用用户服务器最长存续时间为 1 小时,游戏服务器超出试用时长将会自动删除;成为 正式用户 以后,服务器将不会存在超时限制。如需开通完整权限请 联系我们
unhealthy
对应服务器页面显示的 心跳检测失败 状态, Func 服务器启动后便会开始心跳检测, 如果遇到 unhealthy 状态, 说明服务器崩溃或是哪里有问题导致无法正常发送心跳检测包。
6. 用户如何连接/重连Func Stateful的服务器?
客户端调用 Connect 方法后,Func Stateful 会根据 UOS App Id 和玩家 id(playerId)自动连接到正在运行中的服务器。同时,Func Stateful 会记录玩家们的连接状态,以便在玩家掉线后需要重新连接服务器时,可以再次调用 Connect 方法,实现自动连接到原先的服务器。这样,玩家无需手动选择服务器,能够方便地恢复到之前的连接状态。
此外,Func Stateful 也提供了 获取 servers 信息 的方法供客户端调用。该方法会返回 Func 当前正在运行中的服务器的信息数组,所以客户端在调用 Connect 时也可以通过信息数组中提供的服务器 ID 来连接指定对应的服务器。 获取 servers 信息 的方法还支持客户端在调用时通过名称、标签等属性对服务器进行筛选来获取相应的服务器的信息数组。
7. 如何处理正在运行的服务器“挂掉”的情况?
当服务器出现故障或挂掉时,Func Stateful会自动启动一台新的服务器,以确保服务的连续性和可用性。当用户需要重新连接时,他们将会被自动连接进入新的服务器。这样,用户可以无缝地恢复到新的服务器上,继续游戏进程。
8. Func Stateful 的启动配置支持 HTTP Server 和 WebSocket Server 吗?
如果需要使用HTTP Server, WebSocket Server, loadbalance以及创建域名,可以 联系我们 了解更多。
9. 如何给 Func Stateful 的服务器传递参数?
可以通过以下两种设置 环境变量 的方式来给 Func 的服务器传递参数。
- 在上传镜像和设置启动配置时,可以在设置启动参数的窗口中的 环境变量 一栏给所有服务器配置统一的环境变量。在配置统一的环境变量之后,后续启用的服务器中都可以获取到相应的参数。需要注意的是,启动配置的环境变量更新只对后续启用的服务器生效,原先运行中的服务器的环境变量不会受到影响。
- 在创建服务器时, 可以通过配置 环境变量 一栏来给每个服务器配置单独的环境变量。Func Stateful 支持 批量启动 服务器,可以通过设置当前启动批次的 默认环境变量 和各个服务器的 专属环境变量 来灵活地调整当前启动批次的服务器各自的启动参数。
10. Func Stateful的服务器用量统计中的"台∙小时"是什么含义?
在 Func Stateful 的实际使用过程中,服务器的实时运行数目会根据伸缩策略自动缩/扩容,所以在计算 Func Stateful 的用量和费用时,我们采用了更加灵活和合理的计算策略:
我们会以小时为区间,统计您在该小时内所使用的服务器数目,并对每小时的服务器用量进行累计作为计算费用的依据。如果在运行过程中触发了服务器伸缩策略的阈值,那么在后续的每小时的用量累计中,将只会以缩/扩容后实际在运行的服务器数目为准。
新用户在试用阶段可以免费启用最长存续时间为 1 小时的服务器,便于您进行应用的开发、接入和测试。游戏服务器超出试用时长将会自动删除。成为 正式用户 以后,服务器将不会存在超时限制。如需开通完整权限请 联系我们
11. 启动 Func Stateful 服务器时的"环境变量"和"自定义变量"有什么区别吗?
在启动服务器时,可以通过 环境变量 向服务器传递参数。在实际通过Func Stateful开发游戏服务的过程中,可以根据业务需求来设计具体的 环境变量 来传递参数(参见问题9)。以Golang为例,在服务器程序中可以通过os.Getenv("变量名")的形式来获取启动服务器时所传递的参数。
自定义变量 用来自定义服务器的一些标签和特性,例如服务器的状态(火爆,空闲等状态),地域信息和区服号等服务器相关信息。相较于服务器的标签,我们希望通过自定义变量给用户提供更加灵活和可拓展的服务器标识,来满足不同的业务需求。游戏客户端在通过 Connect 连接服务器时,可以通过标签或者自定义变量(参见 客户端连接 的API说明)对目标服务器进行相应的筛选。
12. 请问Func的逻辑服支持玩家信息和玩家存档等数据管理吗?
Func Stateful 不支持数据持久化地存储和维护,因此,您需要在 Func Stateful 的逻辑服中接入额外的数据存储和管理服务。针对玩家信息管理,UOS 已推出了玩家通行证服务 Passport;针对玩家存档和游戏数据管理,UOS CRUD Storage 及其子产品 CRUD Save 现已上线。针对您的实际开发需求,您可以参考 Passport 文档 或者 CRUD 文档 来实现在 UOS 平台上的一站式托管,来收获更加高效的部署和运维体验,获取更令人心动的费用折扣。
13. 小程序/小游戏真机无法正常使用?
问题描述:服务在Unity编辑器,小程序/小游戏开发工具中均可正常使用,但真机环境下小程序无法正常访问服务器。
解决方案:请添加域名 https://func.unity.cn 至平台白名单。
14. Function Stateful 内网模式是什么?
Function Stateful 支持将app设置为内网模式,处在内网模式中的服务器只能获取到服务器的内网IP, 内网模式中的服务器也无法访问外部网络,因此也不会产生外网流量。
这样就可以实现游戏服务器的网关模式架构,用户可以把一个app作为网关服务器,专门作为路由承接客户端的外网流量,然后新开不同的app用作不同的逻辑服务器,逻辑服务器开通内网模式,在网关服务器上通过内网IP连接不同的逻辑服务器,在网关服务器调用逻辑服务器的相关接口的时候就会走内网流量,逻辑服务器也可以隐藏在网关服务器的后面,不会暴露给用户端。
可以 联系我们 来给app开通内网模式并且打通不同app之间的内网联通。