一起做网游吧【8.5】:轻松一下

网游的教程下周估计可以更新。目前正在处理文档和bug修正中。在最近的两周中,我几乎全力以赴在了网页上了,从时间上计算,大概占用了7天以上的时间,因为周末大部分时间要配老婆,所以,服务器的代码其实占用时间不多。

今天终于完成了大约90%的量了,当然,中间有些特性不得不放弃了。所以可以轻松一下。反思下这次的失误和教训,顺便说下将要更新的内容。

未能完成的内容:

1.web管理界面的数据更新,原因在于自己对javascript没有想象中熟悉,对于extjs库,没有时间去理清细节。这直接导致了制作周期比想象中的要长。

2.web管理界面中的事件及输出日志到web页面。由于第一点的原因,这部分未能有时间添加。以后可能作为一个专题来说。

3.web管理界面中的功能。没有想好该如何布局,即使想好了,由于对extjs不熟悉,暂时也没有能力添加。

已经完成的内容:

1.多服务器结构。虽然这个特性是我两周之前临时决定要增加的,但觉得还是提前处理比较好,而且,这个结构和之前计划的不太一样。之前的计划是,某台服务器作为唯一的接入点,将其他功能可以布置到其他的服务器上,其他服务器对于客户端来说,不可看见。这样做的好处是处理比较简单。缺点是接入服务器要有足够容量的连接支持,如果接入点出现故障的话,则没有人能接入了。现在我将这个分开了。在开始阶段,接入点还是只有一个可见,当用户登录之后,出现了服务器列表,每个服务器可能是由不同的服务器组合而成的。在加入服务器之后,用户将在该服务器下找一个当前用户最少的服务器进行重新连接。这样分担开了接入点的压力。当然,这样处理会有引发一些小问题。在代码更新的时候将会做特殊说明。

2.web管理界面的初步进行。虽然该部分我进行了努力的奋斗,虽然该部分进度非常的糟糕,但还是可以看的见点东西。

3.服务器的动态添加和关闭,移除等。监视状态的钩子植入(目前有些bug,可能是我整理代码引起的。)

在完成内容部分,虽然看上去不是很难,但其中的细节处理却比较的麻烦。而多服务器的结构,直接导致了之前数据库结构的重新安排。改动还是比较大的。之前提到的tcp_server,觉的有点满足不了要求,想改,却来不及了。通过调整结构,也总算可以了。

这是服务器的web监视界面:

这是erlang自带的appmon看到的情况,根据之前的命名规则,这里启动了总共4个服务器,端口分别为5000, 5001, 5002, 5003,结合上图,test1服务器总共有3个子服务器提供,端口分别为5000, 5001, 5002,test2只有一个服务器提供,端口为5003,均是本地(我的vmware还没有装好,没时间研究了。),每个服务器的最大用户数均为3个,因此test1最大可以接受9个连接,而test2只有3个。

这里,一个用户登录并进入了5002端口的服务器,这是手动刷新之后的服务器状态,手动刷新的原因,上面已经说了。

客户端的接入和之前给的完全一样,只从5000端口接入,这里可以看到它切换到了5002端口。下面是appmon给出的树状图:

再次登入一个客户,web管理界面就变成了:

上图可以看出,服务器负载根据情况进行了平衡。由于服务器可以动态添加,并根据运行情况,随时进行负载平衡,所以,理论上,可以实现非常非常多的接入。下面是接入两个客户之后的appmon给的树形图:

下图是动态关闭了test2服务器之后的web管理截图:

说明一下,在上述截图中,第一组和其他的不太一样,因为我重新编译之后,在接入的时候突然出错了,因此重新启动了服务器。其他的均是一次启动之后的截图。动态添加服务器没有做演示,下次更新时再说明(我忘了)。

PS:关于这次的小数点,因为最近实在太累了,觉得想要轻松一下。内容和服务器相关,但不是完整的技术,却又和下一节有关,所以只好8.5了。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据