第一篇:垂直行业网站服务器架构方案
服务器架构
一、目前架构:
114.113.229.66massterHadoop114.113.229.72V1web114.113.229.73V2webmysql主JobsHbase114.113.229.67slaveHadoopHadoop-data114.113.229.68tomcatV1 搜索tomcatSolrSolr Home索引搜索服务编辑后台114.113.229.69slaveHadoopHadoop-data114.113.229.70slaveHadoopHadoop-dataMongoDBHbase114.113.229.71slaveHadoopHadoop-dataMongoDBHbase114.113.229.74slaveHadoopHadoop-dataMongoDBHbasemysql从 爬虫使用6台,其中3台同时放了MongoDB服务,1台同时放了搜索服务和编辑后台服务,直接导致服务器不能专职使用互相影响,大部分服务器CPU一直在高负荷运作,67为我们的搜索服务器,其中编辑后台和爬虫服务会影响到搜索服务的运行,一旦cpu负荷到100%,那么搜索指令将不会被执行,直接表现为搜索任何关键词或分类都无结果。
缺点:服务器不能发挥出应用的性能。
二、基本架构:需要9台服务器
114.113.229.66massterHadoopJobsHbase114.113.229.71V2webmysqlMail114.113.229.67slaveHadoopHadoop-datatomcat编辑后台114.113.229.69slaveHadoopHadoop-dataCPS/API114.113.229.72slaveHadoopHadoop-dataHbase114.113.229.73slaveHadoopHadoop-dataHbase114.113.229.74slaveHadoopHadoop-dataHbase114.113.229.68SolrSolr Home索引搜索服务114.113.229.70MongoDB
一台WEB主机;支持500人同时在线,每天约百万PV。 一台搜索SOLR主机;支持 400W 以下数据量。
爬虫HADOOP共6台;能做到全部商城数据更新2天更新一次,主流5个综合商城每天更新一次(京东除外)
CPS和API搭建在hadoop集群内; 一台独立MongoDb;
以上架构缺点:没有容灾性,宕机会丢失数据,尤其是WEB/MYSQL服务器、搜索服务器和MongoDB服务器这3台机器是支撑我们前端服务的,一旦一台主机宕机网站就无法正常使用。
三、最佳架构:需要18台服务器
114.113.229.73WEB主webmysqlMail114.113.229.72WEB从webmysqlMail114.113.229.74massterHadoopJobs114.113.229.*搜索SolrSolr Home114.113.229.*搜索SolrSolr HomeAPI114.113.229.*搜索主SolrSolr Home索引搜索服务114.113.229.67slaveHadoopHadoop-datatomcat编辑后台114.113.229.69slaveHadoopHadoop-data114.113.229.*slaveHadoopHadoop-data114.113.229.*slaveHadoopHadoop-data搜索服务搜索服务114.113.229.66slaveHadoop114.113.229.70数据库从MongoDB114.113.229.71数据库从MongoDB114.113.229.68数据库主MongoDBHadoop-data114.113.229.*slaveHadoopHadoop-data114.113.229.*slaveHadoopHadoop-data114.113.229.*slaveHadoopHadoop-data114.113.229.*CPSCPS
爬虫服务器Hadoop:9台(配置需求不高)架构可以随时扩容。满足所有80家商城数据更新每天可以更新一次,部分综合商城可以做到每天更新2次(京东除外)
数据库服务器MongoDB:3台主从(配置需求比较高)架构可以随时扩容。
搜索服务器SOLR/编辑后台:3台主从(配置需求比较高)架构可以随时扩容。搜索服务器Solr服务将支持 千万级以上数据量,并可以随时根据服务器压力扩容。 CPS: 1台,能满足初期CPS接入流量,可以随时扩容。 Web/Mysql:2台主从(配置需求比较高)架构可以随时扩容。
以上架构优点:具有数据容灾性,任意一个节点的服务器宕机,不影响在线服务。
第二篇:游戏服务器架构
星辰小屋www.xiexiebang.com了,如果你要是想用自己的就把sa账户的密码修改成自己的不过要修改五去文件
导入备份数据库
星辰小屋www.xiexiebang.com
星辰小屋www.xiexiebang.com
星辰小屋www.xiexiebang.com
星辰小屋www.xiexiebang.com
再导入这个(方法和上面同样)
星辰小屋www.xiexiebang.com
多了两个数据库,这就是游戏的数据库
星辰小屋www.xiexiebang.com
现在数据库完了,可以为自己注册个账号来测试了
服务器做好
了,现
在来
安
装
客
户
端
星辰小屋www.xiexiebang.com
现在只要把服务器的服务开启客户端就可能进入游戏了
我没有全部开启因我只是做测试,一个人玩就开这么多就行了,要是多人玩就全开
星辰小屋www.xiexiebang.com
开启服务时在winows2003中正规服务器1线到3线可能开启不了,解决方法:我的电脑-属性-高级-设置
实验结果:
星辰小屋www.xiexiebang.com
在一台机子上我用的两个虚机太卡了所以我就不进入游戏了,有兴趣的把邮箱留下我可以把服务器软件发给你
第三篇:电子商务网站服务器系统架设方案
电子商务网站服务器系统架设方案
目前最热门的互联网应用应用主要是建立电子商务网站。很多中小型企业的技术人员或者打算以网站、盈利的个人团体组织都经常提出这么一个疑问:究竟什么样的配置可以支持多大的流量?
其实这个问题不可能有准确答案,因为每个网站使用的Web系统都不一样,有些喜欢用IIS+ASP,有些则是用Apache+PHP,这在脚本的执行效率上本身就存在很大的差异,另外,网页系统编写的复杂程度和优化程度也极大的影响着服务器能够承载的访问人数,大部分的新闻资讯、下载类网站都已经使用了静态页面来减少Web系统对服务器处理能力的依赖,但是仍然有不少例如论坛、网上商城一类的系统需要大量动态代码的支持,所以笼统的去谈论一个服务器能够支持多少访问量是没有实际意义的,还是需要具体的去分析。互联先锋基于5年来为电子商务客户提供的初期架设方案分享给大家,采用香港机房服务器,国际带宽,大陆电信网通和网通访速度都快,比双线效果更好,而且国外及港澳台访问也很快,非常适合国内及国际性的网站,并且不用备案,域名可以直接绑定。互联先锋是国内优秀海外IDC服务商,是服务最优秀的海外主机品牌。
服务器配置
处理器:一颗四核至强3220 2.4GHz
内存:4GB DDR2 800
硬盘:1000G SATA
主板:英特尔S3200SH
带宽:独享2M国际出口带宽(大流量用户需购买更大独享国际带宽)
流量:不限流量
IP数:1个
机房:香港新世界电讯
硬件:采用性价比极高的至强四核服务器,质量和稳定性极好。
环境:新世界机房线路对世界各地均稳定正常,ping值小,丢包率低,非常适合做网络电话。客户群乃至中国国内、日本、菲律宾、南非、泰国等亚洲范围。
第四篇:[zz]游戏服务器架构探讨(上)
[zz]游戏服务器架构探讨(上)2008-10-31 1116这里讨论的游戏服务器架构大概是目前国内乃至世界上的网游通用的一种架构了:
httpbbs.gameres.comshowthread.aspthreadid=93775 作者:qinglan
有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完善,于是再次浏览了下他的代码,也借此机会整理下我在游戏服务器开发方面的一些心得,与大家探讨。
另外由于为避免与公司引起一些不必要的纠纷,我所描述的全都是通过google能够找到的资料,所以也可以认为我下面的内容都是网上所找资料的整理合集。在平时的开发中我也搜索过相关的中文网页,很少有讲游戏服务器相关技术的,大家的讨论主要还是集中在3D相关技术,所以也希望我将开始的这几篇文章能够起到抛砖引玉的作用,潜水的兄弟们也都上来透透气。
要描述一项技术或是一个行业,一般都会从其最古老的历史开始说起,我本也想按着这个套路走,无奈本人乃一八零后小辈,没有经历过那些苦涩的却令人羡慕的单机游戏开发,也没有响当当的拿的出手的优秀作品,所以也就只能就我所了解的一些技术做些简单的描述。一来算是敦促自己对知识做个梳理,二来与大家探讨的过程也能够找到我之前学习的不足和理解上的错误,最后呢,有可能的话也跟业内的同行们混个脸熟,哪天要是想换个工作了也好有个人帮忙介绍下。最后的理由有些俗了。
关于游戏开发,正如云风在其blog上所说,游戏项目始终只是个小工程,另外开发时间还是个很重要的问题,所以软件工程的思想及方法在大部分的游戏公司中并不怎么受欢迎。当然这也只是从我个人一些肤浅的了解所得,可能不够充分。从游戏开发的程序团队的人员构成上也可看出来,基本只能算作是小开发团队。有些工作室性质的开发团队,那就更简单了。
我所了解的早些的开发团队,其成员间没有什么严格的分工,大家凭兴趣自由选择一些模块来负责,完成了再去负责另一模块,有其他同事的工作需要接手或协助的也会立即转入。所以游戏开发人员基本都是多面手,从网络到数据库,从游戏逻辑到图形图象,每一项都有所了解,并能实际应用。或者说都具有非常强的学习能力,在接手一项新的任务后能在很短的时间内对该领域的技术迅速掌握并消化,而且还能现炒现卖。当然,这也与早期2D游戏的技术要求相对比较简单,游戏逻辑也没有现在这般复杂有关。而更重要的可能是,都是被逼出来的吧!)
好了,闲话少说,下一篇,也就是第一篇了,主题为,服务器结构探讨。
服务器结构探讨--最简单的结构
所谓服务器结构,也就是如何将服务器各部分合理地安排,以实现最初的功能需求。所以,结构本无所谓正确与错误;当然,优秀的结构更有助于系统的搭建,对系统的可扩展性及可维护性也有更大的帮助。
好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。
对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单:
client-----server
嗯,太简单了点,这样也敢叫服务器结构?好吧,现在我们来往里面稍稍加点东西,让它看起来更像是服务器结构一些。
一般来说,我们在接入游戏服务器的时候都会要提供一个帐号和密码,验证通过后才能进入。关于为什么要提供用户名和密码才能进入的问题我们这里不打算做过多讨论,云风曾对此也提出过类似的疑问,并给出了只用一个标识串就能进入的设想,有兴趣的可以去看看他们的讨论。但不管是采用何种方式进入,照目前看来我们的服务器起码得提供一个帐号验证的功能。
我们把观察点先集中在一个大区内。在大多数情况下,一个大区内都会有多组游戏服,也就是多个游戏世界可供选择。简单点来实现,我们完全可以抛弃这个大区的概念,认为一个大区也就是放在同一个机房的多台服务器组,各服务器组间没有什么关系。这样,我们可为每组服务器单独配备一台登录服。最后的结构图应该像这样:
loginServer gameServer client
该结构下的玩家操作流程为,先选择大区,再选择大区下的某台服务器,即某个游戏世界,点击进入后开始帐号验证过程,验证成功则进入了该游戏世界。但是,如果玩家想要切换游戏世界,他只能先退出当前游戏世界,然后进入新的游戏世界重新进行帐号验证。
早期的游戏大都采用的是这种结构,有些游戏在实现时采用了一些技术手段使得在切换游戏服时不需要再次验证帐号,但整体结构还是未做改变。
该结构存在一个服务器资源配置的问题。因为登录服处理的逻辑相对来说比较简单,就是将玩家提交的帐号和密码送到数据库进行验证,和生成会话密钥发送给游戏服和客户端,操作完成后连接就会立即断开,而且玩家在以后的游戏过程中不会再与登录服打任何交道。这样处理短连接的过程使得系统在大多数情况下都是比较空闲的,但是在某些时候,由于请求比较密集,比如开新服的时候,登录服的负载又会比较大,甚至会处理不过来。
另外在实际的游戏运营中,有些游戏世界很火爆,而有些游戏世界却非常冷清,甚至没有多少人玩的情况也是很常见的。所以,我们能否更合理地配置登录服资源,使得整个大区内的登录服可以共享就成了下一步改进的目标。
服务器结构探讨--登录服的负载均衡
回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏...可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也就使得登录服不是固定配备给个游戏世界,而是全区共有的。
我们可以试着从实际需求的角度来考虑一下这个问题。正如我们之前所描述过的那样,登录服在大多数情况下都是比较空闲的,也许我们的一个拥有20个游戏世界的大区仅仅使用10台或更少的登录服即可满足需求。而当在开新区的时候,或许要配备40台登录服才能应付那如潮水般涌入的玩家登录请求。所以,登录服在设计上应该能满足这种动态增删的需求,我们可以在任何时候为大区增加或减少登录服的部署。
当然,在这里也不会存在要求添加太多登录服的情况。还是拿开新区的情况来说,即使新增加登录服满足了玩家登录的请求,游戏世界服的承载能力依然有限,玩家一样只能在排队系统中等待,或者是进入到游戏世界中导致大家都卡。
另外,当我们在增加或移除登录服的时候不应该需要对游戏世界服有所改动,也不会要求重启世界服,当然也不应该要求客户端有什么更新或者修改,一切都是在背后自动完成。
最后,有关数据持久化的问题也在这里考虑一下。一般来说,使用现有的商业数据库系统比自己手工技术先进要明智得多。我们需要持久化的数据有玩家的帐号及密码,玩家创建的角色相关信息,另外还有一些游戏世界全局共有数据也需要持久化。
好了,需求已经提出来了,现在来考虑如何将其实现。
对于负载均衡来说,已有了成熟的解决方案。一般最常用,也最简单部署的应该是基于DNS的负载均衡系统了,其通过在DNS中为一个域名配置多个IP地址来实现。最新的DNS服务已实现了根据服务器系统状态来实现的动态负载均衡,也就是实现了真正意义上的负载均衡,这样也就有效地解决了当某台登录服当机后,DNS服务器不能立即做出反应的问题。当然,如果找不到这样的解决方案,自己从头打造一个也并不难。而且,通过DNS来实现的负载均衡已经包含了所做的修改对登录服及客户端的透明。
而对于数据库的应用,在这种结构下,登录服及游戏世界服都会需要连接数据库。从数据库服务器的部署上来说,可以将帐号和角色数据都放在一个中心数据库中,也可分为两个不同的库分别来处理,基到从物理上分到两台不同的服务器上去也行。
但是对于不同的游戏世界来说,其角色及游戏内数据都是互相独立的,所以一般情况下也就为每个游戏世界单独配备一台数据库服务器,以减轻数据库的压力。所以,整体的服务器结构应该是一个大区有一台帐号数据库服务器,所有的登录服都连接到这里。而每个游戏世界都有自己的游戏数据库服务器,只允许本游戏世界内的服务器连接。
最后,我们的服务器结构就像这样:
大区服务器
登录服1 登录服2 世界服1 世界服2
帐号数据库 DBS DBS
这里既然讨论到了大区及帐号数据库,所以顺带也说一下关于激活大区的概念。wow中一共有八个大区,我们想要进入某个大区游戏之前,必须到官网上激活这个区,这是为什么呢?
一般来说,在各个大区帐号数据库之上还有一个总的帐号数据库,我们可以称它为中心数据库。比如我们在官网上注册了一个帐号,这时帐号数据是只保存在中心数据库上的。而当我们要到一区去创建角色开始游戏的时候,在一区的帐号数据库中并没有我们的帐号数据,所以,我们必须先到官网上做一次激活操作。这个激活的过程也就是从中心库上把我们的帐号数据拷贝到所要到的大区帐号数据库中。
服务器结构探讨--简单的世界服实现
讨论了这么久我们一直都还没有进入游戏世界服务器内部,现在就让我们来窥探一下里面的结构吧。
对于现在大多数MMORPG来说,游戏服务器要处理的基本逻辑有移动、聊天、技能、物品、任务和生物等,另外还有地图管理与消息广播来对其他高级功能做支撑。如纵队、好友、公会、战场和副本等,这些都是通过基本逻辑功能组合或扩展而成。
在所有这些基础逻辑中,与我们要讨论的服务器结构关系最紧密的当属地图管理方式。决定了地图的管理方式也就决定了我们的服务器结构,我们仍然先从最简单的实现方式开始说起。
回想一下我们曾战斗过无数个夜晚的暗黑破坏神,整个暗黑的世界被分为了若干个独立的小地图,当我们在地图间穿越时,一般都要经过一个叫做传送门的装置。世界中有些地图间虽然在地理上是直接相连的,但我们发现其游戏内部的逻辑却是完全隔离的。可以这样认为,一块地图就是一个独立的数据处理单元。
既然如此,我们就把每块地图都当作是一台独立的服务器,他提供了在这块地图上游戏时的所有逻辑功能,至于内部结构如何划分我们暂不理会,先把他当作一个黑盒子吧。
当两个人合作做一件事时,我们可以以对等的关系相互协商着来做,而且一般也都不会有什么问题。当人数增加到三个时,我们对等的合作关系可能会有些复杂,因为我们每个人都同时要与另两个人合作协商。正如俗语所说的那样,三个和尚可能会碰到没水喝的情况。当人数继续增加,情况就变得不那么简单了,我们得需要一个管理者来对我们的工作进行分工、协调。游戏的地图服务器之间也是这么回事。
一般来说,我们的游戏世界不可能会只有一块或者两块小地图,那顺理成章的,也就需要一个地图管理者。先称它为游戏世界的中心服务器吧,毕竟是管理者嘛,大家都以它为中心。
中心服务器主要维护一张地图ID到地图服务器地址的映射表。当我们要进入某张地图时,会从中心服上取得该地图的IP和port告诉客户端,客户端主动去连接,这样进入他想要去的游戏地图。在整个游戏过程中,客户端始终只会与一台地图服务器保持连接,当要切换地图的时候,在获取到新地图的地址后,会先与当前地图断开连接,再进入新的地图,这样保证玩家数据在服务器上只有一份。
我们来看看结构图是怎样的:
中心服务器
登录服 地图1 地图2 地图n
客户端
很简单,不是吗。但是简单并不表示功能上会有什么损失,简单也更不能表示游戏不能赚钱。早期不少游戏也确实采用的就是这种简单结构。
服务器结构探讨--继续世界服
都已经看出来了,这种每切换一次地图就要重新连接服务器的方式实在是不够优雅,而且在实际游戏运营中也发现,地图切换导致的卡号,复制装备等问题非常多,这里完全就是一个事故多发地段,如何避免这种频繁的连接操作呢?
最直接的方法就是把那个图倒转过来就行了。客户端只需要连接到中心服上,所有到地图服务器的数据都由中心服来转发。很完美的解决方案,不是吗?
这种结构在实际的部署中也遇到了一些挑战。对于一般的MMORPG服务器来说,单台服务器的承载量平均在2000左右,如果你的服务器很不幸地只能带 1000人,没关系,不少游戏都是如此;如果你的服务器上跑了3000多玩家依然比较流畅,那你可以自豪地告诉你的策划,多设计些大量消耗服务器资源的玩法吧,比如大型国战、公会战争等。
2000人,似乎我们的策划朋友们不大愿意接受这个数字。我们将地图服务器分开来原来也是想将负载分开,以多带些客户端,现在要所有的连接都从中心服上转发,那连接数又遇到单台服务器的可最大承载量的瓶颈了。这里有必要再解释下这个数字。我知道,有人一定会说,才带2000人,那是你水平不行,我随便写个TCP服务器都可带个五六千连接。问题恰恰在于你是随便写的,而MMORPG的服务器是复杂设计的。如果一个演示socket API用的echo服务器就能满足MMOG服务器的需求,那写服务器该是件多么惬意的事啊。
但我们所遇到的事实是,服务器收到一个移动包后,要向周围所有人广播,而不是echo服务器那样简单的回应;服务器在收到一个连接断开通知时要向很多人通知玩家退出事件,并将该玩家的资料写入数据库,而不是echo服务器那样什么都不需要做;服务器在收到一个物品使用请求包后要做一系列的逻辑判断以检查玩家有没有作弊;服务器上还启动着很多定时器用来更新游戏世界的各种状态......其实这么一比较,我们也看出资源消耗的所在了:服务器上大量的复杂的逻辑处理。再回过头来看看我们想要实现的结构,我们既想要有一个唯一的入口,使得客户端不用频繁改变连接,又希望这个唯一入口的负载不会太大,以致于接受不了多少连接。
仔细看一看这个需求,我们想要的仅仅只是一台管理连接的服务器,并不打算让他承担太多的游戏逻辑。既然如此,那五六千个连接也还有满足我们的要求。至少在现在来说,一个游戏世界内,也就是一组服务器内同时有五六千个在线的玩家还是件让人很兴奋的事。事实上,在大多数游戏的大部分时间里,这个数字也是很让人眼红的。
什么?你说梦幻、魔兽还有史先生的那个什么征途远不止这么点人了!噢,我说的是大多数,是大多数,不包括那些明星。你知道大陆现在有多少游戏在运营吗?或许你又该说,我们不该在一开始就把自己的目标定的太低!好吧,我们还是先不谈这个。
继续我们的结构讨论。一般来说,我们把这台负责连接管理的服务器称为网关服务器,因为内部的数据都要通过这个网关才能出去,不过从这台服务器提供的功能来看,称其为反向代理服务器可能更合适。我们也不在这个名字上纠缠了,就按大家通用的叫法,还是称他为网关服务器吧。
网关之后的结构我们依然可以采用之前描述的方案,只是,似乎并没有必要为每一个地图都开一个独立的监听端口了。我们可以试着对地图进行一些划分,由一个 Master Server来管理一些更小的Zone Server,玩家通过网关连接到Master Server上,而实际与地图有关的逻辑是分派给更小的Zone Server去处理。
最后的结构看起来大概是这样的:
Zone Server Zone Server
Master Server Master Server
Gateway Server Center Server
Client
服务器结构探讨--最终的结构
如果我们就此打住,可能马上就会有人要嗤之以鼻了,就这点古董级的技术也敢出来现。好吧,我们还是把之前留下的问题拿出来解决掉吧。
一般来说,当某一部分能力达不到我们的要求时,最简单的解决方法就是在此多投入一点资源。既然想要更多的连接数,那就再加一台网关服务器吧。新增加了网关服后需要在大区服上做相应的支持,或者再简单点,有一台主要的网关服,当其负载较高时,主动将新到达的连接重定向到其他网关服上。
而对于游戏服来说,有一台还是多台网关服是没有什么区别的。每个代表客户端玩家的对象内部都保留一个代表其连接的对象,消息广播时要求每个玩家对象使用自己的连接对象发送数据即可,至于连接是在什么地方,那是完全透明的。当然,这只是一种简单的实现,也是普通使用的一种方案,如果后期想对消息广播做一些优化的话,那可能才需要多考虑一下。
既然说到了优化,我们也稍稍考虑一下现在结构下可能采用的优化方案。
首先是当前的Zone Server要做的事情太多了,以至于他都处理不了多少连接。这其中最消耗系统资源的当属生物的AI处理了,尤其是那些复杂的寻路算法,所以我们可以考虑把这部分AI逻辑独立出来,由一台单独的AI服务器来承担。
然后,我们可以试着把一些与地图数据无关的公共逻辑放到Master Server上去实现,这样Zone Server上只保留了与地图数据紧密相关的逻辑,如生物管理,玩家移动和状态更新等。
还有聊天处理逻辑,这部分与游戏逻辑没有任何关联,我们也完全可以将其独立出来,放到一台单独的聊天服务器上去实现。
最后是数据库了,为了减轻数据库的压力,提高数据请求的响应速度,我们可以在数据库之前建立一个数据库缓存服务器,将一些常用数据缓存在此,服务器与数据库的通信都要通过这台服务器进行代理。缓存的数据会定时的写入到后台数据库中。
好了,做完这些优化我们的服务器结构大体也就定的差不多了,暂且也不再继续深入,更细化的内容等到各个部分实现的时候再探讨。
好比我们去看一场晚会,舞台上演员们按着预定的节目单有序地上演着,但这就是整场晚会的全部吗?显然不止,在幕后还有太多太多的人在忙碌着,甚至在晚会前和晚会后都有。我们的游戏服务器也如此。在之前描述的部分就如同舞台上的演员,是我们能直接看到的,幕后的工作人员我们也来认识一下。
现实中有警察来维护秩序,游戏中也如此,这就是我们常说的GM。GM可以采用跟普通玩家一样的拉入方式来进入游戏,当然权限会比普通玩家高一些,也可以提供一台GM服务器专门用来处理GM命令,这样可以有更高的安全性,GM服一般接在中心服务器上。
在以时间收费的游戏中,我们还需要一台计费的服务器,这台服务器一般接在网关服务器上,注册玩家登录和退出事件以记录玩家的游戏时间。
任何为用户提供服务的地方都会有日志记录,游戏服务器当然也不例外。从记录玩家登录的时间,地址,机器信息到游戏过程中的每一项操作都可以作为日志记录下来,以备查错及数据挖掘用。至于搜集玩家机器资料所涉及到的法律问题不是我们该考虑的。
差不多就这么多了吧,接下来我们会按照这个大致的结构来详细讨论各部分的实现。
服务器结构探讨--一点杂谈
再强调一下,服务器结构本无所谓好坏,只有是否适合自己。我们在前面探讨了一些在现在的游戏中见到过的结构,并尽我所知地分析了各自存在的一些问题和可以做的一些改进,希望其中没有谬误,如果能给大家也带来些启发那自然更好。
突然发现自己一旦罗嗦起来还真是没完没了。接下来先说说我在开发中遇到过的一些困惑和一基础问题探讨吧,这些问题可能有人与我一样,也曾遇到过,或者正在被困扰中,而所要探讨的这些基础问题向来也是争论比较多的,我们也不评价其中的好与坏,只做简单的描述。
首先是服务器操作系统,linux与windows之争随处可见,其实在大多数情况下这不是我们所能决定的,似乎各大公司也基本都有了自己的传统,如网易的freebsd,腾讯的linux等。如果真有权利去选择的话,选自己最熟悉的吧。
决定了OS也就基本上确定了网络IO模型,windows上的IOCP和linux下的epool,或者直接使用现有的网络框架,如ACE和asio等,其他还有些商业的网络库在国内的使用好像没有见到,不符合中国国情嘛。)
然后是网络协议的选择,以前的选择大多倾向于UDP,为了可靠传输一般自己都会在上面实现一层封装,而现在更普通的是直接采用本身就很可靠的TCP,或者TCP与UDP的混用。早期选择UDP的主要原因还是带宽限制,现在宽带普通的情况下TCP比UDP多出来的一点点开销与开发的便利性相比已经不算什么了。当然,如果已有了成熟的可靠UDP库,那也可以继续使用着。
还有消息包格式的定义,这个曾在云风的blog上展开过激烈的争论。消息包格式定义包括三段,包长、消息码和包体,争论的焦点在于应该是消息码在前还是包长在前,我们也把这个当作是信仰问题吧,有兴趣的去云风的blog上看看,论论。另外早期有些游戏的包格式定义是以特殊字符作分隔的,这样一个好处是其中某个包出现错误后我们的游戏还能继续。但实际上,我觉得这是完全没有必要的,真要出现这样的错误,直接断开这个客户端的连接可能更安全。而且,以特殊字符做分隔的消息包定义还加大了一点点网络数据量。
最后是一个纯技术问题,有关socket连接数的最大限制。开始学习网络编程的时候我犯过这样的错误,以为port的定义为unsigned short,所以想当然的认为服务器的最大连接数为65535,这会是一个硬性的限制。而实际上,一个socket描述符在windows上的定义是 unsigned int,因此要有限制那也是四十多亿,放心好了。
在服务器上port是监听用的,想象这样一种情况,web server在80端口上监听,当一个连接到来时,系统会为这个连接分配一个socket句柄,同时与其在80端口上进行通讯;当另一个连接到来时,服务器仍然在80端口与之通信,只是分配的socket句柄不一样。这个socket句柄才是描述每个连接的唯一标识。按windows网络编程第二版上的说法,这个上限值配置影响。
好了,废话说完了,下一篇,我们开始进入登录服的设计吧。
第五篇:网站建设服务器如何选择
www.xiexiebang.com 网站建设服务器如何选择
网站服务器就是我们平时在网络上的数据存放中的存放地,当然他最得要的用途就是在互联网是的发布作用。它是互联网的基础的硬件设施。现在我们常见的一般是叫塔式的服务器,还有一种是叫机架式的服务器和刀片服务器。
1、采购网站服务器事项
作为采购的人员我们一定要先清楚这个网站需要多少的流量,还有就是每天约有多少的访问量要根据这些数据去选择网站服务器的,所以说在选购时这些数据你要特别的清楚,当然还有保留一些扩展性,因为我们要时刻明白经常有同一在线的情况。
2、选择网站服务器要避免的事项
在选这个服务器时,我们首先要看信息的情况,看看是不是信息有残缺,会不会导致信号接爱不全或是不太稳定,这样就会让你的信息不全。还有就是堵塞的情况,有没有宽带的限制或者是看看有没有响应的最大限制。再者就是要看看机房的环境怎么样,是不是可以通风有没有防火这些都是比较重要的。
www.xiexiebang.com
第一、硬件配置
从服务器的档次程度来进行划分,从高到底可以分成企业级的网站服务器、部门级的网站服务器以及工作级别的网站服务器还有入门级的网站服务器,但是如果从网站服务器的应用层次来进行划分,又可以分成低价稳定型的网站服务器、快速处理型的网站服务器以及海量存储型的网站服务器这三种类型。
像快速处理型的网站服务器就比较适合那些电子商务公司、门户类型的网站、以及大型的社区论坛还有网络游戏等等的这些网站进行使用,而像大型的新闻网站或者是视频电影网站这一类的就要求有很大的数据储存量,就比较适合海量存储型的网站服务器,至于像普通的个人网站或者是企业网站就适合使用低价稳定型的网站服务器。这都是根据他们各自的特点以及网站的属性还有自己的预算等等的一些方面来进行选择的。
在选择网站服务器的时候还要从网站的硬件配置方面去进行考虑,像是操作系统,数据库,应用软件,还有网站的类型,服务器的内存大小,中央处理器等等这些,都是一个网站展示挑选网站服务器的关键性的指标。
第二、性能稳定性
www.xiexiebang.com
相信每个人在日常的网站维护过程中,都不想要自己租赁的或者是购买的网站服务器出现状况,因为网站服务器他本身就是一种需要进行高负荷运作以及复杂运算的工具,如果网站服务器出现了问题,维修起来是非常麻烦的,一点小小的问题就可以引发一系列的麻烦事情,网站服务器都是以预防作为主体工作的,所以网站服务器的稳定性非常重要,大家在选择网站服务器的时候一定要考虑清楚上面的页面脚本需不需要进行修改,应用服务器需不需要进行更新等等的一些事情。
大部分的网站服务器他们其实都是为一种操作系统进行处理以及优化的,所以你们在挑选网站服务器的时候还必须看看他们的操作系统,因为大部分的品牌网站服务器都有自己的服务系统软件,这都是不一样的。