单一世界架构初探

romandion 2009-06-29 01:57:00
加精
如果说,还有什么最令我好奇的是,单一世界架构就是其中之一。我在网络上查了一些资料,但对单一世界真正建立,还是有很多问题需要解决。个人认为,这个架构将会是里程碑式的。我融合现有架构的认识以及一些自己的思考,在下面将逐渐铺开。本来我只准备发表在自己的博客中,但毕竟一个人的认识有限,想到这里专家颇多,所以还是特定发表在这里供大家拍砖。

我曾经看到过的,和单一世界相关的文章主要是云风的和一个可能是传奇架构的。已经实现的架构,一个是澳洲的《BigWorld》引擎,另外一个是《EVE》。EVE虽然宣称是单一世界,但他有个上限是1.3万。这就没啥意思了。因为网易据说购买了BigWorld引擎做天下贰,所以我感觉云风关于他的论述有一定的可信度,不过我没有直接接触过,这些都是二手资料,只能供自己参考。

不管怎么说,我感觉单一世界是很重要的课题,我凭自己的经验和思考来探讨这个议题。首先,必须对这个单一世界做一个严格概念上的界定,怎么样才算是单一世界呢?满足2个充要条件:1、所有的在线人员看到的都是同一连续的世界;2、在线人数的限制和机器的数量成正比,这个人数界定允许单一世界的人数无限扩展。界定出这样的世界才有意义。

现在的魔兽世界弄得全国沸沸扬扬的,而且也是一款最受人关注的巨作,我就拿他来解剖作案例。在魔兽世界有百万在线人数,于是我们就将他暂时评估为 10M在线数,同时有10个区,N多服。每个服之间的货币和角色是无法自由流动的,而在单一世界中,就没有这个限制。当然,副本是不算在内的,副本可以算是另外一个世界,实现要比单一世界简单多了。现在我们探讨下,如果将魔兽世界的全部区和全部服整合在一个单一世界中,会有什么问题呢?

1、巨大的连接数,我们先限定在10M。不过这也不是单个机器能受得了,还带来巨多玩家信息。

2、海量的计算。由于海量的人在上面,所以海量的计算是显然的。

3、庞大的地图。想想看,如果所有的人都挤在荆棘谷或者风暴城会是怎么样的情景呢?显然会把路都堵死了。当然这个最不关我的事情了,真的把路堵死了,估计把开发商都笑咧嘴了。

4、虚拟世界和真实世界的不同。虚拟世界中在一起打怪的2个人甚至一个团队可能物理上分布在世界的N个角落。不同的延时也是很关键的事情。汗啊,比网络会议难度还猛啊。会是关键性问题么?

看到这些问题,我们可能一下子会蒙掉了,高难度啊。不过,我们还应该看到,在单一世界中,有一些天然得限制。

1、你所能看到的世界是局部的,或者说是在某种粒度上是局部的。可以这么理解,你一眼望去,从荆棘谷是看不到幽暗城里面发生了什么。即使从小地图上看,也是一种粗粒度的局部。可能会看到赞加沼泽的概况,却也看不到盘牙水库上面有没有鱼在游动。

2、世界也是局部的,在风暴城中打个饱嗝,决不会造成天空卫队某个哥们摔下坐骑,更不会有蝴蝶效应,即使有,也可以抹杀。而且,即使世界是连续,完全可以视为局部的连续。

单一世界的局部性原理是我们实现单一世界的一个核心原理,使得我们有可能根据这个原理构筑更大的世界。
...全文
3879 150 打赏 收藏 转发到动态 举报
写回复
用AI写文章
150 条回复
切换为时间正序
请发表友善的回复…
发表回复
bbvs1 2010-02-09
  • 打赏
  • 举报
回复
来顶贴了!!!!!!!
pingan300 2009-12-17
  • 打赏
  • 举报
回复
好帖子,非常值得学习,开拓了眼界
gumbour 2009-09-18
  • 打赏
  • 举报
回复
补充一点, 限于x86的总线带宽,一般通用服务器都采用千兆网络接口。 而专用领域的高端集群,则采用更高级的处理器,如一块服务器板最多4颗XLR732(每颗8核32线程MIPS),甚至2到4颗TILERA64(每颗64核64线程MIPS),这种设备成本未必高,但是性能极强,板件带宽一般都是万兆的,而且支持多框级联。
gumbour 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 120 楼 xingzhe2001 的回复:]
romandion,我在服务器方面绝对菜鸟,因为能接触到高级服务器硬件的机会还是不普遍,能否告诉我们:
1.现在服务器之间交互都通过什么设备
2.如果是网卡,传输速度是多少,考虑到交换机,传输速度是多少
3.应该有专用的服务器间连接线吧,看到集群计算机后面插了很多线,都有些啥线,速度是多少
4.有专用的机对机连线么,不通过交换器的那种,传输速度能有多少?有光纤么?

