一款SNS战略休闲游戏开发笔记01——分布式系统逻辑架构设计的补充与讨论

在《一款SNS战略休闲游戏开发笔记01——分布式系统逻辑架构设计 (2010-10-21 10:06)》一文贴出后,得到了一些博友的回应,很是开心,而且还有几位朋友热心的给出一些建议:

@Phantaci.com建议“建议楼主设计一个DB前端,db前端用于连接游戏的多个DB,db前端就是一个数据存取代理服务器.”

@黑色建议:“在登录后,全部交互就要通过内部通讯来处理咯,不然被改的几率很大滴

补充:不知道你做过SF没,全部游戏通通都只有一个对外的网关来处理,防止数据被篡改”

@花祭果凛建议:“如果我做外挂,我会在这做手脚

4 War Service(WS)

A.战斗数据处理 
B.战斗数据保存 
搞个N倍经验金钱什么的”

 

在昨天的软件开发设计中,对这个游戏开发的架构也越来越细,本文既是对前文的补充同时对几个朋友的建议进行回应。

 

一、数据访问

DB这一块我是这样打算的,以Mysql为主数据存储,而前缀配置Cache Server,程序里写一个DB代理,进行Mysql的主读写分离以及后期可能的sharding处理。

请对Mysql 的sharding处理有经验的朋友请给一些建议或开源产品推荐。

 

二、单点故障的问题

从上文中的架构表看,Master Server(MS)是一个单节点,逻辑上是一个单点故障点,如何处理呢?我们是这样打算的,为了不影响开发进度,而且现在就考虑得太复杂,既增加了开发难度也增加了投入成本,所以前期开发不考虑解决它,如果上线运营后玩家众多,再考虑硬件热备同时着手软件方面的设计开发。

 

三、玩家在整个游戏进程中到度是用几个连接或切换几个连接?

对这一问题的解决方案无非有两种:

1、客户端只连网关服务器,即:Client <---->Gateway Server <----> 后端服务器群

2、客户端应用不同功能或不同阶段连上不同的服务器,同时一个或多个连接,即:Client <---->Login Server

     Client <---->Game Server

     Client <---->War Server

  我们还是打算采用1+2,即:Client <---->Login Server;Client <------>Gateway Server <----> 后端服务器群

这样的优点是:

1、登录服务器可以对整个游戏世界服务,更有利于节省硬件成本

2、Gateway将游戏后台的所有处理进行了“封装”,且可以更灵活的进行负载均衡等,理论上也更加安全。

 

三、针对文首 @黑色、@花祭果凛建议的安全问题,我们也还是有困惑,开发是分布这个是可以最后再来加的,在此也与大家说说网页游戏的先天安全缺限:

1、不论是js+html,还是flash技术,都是很好被看源码的,不论采用什么加密算法或方式,这些对于WEB GAME来说都是一个先天不足。

2、由于代码是可见的,那么用任何加密数据报的手段,似乎都只是增加一点复杂度,请大家共同探讨一下Webgame与服务器端数据安全传输的方案。

3、另由于本项目(即时在线战略,似星际),像其他回合制游戏那样由服务器端验证数据或控制数据的方式对本项目就不凑效了。

 

四、上文提到了一个大所架构的规划,接下是软件开发, 本着节省公司开发资源的目的,我们将整个项目分为三大块:基础公共组件/库开发、服务运管服务开发(MS,SS等)、游戏服务开发(LS,GS,CS,WS等)。然然后要所开发

1、首先进行部分基础架构的设计:

A.服务之间通信必须的基础通讯组件或库

B.消息协议,包括消息体、封装、分发、处理、过滤、加密、扩展

C.各个服务必须采用统一的开发接口和开发模型,包括服务的启动、停止、暂停、重启、升级、心跳发送,都是所有服务都将以dll插件的形式开发,应用服务的开发前提和基础

 

posted @ 2010-10-22 11:15  一挥  阅读(2716)  评论(3编辑  收藏  举报