Serverless AI训练营:课时1:Serverless 解构在线游戏行业痛点(二)
课时1:Serverless 解构在线游戏行业痛点(二)
总之,函数计算简化了代码的部署和管理,使开发者能够更专注于编写核心业务逻辑,而无需担心底层的服务器管理和可用性、稳定性问题。
弹性执行环境,是指在百毫秒级别快速执行函数的能力。尽管还有其他产品,例如阿里云的Elasticsearch等,也有自动扩展策略,但它们通常在秒级或分钟级扩容,而我们的函数计算可以在百毫秒内实现。这对于需要同步调用和低延迟响应的业务非常重要。否则,您可能需要处理更多的运维工作。
关于计费,函数计算采用按量计费的方式。即您只支付您实际使用的计算资源,以内存和执行时间的乘积为基础。这意味着您不会浪费任何计算资源,只需支付您真正使用的部分。
我想简要提一下编程语言的选择,例如Java,它支持多种编程语言,这使得编写和部署函数变得非常方便。
三、高弹性战斗结算业务
在游戏开发中会出现的场景:
首个示例是游戏中的战斗结算。这通常是一个计算量较大的场景,因为它涉及到复杂的计算。
例如,计算玩家造成的伤害。在高峰时刻,如开幕式或活动期间,可能会有大量的玩家参与,导致计算量急剧增加。此外,防作弊也是战斗结算的一部分,以保护游戏的公平性。
防作弊涉及到客户端和服务器之间的数据验证,以确保玩家不会使用作弊器或修改游戏数据。虽然客户端可能会进行一些预处理,但最终的结算必须在服务器上完成,以确保公平和延迟控制,因为玩家不能等太长时间来获取结果。
我们可以看到左下角的图表,让我们回顾一下昨天提到的一个业务场景,即"卖家秀",这也是一个CPU密集型的场景。
在这种情况下,通常会将CPU密集的任务从主要逻辑中分离出来。如果没有使用函数计算,以前的做法可能会涉及到管理一组专门用于执行结算的服务器。
这就类似于我们昨天讨论的转码场景,但是这些服务器需要自己维护和管理。此外,它们的扩容速度通常是秒级或分钟级的,无法满足业务的需求。
举个例子,业务可能要求在早上8:00时突然出现大量请求,请求量直接上升了两倍。在这种情况下,如果没有提前准备好足够的服务器,很可能会导致超时等问题。
函数计算具备百毫秒级的弹性扩展能力,可以根据需要快速调整计算资源。在之前的案例中,我们可以看到延迟时间在250毫秒到300毫秒之间,而且它在高峰后很快恢复正常。这说明函数计算的核心价值在于高弹性和高可用性
另一个案例是战斗结算系统,它需要不断迭代以满足游戏平衡的需求。函数计算提供了版本控制的能力,使得平稳过渡和灰度发布变得更加容易。
总之,在这个案例中,我们看到了如何使用函数计算将CPU密集型的计算任务分离出来,同时利用百毫秒级的弹性伸缩特性,实现高弹性和高可用性。这个图表展示了业务峰值时所需的计算资源。
如果没有使用弹性的产品,采用传统的方法,我通常会留出更多的计算资源,以应对可能的峰值。
在这种情况下,我们可以看到这个区域,也就是额外的计算资源,实际上是被浪费的。这种情况下,计算资源的利用率不高,造成了成本的浪费。
另一种方法是采用预测性的策略,它也提供一些弹性能力。例如,可以定期采集CPU利用率等指标,如果CPU利用率连续三分钟达到70%,就可以触发扩容操作。
然而,这种方法有一定的延迟,而且在实际情况下可能无法及时响应计算需求。
与之相比,函数计算的特性更加灵活,它可以根据实际需求动态伸缩,并准确反映资源的使用情况,从而降低了成本。
综上所述,函数计算是一种具有弹性的服务,特别适用于需要应对峰值需求的场景,例如刚提到的战斗结算。
四、实现大规模游戏营销