无客户端模式

最近更新时间:2024-05-31 16:29:31

我的收藏
无客户端模式是云渲染中一种特殊的连接模式,在该模式下,云渲染实例可以不依赖客户端进行会话创建、保活等操作。本章指南主要介绍了无客户端模式的使用方式。

无客户端实例的创建与销毁

在使用无客户端模式时,可以在无客户端交互的情况下,创建云渲染实例。整个流程以及实例生命周期的维护都由客户业务后台进行控制。

时序图



步骤说明

1. 业务后台通过云渲染 API 调用 ApplyConcurrent() 申请云渲染实例并发,云渲染应用后台收到请求后,如有空闲并发会锁定实例。
注意:
调用 ApplyConcurrent() 时指定的 UserId 将和申请到的实例相绑定,后续调用其他接口时,通过设置该 UserId 来指定对应无客户端实例。
2. 业务后台申请云渲染实例成功后,通过云渲染 API 调用 CreateSession() 接口,并将 RunMode 参数设置为RunWithoutClient,以无客户端模式启动该次会话。云渲染应用后台收到请求后将在对应实例上启动应用。
3. (可选)在以无客户端模式成功启动会话后,业务后台可以调用直播转推接口,将云上画面进行推流。
4. 当连接生命周期结束时,业务后台通过云渲染 API 调用 DestroySession() 接口,指定 UserId 销毁对应无客户端模式并发,云渲染应用后台收到请求后,会强制销毁并回收对应实例。
注意:
在使用无客户端模式时,云渲染实例的生命周期将完全由业务后台决定,云渲染应用后台不会自动回收并发。如不调用销毁会话的接口,云渲染实例将无期限的运行下去。在无客户端模式运行过程中,云渲染实例不会进行应用重启,版本更新,环境清理等维护性操作,故在接入无客户端模式时,业务后台一定要考虑实际生命周期,在合适的时机调用销毁接口使云端实例强制回收。

适用场景

通过创建无客户端实例,再结合 推流至云直播推流至指定地址 功能,可以适用于以下场景:
当云上应用不需要客户端介入,观众通过直播观看应用画面时,可以使用这种无客户端模式,例如弹幕游戏直播。

客户端连接无客户端实例

已创建无客户端实例的情况下,如有连接客户端交互的需求,可使用申请无客户端实例并发时使用的 UserId,让客户端连接至无客户端模式的云渲染实例进行交互。客户端连接行为不会影响无客户端实例的生命周期,实例的销毁仍依赖客户业务后台调用销毁接口,指定对应 UserId 来销毁指定无客户端实例。

时序图





步骤说明

1. 业务客户端首先要获取 ClientSession,然后通过指定创建无客户端实例时使用的 UserId 向业务后台请求连接,业务后台收到请求后通过云渲染 API 调用 CreateSession() 接口,将客户端信息填入对应参数,云渲染应用后台收到请求后返回 Server Session,业务后台再将对应 Server Session 返回给业务客户端,完成客户端连接。
注意:
使用客户端连接到无客户端模式实例时, CreateSession() 调用中的 RunMode 将会被忽略,ClientSession 为必填项。
2. 关闭客户端的行为不会销毁云渲染实例,后续可以继续用对应 UserId 再次进行连接,且多次连接上的是同一个实例。要销毁对应实例仍依赖业务后台调用 DestroySession() 接口,传入对应 UserId 进行实例销毁。
注意:
无客户端模式下,云渲染实例不会进行应用重启、环境清理的操作,客户端连接到对应实例上时,将看到上一次连接退出时的应用状态。

适用场景

使用无客户端模式,并结合客户端连接实例,可以适用于以下场景:
当希望自定义控制云上应用时,可以使用这种无客户端模式,后续在进行一些维护工作时集中进行连接重建。

容灾措施

使用无客户端模式,通常应用在实例上需要长时间运行,可能还需要长时间推流,所以服务的可用性至关重要。对此,我们采取了以下容灾措施来提高服务可用性:
1、当应用异常退出时,实例服务会将应用重新启动。
2、当实例异常宕机时,后台服务将选择一台新实例并使用相同的请求参数启动应用;如果宕机实例有推流的话,新实例将使用相同的推流地址启动推流。

注意事项

使用无客户端模式时,并发的生命周期完全由客户侧业务后台进行掌控,因此需要保存 UserId 列表。当调用 CreateSession() 成功后,将对应的 UserId 加入到列表中,表示该 UserId 创建了一个实例;当调用 DestroySession() 成功后,从列表中删除对应的 UserId,表示对应的实例已被销毁。UserId 应该是列表的唯一 Key,因为一个 UserId 只能创建一个实例。