还有服务器软件的问题:
1.现在的集群服务器操作系统能提供什么服务?使数据在服务器间透明的共享么?任意两个服务器之间?

[/Quote]
1 如果真要搭建集群,刀片服务器是首选。刀片服务器内部已经提供了高速冗余交换网络。
一般是一个机框,能插10多块服务器单板和2快主控交换板,典型的开放架构如ATCA,不过HP,IBM现在都有自己的架构。刀片能够提供热插板,统一供电,统一网络出口,远程管理等功能。


2 机架服务器不适合搭建集群,所以不讨论,而且机架服务器高速网口(万兆)成本也太高。
以ATCA为例,标准17英寸机框12服务器板+2主控交换板,双双星(base和fabric两个平面都是双星)结构为例。
框内有一块背板,提供框内各槽位互联。


每块服务器板和每块交换板之间有一个base接口,速率至少1Gbps或10Gbps。
每块服务器板和每块交换板之间有一个fabric接口,速率至少1Gbps或10Gbps。
每块服务器板和隔壁(也可能隔壁的隔壁) 之间有一个update接口,速率1Gbps或10Gbps,注意不是任意两块,而是每块之和另外一块有update接口,整框12块板有6对update接口。
每块服务器板由前插板和后插板组成,CPU和内存等主体模块在前插板上,前插板也可能出数个1Gbps或者10Gbps接口,甚至提供4个扩展子卡插槽(每插槽可扩展1CPU或其他设备,像PCI一样,只是总线不同)。 后插板一般是IO,包括鼠标,键盘,USB,显示器,网口等接口,后插板可选,一般一框就一个后插板,反正支持热插拔,想操作哪个服务器板,就插到对应的后面去。
服务器板网络接口非常丰富。 以我们公司的服务器板为例,前插板2网络接口(RJ45或光纤口),后插板2网络接口(RJ45或光纤口),背板支持4网络接口(2base+2fabric),再加Update接口 一共9个接口。 前插板和后插板因为万兆接口成本远高于背板的万兆网络接口,所以一般前插板都是千兆口,update,base和fabric则根据成本和需求决定。
假如不惜成本,服务器板的豪华配置可在框内达到40Gbps带宽(2base+2fabric)。

两块交换板之间提供40Gbps设置80Gbps或者更高的带宽。
交换板前面板和后插板可以出若干个接口,千兆或者万兆均可,一般整个机框从交换板上出一根网线就可以满足整框的网络需求。。


base和fabric采用serdes通道来进行串行数据传输,典型的刀片服务器架构都是用base和fabric通道来承载IP网络,作为网络集群使用。但是假如你愿意,你可以用来承载任何协议,甚至承载内部高速总线使整框成为一台多核计算机。 虽然ATCA建议fabric是1G或10G接口,但已经有公司在base和fabric上承载40G接口。

这样每个主控交换板都处于一个base平面和一个fabric平面的星形网络结构中心,如果是承载二层以太网的话,主控交换板上有数颗巨牛B的万兆交换芯片,一般都是broadcom的产品,完成最高数百Gbps的数据交换。 因为2块主控交换板的base和fabric共4个网络都是星形结构所以叫双双星结构,如果因为成本原因也可能简化为双星或者单星。


正常的分布式网络集群每服务器采用4个千兆网口已经是豪华配置了,只有专门的数据处理才可能用的上万兆接口!


3 框内的交换一般已经够豪华了,大部分不需要再连线了。


4 高端服务器网络接口可能采用RJ45千兆水晶头接口, SFP接口,可插入千兆光模块,XFP接口,可插入万兆光模块。 光模块上可以直接接光纤。
所有的网络接口全部双工。


集群服务器软件提供多服务器管理功能和分布式运行能力,对外表现为一台多核计算机,数据对外透明,内部对任务进行划分处理,一般按线程/进程在多服务器间调度。
如果不跑集群服务器软件,那么每块服务器板就是一个单独的服务器,可以独立使用。
tangyueast 2009-09-18
  • 打赏
  • 举报
回复
受教。
向楼主致敬。
The9thArt 2009-09-16
  • 打赏
  • 举报
回复
mak
beipiao 2009-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 romandion 的回复:]
现在我们进入实质性的探讨阶段,首先是登录管理。

