写点什么

腾讯游戏服务亿级用户,300 款在线产品的运维建设 —— 实战篇

  • 2015-08-07
  • 本文字数:2025 字

    阅读完需:约 7 分钟

引言

随着 IAAS、PAAS 的不断演化,传统运维的工作不断被“云”所代替,在“云”时代的运维,服务才是未来、核心竞争力,本篇以实战经验为主,介绍覆盖全部游戏类型,业务数量达 300 款以上的腾讯游戏运维服务如何落地,并向智能运维服务方向迈进。

服务建设的关键转变:站在业务的角度看运维

运维团队从自身出发看问题,往往容易陷入到我需要什么工具,需要学习怎样的开源技术解决我目前的问题,这个在运维初期进行标准化,自动化建设的时候,非常关键。但是到了运维服务阶段,我们需要关注我们所负责的业务(产品)关心的是什么,以业务驱动技术的优化和探索。

接下来以游戏运维工作中最常见的游戏合服、游戏登录、版本发布三个业务场景来分享游戏运维服务建设从那里开始。

游戏合服:随着游戏世界中玩家的自然流失,游戏热度将会逐渐减低,严重的会影响游戏内的玩法和用户体验,通过合服,寻找两个或多个热度较低但是非常匹配的服进行合并,使玩家可以在一个相对比较健康的游戏环境中得到较好的体验增加玩家之间的交互,同时从技术的角度也可降低业务侧的服务器成本。

游戏登录:游戏登录较普通的 WEB 登录差别较大,需要经过客户端升级、文件校验、帐号认证、选区和正式进入游戏等多个步骤。整个登录过程涉及到包括 CDN、版本服务(客户端版本控制)、帐号后台、目录服务(大区管理)、游戏后台 server、游戏客户端和网络环境在内的多个模块,任何一个环节出现异常都可能会导致登录失败。

版本发布:版本是游戏的主线,传统游戏运维,重点关注发布、BUG、故障处理的阶段,往往运维较大的精力也会放在发布期间的效率和质量优化。而从游戏业务本身出发,需要以版本为主线,从版本转测开始,关注版本发布前的版本质量以及版本准备过程中对发布时长的优化,在版本发布环节,注重发布质量,发布策略,发布效果,用户影响时长等多方面完成版本的发布动作,在发布完成后,需持续实时跟踪版本稳定性,从在线的恢复速度反馈运维发布能力。

服务建设痛点挖掘:数据驱动、闭环服务

整个运维服务建设中,一直遵循通过数据驱动,采集各个业务环节的数据,通过数据反馈业务场景问题,并且通过闭环服务使得服务形成自循环优化,借此不断提升游戏运维核心竞争力。结合游戏业务实际场景,如何做到。

游戏合服:

  • 首先需从多业务指标维度中进行筛选合服因子,比如开服时间、封印等级、战力指数等等,如加上服务器,因子指数翻倍,并且需要综合考虑玩家的地域、网络因素;
  • 具备历史追踪,经验复用,规避失败合服决策;
  • 跟踪实施步骤耗时,并且多个合服需求同时处理,通过自动化降低人工操作,规避风险。

游戏合服服务框架:

游戏登录:

  • 登录体验的衡量,由于涉及模块繁多,玩家的客户端环境也复杂多变,每时每刻都会有登录失败的玩家存在,如何不被这些个案迷惑,整体地衡量登录体验是否正常就成为一个非常重要的问题。我们在采集每一个步骤的登录状态及耗时的基础上,成功率和耗时两个指标来评估玩家的登录体验,同时结合登录异常的分布情况(如某段时间在某个纬度中集中出现某类登录异常)得出综合的登录体验健康度分数,当集中的登录异常出现时能够及时发现,而不是被平均的登录成功率指标所掩盖。

  • 登录体验异常的原因定位,服务器故障或网络波动的引起的故障,系统可以直接进行判断,但更多的时候是单用户(没有直接的共性联系)的异常,这时就需要通过多纬度的对比(比如玩家所在省份、运营商、大区甚至跨业务的对比)来进行问题原因的定位。 游戏登录服务框架:

版本发布:

  • 版本质量衡量体系建设,采用维度异常分数衡量法,与现有大部分云平台或电脑管家类健康度衡量方式,即实时采集各维度发生异常为质量影响体现,版本衡量维度分布以及关联(数据为实时采集):
    • 优化分服务体现:
    • 在线恢复时长:

服务建设技术实践:持续集成、复用轮子

