首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

多年前的一款页逛《倾城》服务器源码分析

2013-12-21 
多年前的一款页游《倾城》服务器源码分析未完结版。业务逻辑代码 有点看不下去了,于是就放弃了。????游戏把数

多年前的一款页游《倾城》服务器源码分析

未完结版。业务逻辑代码 有点看不下去了,于是就放弃了。


?


?


?


?

游戏把数据持久层和数据缓存层 合并为同一层了。所以这里就并为一层来一起讲解。


多年前的一款页逛《倾城》服务器源码分析
?

? ? 如果非要分数据持久层和cache层,DataAccessor算是主要提供了cache的实现。持久层提供了2种实现:LocalFileAccessor是将用户数据存放在本地文件系统中,以文本文件的形式存在,详见localdata\*或data\*,貌似data目录下的更齐全。目前源码中用到的是localdata。DatabaseAccessor是将用户数据存放到数据库中,读了GameServer.init()中提供了mysql和mssql两种数据库可选,而配置文件config\server.cfg中配置的是mssql数据库的数据源信息,而且还提供了mssql的驱动包。

? ? DatabaseAccessor中,写数据库是异步的:创建一个包含jdbc sql语句和参数的job,放入队列中等待运行。对于插入操作,是先插入name,然后获取数据库生成的id,赋值到内存中,然后创建一个update job放入异步队列中等待更新。

? ? 这一层的源代码没有太多可圈可点之处,问题却是比较多,比如sql语句硬编码到源代码中,jdbc代码充斥于各个角落,导致代码冗余且难以维护;数据持久层仅仅使用了单个队列、单个线程处理,在某些情况下风险很高,例如单个job处理时间过长导致后续job没有机会及时运行,尤其是当队列严重阻塞、断电或宕机时后果最为严重;不能充分利用多核cpu的资源。

?

?

?

热点排行