大规模游戏平台云缓存技术研究与实践

在数据呈爆炸性增长的时代,云计算与大数据技术的重要性不言而喻,对海量数据的挖掘、分析与应用已成热点。本次专题在着重探讨电信运营商该如何发掘大数据价值、拓展新型增值业务的基础上,亦提出了大数据在金融、旅游等领域的具体应用。此外,有关云缓存技术、大数据融合建设的研究在专题中也有所体现,希望通过本次专题为云计算与大数据的发展提供一些思路与建议。

【摘 要】传统的缓存处理机制难以满足互联网业务高并发、高性能的需求,因此提出了动静结合的多级云缓存架构,可支持大规模数据存储和快速检索查询服务,并基于一致性哈希算法,实现了对多分布式服务节点的统一管理和调度效率提升,最后通过在大规模游戏业务平台开展的实践,验证了平台性能和访问速度的大幅提升。

【关键词】大规模游戏平台 云缓存 数据存储

中图分类号:TP399 文献标识码:A 文章编号:1006-1010(2016)05-0005-05

1 引言

近年来,以游戏、视频为代表的移动互联网应用高速发展。与传统电信应用相比,大型移动互联网应用具有以下特点:

(1)高并发、大流量:数以亿计规模的高并发用户,长时间的大流量访问;

(2)海量数据:存储、管理海量数据,需要使用大量服务器;

(3)用户接入环境复杂:面向全球用户提供服务,用户网络环境千差万别;

(4)短时间用户增长迅速,急需大量资源;

(5)产品复杂多样,需求快速变更。

为了满足多网络用户快速接入需求,提升用户体验,传统电信业务平台多采用内容分发(CDN,Content Delivery Network)缓存机制。但动态缓存数据管理较为复杂,缺乏灵活性,无法满足快速增长和超高的游戏业务峰值并发服务需求。

基于此,本文接下来将提出动静结合的多级云缓存框架,以适应大规模移动互联网业务平台的承载需求。在传统CDN文件缓存基础上引入Varnish静态缓存、基于MAP的本地动态缓存和Redis远程动态缓存,构建多级云缓存,并通过实践证明其实现了高性能I/O吞吐能力,减少了服务器和核心数据库的交互次数,提高了接口访问速度和并发量。同时将缓存处理逻辑封装,面向应用层业务需求统一开放接口,提高了上层应用开发效率。

2 动静结合的云缓存架构

常见的互联网业务多采用分布式的内容分发缓存机制。在中国电信、中国移动、中国联通网络中部署服务器节点,以某一节点为中心,实现多节点间的数据共享和同步。不同网络的用户可以就近接入CDN节点,快速、高效地获取应用内容。基于CDN机制的缓存架构图如图1所示:

在实际业务运营中,传统的CDN缓存机制对动态缓存数据管理较为复杂,缺乏灵活性。尤其是新业务上线时,需要大量人力检查并修改缓存文件,给业务快速部署和服务灵活提供带来了严重的挑战。

针对上述问题,本文提出了动静结合的云缓存架构,以满足高并发的移动互联网业务承载需求。该架构具备横向扩展能力,相对上层业务系统透明,可根据业务的发展,平滑扩展存储性能与容量,动态满足业务需求,有效地提升系统资源利用率。系统架构如图2所示:

中心数据库采用关系型数据库MySQL和非关系型数据库MongoDB。本地动态缓存采用MAP内存处理技术,远程动态缓存采用Redis技术;本地缓存和远程缓存之间通过事件驱动模型实时更新和维护数据;采用XML标记语言,以标准格式封装缓存处理逻辑以及各种查询、数据同步、容灾备份等统一数据服务的业务逻辑,并以Java接口方式封装成API,提供给相关业务统一调用。各种业务调用缓存机制后,输出结果采用静态缓存Varnish技术进行加速,以提升效率。

