Linux 服务器开发

从事这行时间不长,才半年时间,做的是webgame网页服务器。现在做这个的很多,当然高手也很多。

我提供自己的心得主要是想让给多的游戏成功,让更多的服务器能够给大家提供更好的服务

在游戏服务器的传统上,网关是很受人家欢迎的,但是现今却有一部分开发框架在摆脱网关。具体的情况再做分析。

我先简单介绍下,我之前第一个服务器的架构吧。

结构很简单,服务器主要分成了以下几个部分,网关,DB,登入服务,pk服务,应用服务,相互之间的结果很简单基本如下所示:

Linux 服务器开发

行业上的人应该明白,这就是最简单的结构,登入是和平台合作的,也就是做个借口出来,登入和登出都是在由登入服务器和应用服务器做通信实现的。数据库没细分,但是一般都是分成两个数据库,一个是账号数据库,另外一个是应用数据库,进入游戏后的数据都只是传说到网关的,网关然后分类分出。

很显然这个基本框架不是非常好,有改善的结构就是,把DB也做个DB网关,应用通过DB网关来访问DB。说起数据存储,不得不说下另外几种常用的数据存储。现在数据存储主要包括3种,也展现了3种不同的存储速度和需求。

1,就是数据库,数据库首选Mysql,还有oreale,至于别的数据库,我见得不是很多,也许我目光狭窄。

2,内存,使用容器存放在内存

3,.映射硬盘数据。

3者表现得重点各不相同,至于其中的优点和缺点,我便不提了。数据库不想多说,只想说说后面两个,内存的存放这个得需要小数据,但是再小数据它必定是成为一个共享数据,多线程访问,那么线程锁就得做好。

所以我个人意见把这块单独分开,做个缓存服务(结构完全分开内部除了查找,增加,删除,修改,提供接口访问,别的事情都不做),要是闲工程大了点,小的服务器可以完全和业务放在一起,效率自己把握好就是,别犯错,影响效率。(其实我一直想做个内存数据开发包出来,封装容器,挺简单的)

至于映射硬盘数据这个我并不在行,我只是了解过这个概念,但是没有具体去实现,但是个人认为,它结构主要是两部分,内存交换区,硬盘数据映射程序,具体怎么做好,介于没有去实现过,所以不做发表,这方面的技术除了要做到大的数据存储,又担心数据库结构不满足条件而作的。一般服务器不会深入使用这种东西,说白了,这个就是改写数据库单调结构而做的。

简单结构基本就这么多,但是简单结构是不适合大型项目使用的。下面的结构可以满足大型服务器的支持,

画图太烦,我就不画图了。

和上面登入是一样的,数据存储技术也是一样的,但是在网络结构和服务上做出很大改变。

登入时候连接的是一个验证服务器(这里会返回给你一个你将要连接的服务器IP和端口),

同时会对你的网络情况进行一个判断,还有网络,从你网速上选择适当网络端服务,

网络端服务只是用来收集网络数据(所以你接下来的数据全是发送到适合你的网络端服务器上)

,网络数据服务其实是一堆服务器,这里有一个管理网络服务器的出口的服务器,每个时段会获取应用服务器的空闲情况,然后返回给网络服务器,网络服务器根据闲忙情况选

择应用服务器的IP和端口。应用服务器其实也是一堆服务器,

它没有在网络上做什么特殊处理,而是在服务器结构上分得很细,

应用服务器最好每台之间独立(指的是每台服务器都是只是负责一个或者多个类型业务,最好不要几个服务器同时支持一个服务,)。

因为服务器和服务器之间的通信还是挺频繁的。这种结果能够适合大型服务器,

不过开销不小,其实你把几台选择服务器去掉,还是和上面一样的。选择服务器只是在连接上有一个选择而已,第一次选择完毕以后就不相关了!

上面这种结果能够满足一般服务了,第一种结构在设计上能很好转变成第二种结构,能否简单转换就得看你的结构好坏了!

其实还是有第三种结构的服务器,这种结果,其实你们猜都猜得到是什么样的,因为本人水平有限不卖弄第三种结构了,也许我有空会卖弄下,今天就不写了!~

相关推荐