服务效果通过数据衡量,接下来更多考虑如何能够利用底层的标准化以及各类自动化工具,为顶层的服务提供支持,特别是利用好 IAAS、PAAS 提供的各类支撑能力。

  • 业务运维团队将业务逻辑导入服务引擎通过此驱动整个服务运作,其中自动化调用蓝鲸标准化场景工具进行实施;
  • 海量数据的处理,数据量级达到数十亿的规模,通过采集数据的标准化,并借助 Strom、Solr(蓝鲸实时计算平台)等实时分析、检索平台,实现秒级的数据采集、分析、入库和检索,分钟级运算;
  • 根据服务效果驱动技术的演进,采纳各类开源技术(下载加速、P2P、负载均衡、反域名劫持、CDN 加速等等)并组合应用;

游戏合服业务案例截图:

游戏登录业务案例截图:

版本发布业务案例截图:

以上仅为腾讯游戏运维服务三个场景下的实践分享,在此抛砖引玉,希望能够跟业界进行更多的讨论和实践,特别是进一步组合更多服务策略迈向“智能”运维服务。


感谢赵锐龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-07 08:102570

评论

发布
暂无评论
发现更多内容

【LeetCode】分割数组Java题解

Albert

算法 LeetCode 10月月更

MapReduce作业生命周期

穿过生命散发芬芳

mapreduce 10月月更

云端软件运行,小程序安全沙箱技术为端侧安全保驾护航

Geek_99967b

小程序

Vue3, setup语法糖、Composition API全方位解读

yyds2026

Vue

企业文档过多如何管理?文档协同能够帮到你

Baklib

文档 文档管理

低代码无代码区别在哪?通过这5点来区别准没错

优秀

低代码 无代码

Opencv 图像处理:数字图像的必会知识

timerring

OpenCV 计算机视觉 10月月更

有没有完全自主的国产化数据库技术

王磊

观察者模式的基础原理

阿泽🧸

观察者模式 10月月更

SegmentFault 思否发布开源问答社区软件 Answer

万事ONES

Java领域又一神作!《凤凰架构》仅开源3小时,竟遭受Github万人哄抢

程序员小毕

程序员 架构 分布式 程序人生 系统设计

“程”风破浪的开发者|APP自动化效果测试工具

芯动大师

学习方法 “程”风破浪的开发者 手机APP测试

2022-10-24:以下go语言代码输出什么?A:3 3;B:3 4;C:0 0;D:0 1。 package main func main() { m := make(map[int]int

福大大架构师每日一题

golang 福大大 选择题

Java实现随机人名抽取

魏铁锤

10月月更

【愚公系列】2022年10月 Go教学课程 038-异常处理

愚公搬代码

10月月更

当我遇到10亿参数组合

FunTester

C# 线程的优先级

IC00

C# 学习 程序员 上位机 10月月更

C# 快捷菜单ConTextMenustrip控件学习

IC00

C# 学习 程序员 上位机 10月月更

一个“简单”的面试题:什么是环回地址127.0.0.1?

wljslmz

10月月更 127.0.0.1 环回地址

知识管理是团队的心脏,让企业管理更上一层楼

Baklib

文档 文档协同

大家都在“卷”的推荐系统还有进步空间吗?看技术大牛们怎么说

小红书技术REDtech

Java之抽象类

魏铁锤

10月月更

Vue.nextTick核心原理

yyds2026

Vue

Java | if语句和循环结构

陌上

ide Java、 10月月更

Spring Boot「13」使用 Actuator

Samson

Java spring 学习笔记 spring-boot 10月月更

“程”风破浪的开发者|我是如何快速学 Go 的?GoFrame 只用了 3 天时间就从小白变大佬?

王中阳Go

Go golang 学习方法 10月月更 “程”风破浪的开发者

DevOps|1024程序员节如何做?介绍下我的思路

laofo

DevOps 研发效能 1024程序员节 快手

算法题学习---链表内指定区间反转

桑榆

算法题 10月月更 C++

Zookeeper的服务器的log4j升级为log4j2的升级方案(忽略配置化兼容问题)

码界西柚

zookeeper

Spring Boot 应用使用 application.yml 和 application.properties 的区别

汪子熙

Java mvc spring springboot 10月月更

1024里的小温暖,用技术让生活变得更美好!

阿里技术

1024程序员节

腾讯游戏服务亿级用户,300 款在线产品的运维建设 —— 实战篇_服务革新_KemHong_InfoQ精选文章