通过对缓存处理逻辑的封装,为应用业务层提供了统一的存储访问接口,使开发人员从繁杂的缓存维护同步工作中解脱出来,专注于业务开发,从而提高了开发效率,减少了由于缓存数据维护不一致而导致的系统漏洞和缺陷,提升了系统稳定性。

3 关键技术方案

3.1 静态缓存和动态缓存机制

在静态缓存方面,采用高性能的开源HTTP加速器Varnish技术,缓存静态页面和一些重要业务的静态数据。Varnish基于内存进行缓存,性能好,单台服务并发可达到5000次/s。采用反向代理Web容器定期维护缓存数据。当Tomcat服务器出现故障时,可自动切换到Varnish,提高了平台的稳定性。

在本地动态缓存方面,将用户访问频繁的静态数据备份到本地基于MAP的内存缓存中,以减少网络I/O的消耗,提高平台的并发量。

本地缓存中各集群节点的数据维护采用组播技术实现。所有节点均为对等模式,节点自动发现,不存在主节点选举。每个节点都维护一份集群成员表,新节点加入时,通知集群其他成员更新成员列表,以便每个节点都能及时更新成员列表。如图3所示,节点1、节点2、节点3分别维护一份成员列表,定期通过组播更新自己节点消息,当节点4新加入集群组时,向节点1、节点2和节点3组播自身的节点消息,节点1、节点2和节点3接收到该信息后,将节点4加入到其成员列表中。同时,节点1、节点2和节点3也不断向集群发送其节点消息,节点4接收后将依次更新成员列表信息,最终达到四个节点均拥有四个节点成员信息。当任意机器数据发生变更时,则将变更数据发送给其他机器,保证各机器数据的一致性。

远程动态缓存采用Redis技术。与Memcached类似,Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set:有序集合)和Hash(哈希类型)等。

游戏业务实践中,Redis缓存采用主从读写分离技术。在大并发业务需求(如游戏APP集中下载、活动集中参与等)时,使用多台服务器作为Redis服务器,并采用“多级服务器集群架构”和“主从模式”对服务器设备进行管理。设定一个主服务器负责数据写入,多台从服务器负责数据读取。主服务器和从服务器之间通过Redis server端实现数据同步。各Redis服务器也采用分布式,Redis客户端负责选择连接到哪台服务器,无需人工干预。 通过分级动态缓存技术,极大提升了平台的服务能力。游戏业务单台服务器并发可达到7000次/s,命中率可达90%以上。

3.2 本地缓存与远程缓存机制

本地缓存保存一些常用的基本数据和少量列表信息,以减少调用远程缓存服务器及数据库的压力。同时为了控制内存的占用量,在处理之前需要评估缓存信息大小。当缓存的信息总量超过预设的内存大小时,使用近期最少使用(LRU,Least Recently Used)算法,对内存中缓存的信息进行替换。目前仅这一层的访问命中率可高达90%以上,保证了接口的整体访问速度在200ms以内。

远程缓存主要用来保存数据库各表之间的对应关系,以代替传统的数据库查询功能,实现业务快速查询和处理响应。

为了实现缓存处理逻辑层的统一封装,需要将多台机器的缓存信息同步,实现本地缓存与远程缓存之间的信息更新。在游戏业务实践中,通过事件驱动模型实时更新/维护缓存数据。具体实现过程如图4所示。

数据查询采用本地缓存、远程缓存、核心层本地缓存、核心层远程缓存、数据库的查询流程。在远程缓存没有命中时,将查询中心数据库,查询结果将保存在本地缓存和远程缓存中。在数据保存在本地缓存后,将以异步的方式发送给其它节点机器实现同步。

采用了创新的云缓存框架后,平台业务应用接口最高不超过300ms,90%在100ms以内,缓存刷新延迟不超过500ms。

3.3 改进型的一致性哈希映射算法

普通的Hash方法在数据缓存处理时存在问题。例如,以key%N的方式将数据映射到具体的服务器物理节点上,其中key是数据的key,N是服务器节点数。如果有一个机器加入或退出这个集群,每一个服务器缓存节点都必须进行数据迁移,数据的缓存命中率将大幅降低。

