分布式围棋服务器

考虑做一个分布式的围棋服务器很久了.市面上通常所见的围棋服务器都是单个的,连上哪个就只能看见那个服务器上的人和棋局.象TOM开了好几个服务器,但因为之间不沟通,大家只上"雷霆万钧",很少有人上另外两个.这样在人数增加的时候服务器经受的折磨是痛苦的.

看过一些关于MSN Messenger的介绍,觉得它的法子很不错.具体来讲,登录时有一个服务器群处理连接,但是你与别人聊天时,聊天的服务程序就可能在另外一台机器上了.类似的办法可以用来做围棋服务器,大致想法如下:

一.用户登录的时候,首先连往一个服务器地址.如果有动态的DNS分配,譬如把连往一个服务器名解析时随机转到服务器群的任意一个IP,当然最好.如果不行也没关系,用户第一次连的服务器只是分配器,它根据目前服务器群的空闲状态分配一个最空的机器返回给用户,然后断开连接(如果分配的机器不同),客户端根据返回的机器IP再次连接.
二.分配的服务器接受客户端连接后,与客户端保持联接,并负责更新客户端当前的在线人,打开的棋室.当然,每个在线人可能连在不同的更新服务器上.
三.用户想新开一个棋室时,连接的服务器告知用户哪个服务器可受理,于是客户端连到相应的服务器上开新棋室.
四.用户想进入一个棋室时,如果该棋室在另一台服务器上,客户端应自动与该服务器相连.
五.某棋室所在的服务器负责更新进入该棋室的所有客户端.

另外需要考虑的是服务器之间的同步.因为服务器应当在一个局域网内,传输速度快,所以在同步上可以比较容易.

其它还需要考虑的如服务器的热更换,(可以设置它的状态禁止接受新的联接,直到所有连接都消亡而止),以及自动恢复(服务器重启).

今天上网查了一下租用Virtual Private Server的价格,50GB流量/月的可以便宜到$15/month.是用LINUX.不过这应该问题不大.虽然做个分布式服务器的想法令人兴奋,而且可以考虑在 MultiGo 里捆绑一个客户端,但毕竟得花很多时间去做,而且也不一定能有很多人来玩.所以现在也只能想想而已.做KGS的 William Smith 不知道是谁支持的.真是很羡慕他,他好像几乎是 full-time 地做 KGS.

posted on 2004-07-14 15:39  阿呆  阅读(1762)  评论(3编辑  收藏  举报

导航