单一世界中海量在线数是个很重要的问题。多数架构都是用代理服务器来分散连接,这里提供一个方法,既能满足海量连接,还能实现单点登录,细节看了再说。

单点登录,意味着,所有的请求都将被一个IP处理。而海量请求,意味着所有的登录管理都会在一个IP的完成,天啦,如果到了10M那是什么概念。即使1M/S的处理速度,也要10S才能完成一个登录管理,那我估计,这个应用早被人骂了体无完肤,当然,魔兽世界可能例外,没看到那么多人排队进战场么?可不止10S啊。

对于一个登录过程来说,一般可以分为几个步骤。

1、C-->登录请求-->S

2、S-->请求应答-->C

3、C-->认证信息-->S

4、S-->认证结果-->C

在这个步骤中,如果一个S同时处理所有的请求,显然在海量连接下是不可能。于是,我们将步骤2进行拆分。

2.1、S-->登录转发-->C

2.2、C-->登录请求-->Sx

2.3、Sx-->请求应答-->C

在C发出登录请求的时候,C可能得到2种报文,一个是转发报文,服务器让他连接到另外一个服务,后续的过程是一样的;另外一个是登录应答。服务器直接响应客户端的请求。

这个过程有几点好处:
第一、满足单点登录,因为客户端只需要知道一个IP地址;
第二、转发报文让客户端能够连接到其他IP,在海量在线的时候,实际上,主IP没有太多的事情,只要负责转发报文;
第三、客户端可以保存上次得到的IP,下次直接连接到改IP中,这样,就不需要找主IP的麻烦了;
第四、如果服务x依然有问题,比如太忙,那么,他可以再转发该客户端到其他IP去。
[/Quote]

楼主,海量登陆连接可以用负载均衡集群来解决,还有一个办法是加一个服务器,专门用来给客户端分配登陆ip。

集群分很多种,你不能用高性能集群来代表所有集群。

单一世界架构的实现,必须是一个具有“高并发高负载应用开发经验和大规模集群项目实施经验”的人来领导才有可能。

我不是做游戏的,正所谓术业有专攻,但是有时候专攻一个方向,会使你的思路容易限制在某个方面。
xiaobinsf 2009-09-04
  • 打赏
  • 举报
回复
支持一下楼主, 没有想象就没有进步, 况且,分布式架构网游服务器,不是没可能做到的
nj_dobetter 2009-08-21
  • 打赏
  • 举报
回复
牛!
sancoz 2009-08-14
  • 打赏
  • 举报
回复
LZ,我不知道你从哪得来的资料,现在EVE同时在线人数都是平均在40000以上
sniperhuangwei 2009-08-12
  • 打赏
  • 举报
回复
喔,兴睿网络的CTO鲁俊武又行骗到这来啦?
-----------------------------------------------------------
至于那个 MDNA网络游戏整体架构编程 就是两个菜鸟在那里YY.
-----------------------------------------------------------
朋友,你真的以为是两个菜鸟吗?其实是一个,xman和lu.你们就不用再
装了吧.你在网络上的ID多的是.自己跟自己唱双簧的戏我已经看腻了.
yuyunliuhen 2009-07-30
  • 打赏
  • 举报
回复
好贴。
Thinking_In_IT 2009-07-20
  • 打赏
  • 举报
回复
mark 一下
zzmoutmans 2009-07-18
  • 打赏
  • 举报
回复
zzmoutmans 2009-07-18
  • 打赏
  • 举报
回复
romandion 2009-07-17
  • 打赏
  • 举报
回复
这CSND还真怪了啊。行者兄弟10点的时候回的113楼,怎么愣是不见了呢?
donil 2009-07-17
  • 打赏
  • 举报
回复
虽然不做游戏,但是的确是好帖,mark
xingzhe2001 2009-07-17
  • 打赏
  • 举报
回复
[Quote=引用 110 楼 romandion 的回复:]
如果说每个角色都会有一个唯一标识符容易理解,不过每个剑是否也会有呢?如果2个角色都拿着1把蛋刀,这2把蛋刀是相同的标识符还是…
[/Quote]
每一个可以保存的对象都是有唯一标识符的,武器,装备。我接触的是用uuid做标识符。这样可以在数据库中查找,也可以防止复制装备。
simon031187 2009-07-17
  • 打赏
  • 举报
回复
大一统的服务器,起码现在的硬件环境应该是达不到的
我想还是多个并行的服务器,但是在服务器之间按照一定的规则,允许帐号转移
就好像现实里面的各个国家,允许个人移民一样
mituxiaomao 2009-07-17
  • 打赏
  • 举报
回复
mark 谢谢
加载更多回复(129)

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