本文采用改进型的一致性哈希算法,以降低缓存节点变化对缓存命中率的影响。如图5所示,实际部署4个物理节点,将数据按照key的哈希值分布到100个虚拟节点上,以N=Hash(key)%100的方式计算分配每个物理节点,配置Hash值权重。N为0 19时,则数据落到Node1节点上;N为20 39时,则数据落到Node2节点上;N为40 59时,则数据落到Node3节点上;N为60 99时,则数据落到Node4节点上。

如图6所示,如果Node4节点负载过大,则添加Node5节点,调整中只会影响Node4节点的缓存命中率,从而实现缓存节点平滑地添加与删除。

4 应用效果

本文的研究成果在中国电信爱游戏业务平台中开展了应用实践。

在未采用云缓存机制前,爱游戏业务采用互联网传统处理机制,利用关系型数据库保存业务的基础数据、用户访问日志以及经营分析数据等。在实际业务运营中,该架构无法满足高并发、高性能要求。以用户下载为例,缓存的命中率较低(仅为30%),实测的平均下载速度小于100kb/s,请求返回延时较大,特别是在服务高峰期,经常出现服务超时、连接不成功等问题,用户体验较差,流失率增高。

在采用本文提出的云缓存架构进行平台升级后,静态缓存命中率达95%,动态数据缓存命中率达90%,中心数据库仅需处理其中5‰的业务量。中心数据库无需直接面对用户请求,服务能力提升了200倍,大幅提高了整个系统的吞吐量。对于一个复杂的列表页面请求,原机制下响应时间需800ms左右。升级后命中一级缓存(静态页面),响应时间不到10ms,加快了数据访问速度,提升了用户体验。

5 结束语

随着移动互联网业务的快速增长,迫切需要使用缓存技术优化提升平台性能。本文利用Varnish、Redis等开源互联网技术,构建了动态缓存和静态缓存相结合、本地缓存和远端缓存相结合的多级云缓存体系,可大幅提升业务平台承载能力,满足海量数据存储和用户高并发量访问的需求。研究成果已应用于爱游戏平台优化升级,提高了缓存命中率、减少了中心数据库的I/O访问压力、降低了用户的访问时间、提升了用户体验。

参考文献:

[1] 邱祝文. 基于redis的分布式缓存系统架构研究[J]. 网络安全技术与应用, 2014(10): 52.

[2] 王心妍. Memcached和Redis在高速缓存方面的应用[J]. 无线互联科技, 2012(9): 8-9.

[3] 曾泉匀. 基于Redis的分布式消息服务的设计与实现[D]. 北京: 北京邮电大学, 2014.

[4] 秦秀磊,张文博,魏峻,等. 云计算环境下分布式缓存技术的现状与挑战[J]. 软件学报, 2013,24(1): 50-66.

[5] 贺琛,陈肇雄,黄河燕,等. Web缓存技术综述[J]. 小型微型计算机系统, 2004,25(5): 836-842.

[6] 赵玉伟,赵小雨,乔木,等. 缓存技术在B/S架构信息系统中的应用[J]. 计算机工程, 2008,34(1): 233-235.

[7] 杨传栋,余镇危,王行刚,等. 一种流媒体CDN的内容部分推送策略[J]. 计算机工程与应用, 2007,43(25): 162-164.

[8] 周江. 面向大数据分析的分布式文件系统关键技术[J]. 计算机研究与发展, 2014(2): 382-394.

[9] 戴伟,胡鹏. 基于缓存回收的成本节约云服务算法研究[J]. 计算机应用研究, 2015,32(10): 3138-3141.

[10] 方晖. 基于能效控制的DctAF框架式云缓存技术[J]. 科技通报, 2014(2): 77-79. 

展开阅读全文

页面更新:2024-02-28

标签:论文   哲学论文   科技哲学   缓存   节点   静态   服务器   数据库   业务   动态   数据   用户   平台   技术   游戏

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top