百万用户同时在线游戏服务器架构实现.pdf

百万用户同时在线游戏服务器架构实现.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
百万用户在线网络游戏服务器架构实现 一、 前言 事实上100 万游戏服务器,在面对大量用户访问、高并发请求方面,基本的解决方案集 中在这样几个环节:使用高性能的服务器、高效率的编程语言、高性能的数据库、还有高 性能的架构模型。但是除了这几个方面,还没法根本解决面临的高负载和高并发问题。 当然用户不断地追求更高的机器性能,而升级单一的服务器系统,往往造成过高的投入 和维护成本,性价比大大低于预期。同时全天候的可用性的要求也不能满足要求,如果服务 器出现故障则该项服务肯定会终止。所以单独追求高性能的服务器不能满足要求,目前基本 的解决方案是使用集群技术做负载均衡,可以把整体性能不高的服务器做成高可扩展性 , 高可用性,高性能的,满足目前的要求。 目前解决客户端和服务器进行底层通讯的交互的双向I/O 模型的服务器的成熟方案。 1.windows 下,比较成熟的技术是采用IOCP,完成端口的服务器模型。 2.Linux 下,比较成熟的技术是采用Epoll服务器模型, Linux 2.6 内核中提供的System Epoll 为我们提供了一套完美的解决方案。 目前如上服务器模型是完全可以达到5K 到20K 的同时在线量的。但5K 这样的数值离 百万这样的数值实在相差太大了,所以,百万人的同时在线是单台服务器肯定无法实现的。 而且目前几个比较成熟的开发框架,比如ICE,ACE 等。这样,当采用一种新的通信技术 来实现通信底层时,框架本身就不用做任何修改了 (或修改很少),而功能很容易实现, 性 能达到最优。目前采用的ace 框架个不错的选择方案,可以不受操作系统的影响,移植比较 方便。 对于数据库选择可有许多成熟的方案,目前大多数选择的mysql Master/slave 模式,以 及oracle RAC 方案。基本可以满足目前的要求,但具体的瓶颈不是在数据库本身,应该还 是硬件磁盘I/O 的影响更大些。建议使用盘阵。这有其他成熟的方案,比如采用NAS 解决分 布数据存储。 其实最为关键的是服务器的架构和实现,数据流量的负载均衡,体系的安全性,关键影 响度,共享数据的处理等等多个方面对100 万用户的数据处理有影响,所以都要全面的考虑。 二、 高性能的服务器 1. 网络环境 目前采用Client/Server 架构来开发网络游戏,客户端和服务器一般通过TCP/UDP 协议进 行通信,关键瓶颈很明确--游戏服务器与客户机之间的链路。目前单机环境比较好些的是,2 块1000M 网卡,20K 客户端,并发提供每个客户端的带宽是2000/20K=100KB/s,这是理论 值,勉强可行。如果这样实现目前肯定有成本和性能问题。特别是用户响应时间已经超过他 们的忍受范围。为了避免瓶颈许多游戏厂家一组限制用户上限为 100M/5k~10k。即用户 100KB/s。 而客户的网络情况也要考虑。这就也提出尽可能减少传输数据。 这需要测试评估网络吞吐量和延迟需求,以便对服务器的用户数和带宽做评估。 网络部署中还要考虑网络拓扑情况。内网和外网要分不同的交换机,避免出现网络瓶颈。 还要考虑网络图朴情况的优化。比如每组几台使用一个交换机做流量分配。 2. CPU 和内存的参考 目前要求高处理能力,高带宽,低存储容量 主要考虑的瓶颈问题应该是 问题,一 。 I/O 般情况时采用双路 或多路,而且服务器专用内存已经很好的解决了 瓶颈。实际测试 CPU I/O 如果几千人同时在线的话, 和内存需求都很低,目前一般服务器都可以满足要求。 CPU 3. 负载均衡 所以必须要采用多台服务器的架构方式,但出现了均衡负载和分布架构的问题,可以通 过下面几种方式解决。 A. 硬件负载均衡设备 常用的F5 等负载均衡器,很好的解决了负载均衡的问题。一般这种设备投资比较高, 但部署容易,而且支持分布式架构。 B. 集群系统 集群系统增长了系统可用性(availability)和冗余(redundancy) ,也提供了容错(fault tolerance)。使用集群可以分布请求以便多个服务器

文档评论(0)

131****9010 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档