组件分享之后端组件——一个游戏服务器架构gonet
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
本节我们继续进行分享使用Golang开发游戏可以使用的相关插件,本节我们分享一个游戏服务器架构 gonet
整体架构如下:
目前这个仓库关注度尚可,具备很多的现成的模块可以直接使用,有兴趣的小伙伴们可以关注一下这个组件,属于国内作者开发的,有其相关的小圈子,详细可以查看 README
像LOL这种竞技类游戏的游戏服务器架构是怎样的?
我认为撸啊撸这种竞技类的游戏客服架构,我觉得是一种非常正常的现象,所以说我们在生活当中一定要有一个良好的方式去让他对我们产生一个有益的想法,然后利用他们给我们的这种便利,然后做一些比较能够便利社会的事情,而且我觉得她非常的优秀,可以让我们在游戏体验中得到一个不错的感觉。
游戏服务器架构
案例1:寝室斗地主
案例2:社区斗地主
什么是服务器架构
案例:MMORPG 轩辕传奇 服务器架构 分区多世界
MMORPG:大型 多人 在线 角色扮演
分区多世界:运营视角
分区多世界:运维视角
双通服:世界上最遥远的距离,是从电信到网通的距离。
分区多世界:客户端视角
分区多世界:服务器视角
轩辕服务器为什么要这么多进程和机器 - 多维度切分
初始设计
一个进程包揽所有游戏服务器功能
问题:开第2个服应该怎么做呢?
按世界分离
公共服分离
公共服热备
按功能分离
按重要性分离
百万注册 = 10W活跃 = 1W在线,缓存应重点放在活跃身上。
设计演进:分区多世界原型v2
继续分离公共服
分离逻辑部分弱相关的功能,公共服分离服务器列表、版本升级、账号信息等功能。
切分逻辑进程
当前的现状是所有鸡蛋都放在一个篮子里,所有玩家都在一个进程上,好处是一个特性可以方便地操作到所有玩家上,风险是一个特性的bug可能会影响到所有玩家。
所有特性都在一个进程所带来的风险是:特性的不断的引入会使该进程稳定性和服务质量降低。
设计演进:分区多世界原型v3
如何做切分,参考原则如下:
服务器为长线运营的准备
基本原则:可用、可控、可扩展性
接入与负载
可用性
在线控制
过载保护
服务器中服务介绍
版本升级 tcus
目录服务 tdir
显示服务器列表,繁忙程度(参照在线人数)。
游戏过程 world/scene
运营支持 GM平台/idip
游戏服务器架构和web服务器架构的区别?
1-技术有什么区别
首先通信上目前的主流是HTTP协议和SOCKET这两种(HTML5提供了一种新的协议,WebScoket,对此了解并不多,因此不做评论,以免误导)。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
(注:在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。)
Socket又称\"套接字\",应用程序通常通过\"套接字\"向网络发出请求或者应答网络请求。
以J2SDK-1.3为例,Socket和ServerSocket类库位于包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。(摘自百科)
在WEB服务器中,一般情况是只需要使用HTTP协议的。因为它不太需要去与浏览器进行主动推送,只需要响应浏览器的访问就足够了
而在游戏服务器,这样的连接方式肯定是不够用的。很多时候游戏服务器是需要主动推送消息,如系统广播。
2-思维有什么区别
WEB服务器并不需要高频即时通讯,对响应速度要求不高。而游戏服务器,大多数是需要很及时的响应速度(暂不讨论弱联网游戏)。如DOTA,这种竞技类型的游戏,1秒就能发生很多事。
因此,在思考方向上,WEB服务器应该考虑是的多平台的兼容,大量用户访问的高并发。
而游戏服务器应该考虑的是高频通讯,高并发。
3-架构的侧重点有什么区别
在架构上面,一般访问量不是很大的网站是只有一台服务器的,访问量高的才会进行分布式设计或者集群设计。
而大部分游戏服务器都是需要分布式设计的。
在现有的网络游戏服务器端架构中,多是以功能和场景来划分服务器结构的。具体的划分是根据项目的需求进行的,并没有一个十分通用的架构。
以上是比较常见的结构,客户端登录的时候,连接GateServer,然后由GateServer去连接LoginServer进行登录。登录后通过CenterServer转发到GameServer(GameServer即是服务器大区)。
而其中的DCServer,主要的功能是缓存玩家角色数据,保证角色数据能快速的读取和保存。
LogServer便是保存日志的了。
4-本质有无区别
本质上,两者并无区别,只是需求不同,侧重点不同罢了。
支持百万人同时在线的大型网游需要什么样的服务器?价格是多少?
如果要支持百万人同时在线的大型网游,一般是由几台服务器组成的一个服务器组完成。比如地图服务器,人物较色服务器,数据库服务器,日志服务器,网站WEB服务器等几部分组成。如果你想一台服务器就搞定的话,就需要比较高的服务器配置才能完成。
你可以看看国产品牌正睿的这款最新SNB-E架构的双路四核服务器。标配一颗至强E5-2650八核十六线程处理器(2.0GHz/8GT/20M缓存),英特尔C606服务器芯片组主板,12G DDR3 REG ECC 1333MHz内存,SAS 300G 15000转高速企业级硬盘,6个热插拔盘位,允许用户在不关闭服务器的情况下增加或减少硬盘,便于维护,双千兆网卡,性能可以说是非常不错。如果以后随着业务量的增长,觉得性能不够用了,还可以扩展到两颗处理器,达成16颗处理核心,32条处理线程(在任务管理器处能看到32个处理核心的格子- -~很NB),最大支持128GB DDR3 REG ECC高速容错校验内存。
产品型号:I22S2-8888HV
产品类型:双路八核机架式服务器
处 理 器:Xeon E5-2650
内 存:12G DDR3 REG ECC
硬 盘:SAS 300G
机 构:2U机架式
价 格:¥24900
银牌服务
全国三年免费上门售后服务,关键部件三年以上免费质保。
建议你cpu增加到2个,达成16核心,32个计算线程,内存升级到32G DDR3 REG ECC,总价也就在30000多搞定,满足你支持百万人在线的要求。
给你推荐的是国产品牌正睿的服务器产品,他们的产品性价比很高,做工很专业,兼容性,质量之类的都有保障,售后也很完善,3年免费质保,3年免费上门售后服务,在业界口碑很不错。