其次,游戏服务器中每一个用户都是独立存在的,每一个用户的数据、请求等都是独立的,用户彼此间的数据并没有任何交互。这也是游戏服务器与普通服务器之间最大的区别。至于客户端之间会有交互这一点,举最简单的例子,一个人在一个场景里面说了一句话,那么“同一个屏幕”的玩家也需要能够看到他说的这句话。此时游戏服务器就需要判断,多远的距离以内的玩家,会认定为是"同屏幕"的玩家,需要向这些玩家广播这个玩家说的这句话。
这个广播就比较麻烦了。首先,需要计算哪些玩家属于"同屏幕",就是我们在第一点提到的玩家身上某些经常变化的属性需要做的运算,在这里需要根据玩家的坐标,找出来跟在同屏幕的玩家,用到的是AOI的概念。另外,找到了这些需要接收这个消息的玩家之后,将消息转发给它们又是一个IO密集的 *** 作,假如场景中有10个人,那么一句话就需要同时广播给另外9个人,假如有100人,1000人呢,数据量就更大了,而且时间的延迟也不能太长,这对于游戏服务器的性能就要求很高了。所以同样的一个硬件配置的服务器,可能跑Nginx可以同时处理上万的链接,但是对于一个游戏服务器就只有1,2千了,就是因为游戏服务器是一个CPU密集而且IO密集的服务器类型。而且不仅需要这样的游戏服务器不仅要求性能比较高,还需要服务器具有极高的稳定性,总不能隔一会就宕机了,那大家还怎么玩。
此外,游戏服务器需要更好的数据承载能力和处理能力。而普通服务器则在各个方面都比较均衡。在寻找游戏服务器租用商的时候,一定要选择那种CPU性能非常出色的。
最后一点,游戏行业一直以来是网络攻击的重灾区,很多游戏刚上线没多久就频繁遭到攻击,导致玩家大量流失口碑下降,最后可能导致直接关服。所以游戏服务器一定要带高防流量包。美丽世界 多机负载
分机架设NAGE服务器,具体的设置如果下:个人建议1号机运行主要程序,2号运行NPC,3号机运行MAP!
1:在一号机上安装SQL数据库,运行agent_serverexe,agent_server_boardexe,
board_serverexe,login_serverexe,operate_serverexe,system_serverexe这几个文件,serverlisttxt IP设置时要注意有关NPC和MAP的内容要分别指向二号跟三号机比如system_server文件夹里的serverlisttxt设置应该是这样
OWN_SERVER SYSTEM_SERVER 一号机网卡IP 5001 11
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
EXT_SERVER MAP_SERVER 三号机网卡IP 8001
EXT_SERVER MAP_SERVER 三号机网卡IP 8002
EXT_SERVER MAP_SERVER 三号机网卡IP 8003
EXT_SERVER NPC_SERVER 二号机网卡IP 9001
EXT_SERVER NPC_SERVER 二号机网卡IP 9002
EXT_SERVER NPC_SERVER 二号机网卡IP 9003
EXT_SERVER LOGIN_SERVER 一号机网卡IP 6001
EXT_SERVER BOARD_SERVER 一号机网卡IP 10001
具体的端口都不变,中间有省略了一些大家做相应更改就行了别的几个文件夹IP配置跟这个差不多
2,二号机运行的NPC文件,serverlisttxt IP配置如下,端口都不变
OWN_SERVER NPC_SERVER 二号机网卡IP 9001
EXT_SERVER MAP_SERVER 三号机网卡IP 8001
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
3,三号机运行的MAP文件serverlisttxt IP配置如下,端口都不变
OWN_SERVER MAP_SERVER 三号机网卡IP 8001
EXT_SERVER NPC_SERVER 二号机网卡IP 9001
EXT_SERVER SYSTEM_SERVER 一号机网卡IP 5001
EXT_SERVER AGENT_SERVER 一号机网卡IP 7001
EXT_SERVER AGENT_SERVER 一号机网卡IP 7002
EXT_SERVER AGENT_SERVER 一号机网卡IP 7003
4,三台机器上都要运行REGBATbat ,在服务器端里有的登陆器IP配置指向主机也是就是一号机的IP就可以正常游戏了
如果还有什么问题请跟贴
为什么golang的开发效率高?
golang是一编译型的强类型语言,它在开发上的高效率主要来自于后发优势,不用考虑旧有恶心的历史,又有一个较高的工程视角。良好的避免了程序员因为“ { 需不需要独占一行 ”这种革命问题打架,也解决了一部分趁编译时间找产品妹妹搭讪的阶级敌人。
它有自己的包管理机制,工具链成熟,从开发、调试到发布都很简单方便;
有反向接口、defer、coroutine等大量的syntactic sugar;
编译速度快,因为是强类型语言又有gc,只要通过编译,非业务毛病就很少了;
它在语法级别上支持了goroutine,这是大家说到最多的内容,这里重点提一下。首先,coroutine并不稀罕,语言并不能超越硬件、 *** 作系统实现神乎其神的功能。golang可以做到事情,其他语言也可以做到,譬如c++,在boost库里面自己就有的coroutine实现(当然用起来跟其他boost库一样恶心)。golang做的事情,是把这一套东西的使用过程简化了,并且提供了一套channel的通信模式,使得程序员可以忽略诸如死锁等问题。
goroutine的目的是描述并发编程模型。并发与并行不同,它并不需要多核的硬件支持,它不是一种物理运行状态,而是一种程序逻辑流程。它的主要目的不是利用多核提高运行效率,而是提供一种更容易理解、不容易出错的语言来描述问题。
实际上golang默认就是运行在单OS进程上面的,通过指定环境变量GOMAXPROCS才能转身跑在多OS进程上面。有人提到了的pomelo,开源本来是一件很不错的事情,但是基于自己对callback hell的偏见,我一直持有这种态度:敢用nodejs写大规模游戏服务器的人,都是真正的勇士 : ) 。
2、Erlang与Golang的coroutine有啥区别,coroutine是啥?
coroutine本质上是语言开发者自己实现的、处于user space内的线程,无论是erlang、还是golang都是这样。需要解决没有时钟中断;碰着阻塞式i\o,整个进程都会被 *** 作系统主动挂起;需要自己拥有调度控制能力(放在并行环境下面还是挺麻烦的一件事)等等问题。那为啥要废老大的劲自己做一套线程放user space里面呢?
并发是服务器语言必须要解决的问题;
system space的进程还有线程调度都太慢了、占用的空间也太大了。
把线程放到user space的可以避免了陷入system call进行上下文切换以及高速缓冲更新,线程本身以及切换等 *** 作可以做得非常的轻量。这也就是golang这类语言反复提及的超高并发能力,分分钟给你开上几千个线程不费力。
不同的是,golang的并发调度在i/o等易发阻塞的时候才会发生,一般是内封在库函数内;erlang则更夸张,对每个coroutine维持一个计数器,常用语句都会导致这个计数器进行reduction,一旦到点,立即切换调度函数。
中断介入程度的不同,导致erlang看上去拥有了preemptive scheduling的能力,而golang则是cooperative shceduling的。golang一旦写出纯计算死循环,进程内所有会话必死无疑;要有大计算量少i\o的函数还得自己主动叫runtimeSched()来进行调度切换。
3、golang的运行效率怎么样?
我是相当反感所谓的ping\pong式benchmark,运行效率需要放到具体的工作环境下面考虑。
首先,它再快也是快不过c的,毕竟底下做了那么多工作,又有调度,又有gc什么的。那为什么在那些benchmark里面,golang、nodejs、erlang的响应效率看上去那么优秀呢,响应快,并发强?并发能力强的原因上面已经提到了,响应快是因为大量非阻塞式i\o *** 作出现的原因。这一点c也可以做到,并且能力更强,但是得多写不少优质代码。
然后,针对游戏服务器这种高实时性的运行环境,GC所造成的跳帧问题确实比较麻烦,前面的大神 @达达 有比较详细的论述和缓解方案,就不累述了 。随着golang的持续开发,相信应该会有非常大的改进。一是屏蔽内存 *** 作是现代语言的大势所趋,它肯定是需要被实现的;二是GC算法已经相当的成熟,效率勉勉强强过得去;三是可以通过incremental的 *** 作来均摊cpu消耗。
用这一点点效率损失换取一个更高的生产能力是不是值得呢?我觉得是值得的,硬件已经很便宜了,人生苦短,让自己的生活更轻松一点吧: )。
4、基于以上的论述,我认为采用go进行小范围的MMORPG开发是可行的。
你可以先去绘学霸网站找“游戏特效/unity3D”板块的免费视频教程-点击进入完整入门到精通视频教程列表: >线路当然是南电信,北网通了。服务器用一个单路四核服务器的就可以了。
如果只是运行一个网站,访问量不是特别大的话,用一个单路四核服务器的服务器就可以了。
你可以看看国产品牌正睿的这款单路四核服务器,标配一颗nehalem架构的xeon x3440四核八线程处理器(1156针脚的,跟i7 860规格接近,主频略低013GHz),2G DDR3 1333MHz内存,SATA2 250G硬盘,英特尔s3420芯片组服务器主板,双千兆网卡,性能可以说是相当强悍。。如果是跑asp,php,jsp页面,负载3000人/秒并发访问没有问题,如果是html静态网站页面,负载30000人没有问题。具体你可以看看这篇评测《胜过双路四核正睿单路服务器新品评测!》
如果你给这个加一个HD 4850或者GTX260显卡,拿来打游戏的话也是爽死了
产品型号:I145738S
产品类型:单路四核塔式服务器
处 理 器:Xeon X3440
内 存:2G DDR3
硬 盘:SATA2 250G
机 构:塔式
价 格:¥5999
银牌服务
重庆五年免费上门服务,全国三年免费上门服务,关键部件三年以上免费质保。
给你推荐的是国产品牌正睿的服务器,他们的产品性价比很高,售后也很完善,3年免费质保,3年免费上门服务,在业界口碑很不错。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)