TARS在龙图游戏的应用
Company: 龙图游戏
Location: 北京
Industry: 游戏

CompanyThe Foundation

龙图游戏成立于2008年,总部位于北京,在深圳、天津、首尔等多地设立分Company,深耕网络游戏研发和运营业务,是国内实力游戏开发商和运营发行商。旗下《魔法门之英雄无敌:王朝》、《热血江湖》手游、《小冰冰传奇》、《奇迹:最强者》、《新剑与魔法》、《小熊爱消除》等多款热门游戏,深受玩家喜爱。

为什么选择TARS

Company研发线较多,不同研发团队使用的语言、平台多有不同,Company没有一套统一的技术框架,面临的问题是团队之间开发沟通效率低,运维成本高。另外有的团队自己实现的 RPC 调用的性能也存在问题。
TARS有 C++/Node.JS/Java/PHP/Golang 等多个语言版本,能够打通Company各团队技术语言障碍。同时它的 RPC 的性能经历了腾讯和其他厂商的严苛考验,测试结果也非常好,其自带的运维平台,可以让开发只关注逻辑,容灾/发布/监控/调度完全做到自动化。

Company业务使用TARS现状

到目前为止,Company尚在高速的推进游戏研发过程中,对 TARS 的使用主要在预研其语言支持程度、RPC性能提高上,后期会在改进服务调用、网络协议性能上More的使用 TARS。运营支持团队使用 TARS 对部分服务进行了改造,经测试性能有了较大提升。同时我们对 TARS 在容器的使用方式、Kubernetes 上的部署方法都进行了探索,这些成果也都贡献给了 TARS Community。

对 TARS 框架的性能测试

我们实现了使用 go 语言的带 redis 缓存的服务端;gRPC 目前 PHP 只支持客户端,所以使用它的开发方式生成了 PHP 客户端代码 ad_grpc.php 并实现了跟之前同样 ad.php (使用tars)的逻辑(同时加入了客户端 redis 缓存)。从压测的结果来看

  1. gRPC 服务是比较稳定的,没有失败;
  2. 服务耗时也比较稳定,但是比较使用纯 php 和使用 tars 要多出 3-8 倍时间,比未使用 redis 缓存的 gRPC 测试结果提升有限;
  3. PHP 客户端(Nginx)的系统开销仍然很高,已经尝试了一些优化,可能优化的方式还需要调整;
  4. Mysql 服务器的压力小,连接数13个。

综合无缓存 gRPC 测试结果和这次测试结果,从开发方式来看,gRPC 的开发过程与 Tars 类似,在定义好消息接口后使用工具自动生成服务端和客户端的桩代码,开发者只需要实现接口以及调用接口;从部署方式来看,Tars 的要更完善一些,而且 Tars 提供了 web 界面来进行服务治理,gRPC 应该需要自己开发实现;从 PHP 客户端开销来看,gRPC 更高,对比 Tars 没有优势。

图片 1.png

图片2.png

总结

TARS 是一个高性能的RPC 框架,对不同语言的支持都非常友好,同时有着活跃的Community,如果Company团队较多、使用开发语言不统一,在协调构建Company微服务体系时,TARS 是一个很好的选择。