一个世界对于游戏玩家是非常有吸引力的。 当然不是eve ,second life 那种2-3万人在线的一个世界。而是像征途那样100万用户在线
的一个世界。
征途现在已经用了集群,那么是什么原因把每个区设置在1-2万人在线这个规模呢?
无限的用户支持它是受硬件限制,比如说有带宽.并且在我们大多数游戏中每组服务器的人数基本上都是抛物线的增长方式.而不是双曲线.
> > 征途现在已经用了集群,那么是什么原因把每个区设置在1-2万人在线这个规模呢?- Hide quoted text -
>
> - Show quoted text -
其实大家可以把IM看做一个MMO,目前的IM都能支撑巨量用户。
> > 征途现在已经用了集群,那么是什么原因把每个区设置在1-2万人在线这个规模呢?- 隐藏被引用文字 -
>
> - 显示引用的文字 -
如果采用UDP协议的话
而且还可以采用P2P方式来降低服务器和客户端的流量。
MMO数据交换量远远超过IM系统,单机负载有限,限制了他的用户数。
On 5月31日, 下午2时47分, sunway <sunhui...@gmail.com> wrote:
理解各位老大说的意思。
但是既然能够多台机器集群来支撑一个区(或者网游都叫一个服),那么是的这个区/服 不能无限扩展的原因出在哪里呢?
网络带宽也可以让idc 加的啊。
因此正常情况下MMO用户的逻辑数据不能在多个逻辑处理服务器间传递和处理。
IM一般情况下用户只和自己的几个好友进行消息传输,交互实时性要求不高,用户的消息
可以在多个服务器之间传递。
因此IM类的用户数据可以在多个逻辑服务器之间传递,并不会降低用户体验。
On May 31, 4:27 pm, lijie <cpun...@gmail.com> wrote:
> 或者这样,每台服务器本来就各开50个进程,启动时假设一台服务器负责一个地图,但这个地图是要分到50个进程上的。这样的架构,本来就需要把一个地图拆成多个小块,在单台机器上进行用户的转移,还可以更进一步,做以动态调整地图。哪台服务器压力大了,就让其中的一部分进程把数据转到其它服务器上。压力小时可能完成的是本机进程间转移,压力大时完成机器间转移而已,还是进程间。
>
> 想想而已,实现难度可想而知。
>
> 在07-5-31,lijie <cpun...@gmail.com> 写道:
>
>
>
> > 在07-5-31,Yun Fan <fanyun2...@gmail.com> 写道:
On 5月31日, 下午5时11分, lijie <cpun...@gmail.com> wrote:
> 压力不是突然增大的,慢慢增大时就会进行转移操作了,不同的是压力大的时候,各进程负责的地图区块变小,这样用户行走很容易转移不同进程,通讯量增大。
>
> 我用50个进程来模拟50台机器,这样就不需要动态分区了,压力小时这假设这50个进程可以负责一个地图,压力大时其中一些进程把工作转到其它服务器上,降低了 本机压力,进程数没变。
>
> 把动态分区问题转变成动态转移问题,后者难度显然小得多,如果服务器架构之初就这么做了,自然不用区分是本机进程还是其它机器。需要实现一个调度服务器,它的稳 定性和正确性应该得到保证,它只负责根据压力转移地图区块到不同服务器,不负责用户转移工作,否则它的压力将非常大。当然压力本来不是用户造成的,各服务器需要 定时把压力情况通知给该调度服务器。
>
> 突然想到,这不是erlang的思想嘛,稍有不同,但都是进程。呵呵。
>
> 在07-5-31,diclogic <diclo...@gmail.com> 写道:
>
>
>
>
>
> > 难就难在:压力大时还要进行转移的操作,用户多时还要对用户多的那个zone进行影响用户体验的事情。
> > 兄弟你说的50这个数字有什么物理意义?指所有地区吗?每个地区在每个server上都有一个shadow?
>
> > On May 31, 4:27 pm, lijie <cpun...@gmail.com> wrote:
>
> > 或者这样,每台服务器本来就各开50个进程,启动时假设一台服务器负责一个地图,但这个地图是要分到50个进程上的。这样的架构,本来就需要把一个地图拆成多个 小块,在单台机器上进行用户的转移,还可以更进一步,做以动态调整地图。哪台服务器压力大了,就让其中的一部分进程把数据转到其它服务器上。压力小时可能完成的 是本机进程间转移,压力大时完成机器间转移而已,还是进程间。
>
> > > 想想而已,实现难度可想而知。
>
> > > 在07-5-31,lijie <cpun...@gmail.com> 写道:
>
> > > > 在07-5-31,Yun Fan <fanyun2...@gmail.com> 写道:
>
> > > > > 理解各位老大说的意思。
>
> > > > > 但是既然能够多台机器集群来支撑一个区(或者网游都叫一个服),那么是的这个区/服 不能无限扩展的原因出在哪里呢?
>
> > > > > 网络带宽也可以让idc 加的啊。
>
> > > > 如果服务器实现了动态分块
>
> > (区),自然没有什么问题了,100万人在同一个大地图,就动态把地图切成更小的块分到更多物理服务器上,其它人少的服务器动态合并到某一个物理服务器上,这个 实现起来非常困难,前段时间看过的"大型多人在线游戏"一书有提及,不过我相信很难实现一个稳定的版本。100万人太夸张了,服务器动态分区、动态转移数据通讯 量都是非常大的,想在用户毫无察觉的情况下做应该是不可能。
>
> > 征途这样的游戏,各个点位上只能站一个人,上面这种想法还是有可能实现的,魔兽这种许多人都可以重叠在一点上,怕是有些困难,一个点上叠几十人个,一块地图就没 办法分得更小了。- 隐藏被引用文字 -
>
> - 显示引用的文字 -
On 5月31日, 下午5时18分, lijie <cpun...@gmail.com> wrote:
> "兄弟你说的50这个数字有什么物理意义?指所有地区吗?每个地区在每个server上都有一个shadow?"
> 这个问题没回答到。是把单个地图切分成50块,给50个进程,用户在同一地图上跑的时候就可能在各个进程之间转移。
> 压力大的时候,其中一些进程把数据转移到其它服务器,自己不再耗CPU,相当于把CPU压力分担出去了。
> 简单一句话,就是用静态分区(50个固定进程)取代动态分区。
>
> 如果不熟悉动态分区这个概念,可以看一下"大型多人在线游",里面有简短的描述,跨区服务器那部分,讲的还行。
>
> 上面的静态分区,还是要涉及到2个在不同进程中的人相互战斗的问题,这本书也提到了,相邻进程(书中是服务器)要保存一些边界重复数据,这个重复区块大小也是有 说头的。
>
> 总之难度还是相当高的。
>
> 在07-5-31,lijie <cpun...@gmail.com> 写道:
>
>
>
>
>
> > 压力不是突然增大的,慢慢增大时就会进行转移操作了,不同的是压力大的时候,各进程负责的地图区块变小,这样用户行走很容易转移不同进程,通讯量增大。
>
> > 我用50个进程来模拟50台机器,这样就不需要动态分区了,压力小时这假设这50个进程可以负责一个地图,压力大时其中一些进程把工作转到其它服务器上,降低了 本机压力,进程数没变。
>
> > 把动态分区问题转变成动态转移问题,后者难度显然小得多,如果服务器架构之初就这么做了,自然不用区分是本机进程还是其它机器。需要实现一个调度服务器,它的稳 定性和正确性应该得到保证,它只负责根据压力转移地图区块到不同服务器,不负责用户转移工作,否则它的压力将非常大。当然压力本来不是用户造成的,各服务器需要 定时把压力情况通知给该调度服务器。
>
> > 突然想到,这不是erlang的思想嘛,稍有不同,但都是进程。呵呵。
>
> > 在07-5-31,diclogic <diclo...@gmail.com> 写道:
>
> > > 难就难在:压力大时还要进行转移的操作,用户多时还要对用户多的那个zone进行影响用户体验的事情。
> > > 兄弟你说的50这个数字有什么物理意义?指所有地区吗?每个地区在每个server上都有一个shadow?
>
> > > On May 31, 4:27 pm, lijie <cpun...@gmail.com> wrote:
>
> > > 或者这样,每台服务器本来就各开50个进程,启动时假设一台服务器负责一个地图,但这个地图是要分到50个进程上的。这样的架构,本来就需要把一个地图拆成多个 小块,在单台机器上进行用户的转移,还可以更进一步,做以动态调整地图。哪台服务器压力大了,就让其中的一部分进程把数据转到其它服务器上。压力小时可能完成的 是本机进程间转移,压力大时完成机器间转移而已,还是进程间。
>
> > > > 想想而已,实现难度可想而知。
>
> > > > 在07-5-31,lijie <cpun...@gmail.com> 写道:
>
> > > > > 在07-5-31,Yun Fan < fanyun2...@gmail.com> 写道:
>
> > > > > > 理解各位老大说的意思。
>
> > > > > > 但是既然能够多台机器集群来支撑一个区(或者网游都叫一个服),那么是的这个区/服 不能无限扩展的原因出在哪里呢?
>
> > > > > > 网络带宽也可以让idc 加的啊。
>
> > > > > 如果服务器实现了动态分块
>
不过话说回来,无限人数的MMO,没什么实际意义,大多数玩家,喜欢去新区建号玩,开的时间很久的区,一般继续创建新号的玩家不多,因为在老区里,新人想赶超老玩家,很困难。这种设计,我觉得不适合,等级、PK观念严重的游戏。
On 5/31/07, sunway <sunh...@gmail.com> wrote:
--
Sincerely,
Ghost Cheng
Email : ghost...@gmail.com
对于无缝地图,我曾经有过一个腹稿,一直没有时间去实现,也不是很成熟。
On 5月31日, 下午6时31分, "Ghost Cheng" <ghost.ch...@gmail.com> wrote:
> 我这里说的第二个连接,可以理解成逻辑的第二个连接,不一定非要是真正的去连接。可以直接在从网关上连接第二个场景。
> 上面说的只是一种思路,具体实现的时候,可以根据具体的构架去调整。以前有的游戏是没有网关的,比如奇迹。
>
> On 5/31/07, lijie <cpun...@gmail.com> wrote:
>
>
>
>
>
> > 内部服务器对用户可见了,可能带来新的问题。如果是通过网关,用户不需要建立这么多连接吧,在网关上解决掉?
>
> > 在07-5-31,Ghost Cheng <ghost.ch...@gmail.com> 写道:
> > > 对于无缝地图,我曾经有过一个腹稿,一直没有时间去实现,也不是很成熟。
> > > 大概的意思是:
>
> > 当用户接近当前所在地图的边界时,client开启第二个socket连接,连到边界另一边的场景服务器上。这样客户端从2个场景接收地图角色的数据,用于显示 。
> > > 当用户跨边界的时候,由于新场景的连接已经建立,所以不会出现卡机等待的显现,
> > > 当在新场景里,离边界超过一定距离后,断开旧场景的连接。
>
> > 每个场景的地图大小,可以设计的小一些,以防止大量玩家挤在一个场景上,但是这里说的小,是隐藏在服务器上的小,玩家可以感觉不到,应该让玩家觉得,四周的多个 场景,是一个完整的世界。
>
> > 当然这种方式的缺点是,相邻的2个场景服务器之间必须存在一个通讯通道,用于处理player数据的迁移。这里可能会遇到很多比较难办的问题。
>
> > 不过话说回来,无限人数的MMO,没什么实际意义,大多数玩家,喜欢去新区建号玩,开的时间很久的区,一般继续创建新号的玩家不多,因为在老区里,新人想赶超老 玩家,很困难。这种设计,我觉得不适合,等级、PK观念严重的游戏。
>
> --
> Sincerely,
> Ghost Cheng
> Email : ghost.ch...@gmail.com- 隐藏被引用文字 -
>
> - 显示引用的文字 -
On May 31, 5:18 pm, lijie <cpun...@gmail.com> wrote:
> "兄弟你说的50这个数字有什么物理意义?指所有地区吗?每个地区在每个server上都有一个shadow?"
> 这个问题没回答到。是把单个地图切分成50块,给50个进程,用户在同一地图上跑的时候就可能在各个进程之间转移。
> 压力大的时候,其中一些进程把数据转移到其它服务器,自己不再耗CPU,相当于把CPU压力分担出去了。
> 简单一句话,就是用静态分区(50个固定进程)取代动态分区。
>
> 如果不熟悉动态分区这个概念,可以看一下"大型多人在线游",里面有简短的描述,跨区服务器那部分,讲的还行。
>
> 上面的静态分区,还是要涉及到2个在不同进程中的人相互战斗的问题,这本书也提到了,相邻进程(书中是服务器)要保存一些边界重复数据,这个重复区块大小也是有说头的。
>
> 总之难度还是相当高的。
>
> 在07-5-31,lijie <cpun...@gmail.com> 写道:
>
>
>
> > 压力不是突然增大的,慢慢增大时就会进行转移操作了,不同的是压力大的时候,各进程负责的地图区块变小,这样用户行走很容易转移不同进程,通讯量增大。
>
> > 我用50个进程来模拟50台机器,这样就不需要动态分区了,压力小时这假设这50个进程可以负责一个地图,压力大时其中一些进程把工作转到其它服务器上,降低了本机压力,进程数没变。
>
> > 把动态分区问题转变成动态转移问题,后者难度显然小得多,如果服务器架构之初就这么做了,自然不用区分是本机进程还是其它机器。需要实现一个调度服务器,它的稳定性和正确性应该得到保证,它只负责根据压力转移地图区块到不同服务器,不负责用户转移工作,否则它的压力将非常大。当然压力本来不是用户造成的,各服务器需要定时把压力情况通知给该调度服务器。
>
> > 突然想到,这不是erlang的思想嘛,稍有不同,但都是进程。呵呵。
>
> > 在07-5-31,diclogic <diclo...@gmail.com> 写道: