游戏服务器架构PPT课件
- 格式:ppt
- 大小:399.00 KB
- 文档页数:17
游戏服务器架构⼀、游戏服务器特征游戏服务器,是⼀个会长期运⾏程序,并且它还要服务于多个不定时,不定点的⽹络请求。
所以这类服务的特点是要特别关注稳定性和性能。
这类程序如果需要多个协作来提⾼承载能⼒,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度容灾需求。
由于多进程协同⼯作,也带来了开发的复杂度,这也是需要关注的问题。
功能约束,是架构设计决定性因素。
基于游戏业务的功能特征,对服务器端系统来说,有以下⼏个特殊的需求:游戏和玩家的数据存储落地对玩家交互数据进⾏⼴播和同步重要逻辑要在服务器上运算,做好验证,防⽌外挂。
针对以上的需求特征,在服务器端,我们往往会关注对电脑内存和CPU的使⽤,以求在特定业务代码下,能尽量满⾜⾼承载低响应延迟的需求。
最基本的做法就是“空间换时间”,⽤各种缓存的⽅式来以求得CPU和内存空间上的平衡。
另外还有⼀个约束:带宽。
⽹络带宽直接限制了服务器的处理能⼒,所以游戏服务器架构也必定要考虑这个因素。
⼆、游戏服务器架构要素对于游戏服务端架构,最重要的三个部分就是,如何使⽤CPU、内存、⽹卡的设计:内存架构:主要决定服务器如何使⽤内存,以最⼤化利⽤服务器端内存来提⾼承载量,降低服务延迟。
逻辑架构:设计如何使⽤进程、线程、协程这些对于CPU调度的⽅案。
选择同步、异步等不同的编程模型,以提⾼服务器的稳定性和承载量。
可以分区分服,也可以采⽤世界服的⽅式,将相同功能模块划分到不同的服务器来处理。
通信模式:决定使⽤何种⽅式通讯。
基于游戏类型不同采⽤不同的通信模式,⽐如http,tcp,udp等。
三、服务器演化进程1、卡牌等休闲游戏弱交互游戏服务器基于游戏类型不同,所采⽤的架构也有所不同,我们先讲⼀下简单的模型,采⽤http通信模式架构的服务器:这种服务器架构和我们常⽤的web服务器架构差不多,也是采⽤nginx负载集群⽀持服务器的⽔平扩展,memcache做缓存。
唯⼀不同的地点不同的在于通信层需要对协议再加⼯和加密,⼀般每个公司都有⾃⼰的⼀套基于http的协议层框架,很少采⽤开源框架。
详解网易网络游戏服务器的构架一。
引擎三大部分基于freebsd 的服务器跨平台的客户端二进制跨平台支持Win32 MacOs Linux Freebsd3d 部分基于openGLC 语言编写底层、逻辑部分动态脚本语言开发用相关工具跨平台命令行工具Windows 下的视觉编辑工具二。
服务器的设计底层全部由C 语言编写逻辑层语言无关类COM 的模块化设计多语言混合编程多进程单线程结构服务器组内各进程功能有明显的层次划分数据和逻辑分离三。
服务器群单一登陆点做进入系统的认证全局数据库仅保存用户身份信息不保持常连接玩家可以在整个大世界中发生联系物理上玩家分属不同服务器组管理用户数据库各自独立,无须实时交互虚拟世界中的距离即物理世界上的距离四。
服务器组间消息传递避免交互性协议游戏设计上考虑远程通讯的时间差允许数据复制,并考虑多个副本相遇时的处理每组服务器有唯一的数据输入输出点海关服务玩家的交互受游戏设计的限制限制是为了更丰富的可能性虚拟世界的战争、贸易以及资源分配五。
外部连接处理多个外部接入点国情问题:电信网通问题特别通道:用于管理人员进入组播分组管理的问题心跳控制流水线作业时间控制录象回放调试(监督数据合法性)聊天信息分离利用广播服务器减低负载广义聊天信息六。
时间校对校对玩家机器和服务器组的时间防止时间作弊估算消息发生时刻,更流畅的完成交互动作精确保证时间的一致性NTP 协议的问题Client 的不合作(区分恶意和无意)服务器组间的时间校对心跳控制七。
数据服务唯一的数据储存点使用本地文件系统使用简单文本结构使用简单的交互协议物品发放服务虚拟物品的控制数据监控和备份八。
开发经验和教训曾经追求大一统的设计过分信赖C++设计模式滥用数据应当文本化应将每单个任务足够简化不为尚不存在的需求做设计。
后台功能模块主要功能:收银员功能模块:1)新建玩家用户(开卡),可分为自动开卡和手动开卡两个功能。
2)用户分数管理,可分为上分和下分两个功能。
超级权限功能模块:1)包含收银员功能模块的全部功能。
2)查询收银员总上分,总下分功能。
3)查询总上分总下分功能。
4)添加收银员。
5)删除收银员。
功能模块图如下:数据文件功能模块主要功能:玩家信息存储文件:1)ID(账号),存储玩家账号2)PWD(密码),存储玩家密码3)SCORE(总分),存储玩家总分4)ELEVENSCORE(11门压分)管理员信息存储文件:1)ID(账号),存储管理员账号2)PWD(密码),存储管理员密码3)UPSCORE(总上分),存储该管理员总上分4)DWSCORE(总下分),存储该管理员总下分总份额信息存储文件:通信功能模块主要功能:建立服务器(createserver):1)初始化套戒指(SOCKET)2)绑定本地端口(BINGD)3:)监听(LISTEN)开启服务器(startserver):1)创建服务器线程(serverthread)a)接受连接(ACCEPT)b)新建连接(newconnect)(1)数据接收线程(datathread)超时处理:1)关闭套接字;2)关闭线程关闭一个连接(DISCONNECT):1)关闭套接字;2)关闭线程停止服务(stopserver):1)关闭服务器监听单个IP(LISTEN):监听单个IP主逻辑功能模块1)玩家逻辑已经登录等待压分开始开发压分压分结束准备开奖开奖结束2)主控逻辑开启服务器监听接收连接请求发送状态收集所有在线非等待压分开始发送开始压分指令接收压分发送准备开奖指令处理开奖结果发送开奖结果接收发回分数校对结果发送开始压分指令。