江娱互动「世界争霸」产品迁移至腾讯云云函数的实践

2023-10-11 07:10

本文主要是介绍江娱互动「世界争霸」产品迁移至腾讯云云函数的实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

社交,是游戏玩家的一项基本需求,那么,在游戏中,成熟稳定的聊天系统担负着玩家交流的重要使命。

做为一家从不 996 的游戏创业公司,我们的两款产品《世界争霸》和《农场小镇》都在使用自研的聊天系统。随着在线人数逐渐增多,系统的稳定性和成本面临着更多的考验。于是,升级技术栈势在必行。

至此,核心目标已经出现,以保障性能为前提,同时做到省事和省钱。最终,腾讯云的云函数产品进入了我们的视线。

云函数,无需服务器,省去运维烦恼,只需要关注于业务逻辑代码,可谓省事。按量付费,用多少花多少,避免业务低谷期的资源浪费,可谓省钱。非常适合游戏聊天系统 API 这种复杂度低的中小型需求。

那么接下来我们关注的是,现有系统能不能无缝迁移过去,也就是云函数能不能满足目前所有的特定需求,我们一个一个来说。

第一个需求:少改代码

原来的 API 部分是采用 swoole 做为底层扩展,部署在腾讯云的 CVM 上,并使用腾讯云的负载均衡来接收外部请求。代码层面则是使用了 composer 进行包管理,一款开源的 easyswoole 框架做为 http 业务的架子。

换用云函数的方案的话,非代码层面就变成了腾讯云 API 网关加云函数来提供服务,而为了方便,依然需要继续使用 composer 进行包管理。原来基于 swoole 的 http 框架无法继续使用,改代码的重点就在这里。

首先就是逻辑入口。我们需要确保用一个云函数来处理所有请求,毕竟云函数个数是有限的,而业务需求是无限的。

那么入口其实就只是一个路由而已,而我们需要做的,就是定义一种简单的路由格式,并在云函数入口代码处得到需要的信息,并转给原有的类进行处理,并返回特定的内容。

以下是一个简单的 url 格式例子:https://url/controller/action?query

只需要解析云函数给出的 path,就能得到 controller 和 action,做一些判断后,调用相应类的方法,然后返回。基于这样的入口,原有的逻辑处理类就可以被调用到了。

其次,需要处理一下原来的逻辑处理类的父类,弃用框架后需要自己来做一个基本功能的父类,比如获取 querystring 内容、解析 body,返回统一格式的返回值等,这里就不细说。

这篇关于江娱互动「世界争霸」产品迁移至腾讯云云函数的实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/186395

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和