1、 系统架构特点
1)、系统的数据库是分布式存储设计的,支持海量级数据存储;
2)、引入Session Server和Cache实现,从而来避免频繁数据库访问对系统造成性能瓶颈;
3)、系统是多线程的、异步的
4)、系统是可被实时监控的,可以实时隔离
5)、系统是安全的,用户在登录系统后,系统会生成一个随机的、不可伪做的加密串,
后面操作需要获取用户的信息只有通过些加密串来获取;
6)、系统的扩展是非常灵活的,所有业务功能均可作为组件方式以Webservice标准接口发布出去,
类似 SOA 的作法。
2、 分布式存储设计
2.1 索引数据库表设计
2.1.1、首先建立有规则的,可分段管理的ID段
2.1.2、xxx ,因为涉及到商业秘密,所有先去掉了
2.2 数据库分布式存储设计
数据库是基于分布式存储设计的,可以支持海量级数据存储;
数据库是通过“用户号码段”的定义,对用户的数据进行分散存储;
而号码段表的数据如下:
id_range mysql instance
1000~5555555段 192.168.1.5
5555556~10000000段 192.168.1.6
2.3 Session Server 分布式存储设计
以分区做法存储 Session 的数据,用户在进入游戏之前,先选择一个区再进入。
这样用户的所有数据就存在选择的Session Server上。
每个Sesson Server有用户数量要求,当达到一定的用户数量,将拒绝其他用户进入。
3、 安全性
3.1:存储加密
用户在登录系统后,系统会生成一个随机的、不可伪做的加密串,即生成一个在线用户及此用户对应的Key(加密串),
其他操作通过此Key来获取用户的信息,包括各人物及人物属性;
加密串的生成规则如下:
由ID+客户端ip+随机码+当前时间(毫秒)组成,然后通过由Md5加密生成。
这个加密串只会给一个用户一次登录使用,过期将不再有效。
3.2:防止恶意攻击
用户登录成功游戏之后,所有操作都会异步记录到主库的日志表中,已记录用户每天做了什么操作。
这份数据是每天一份,同样也是分布式存储的(具体实现详见高效性章节)。
防止恶意攻击也是利用这份数据进行统计的,每台Http server的Linux有一定时程序,会定时读取这份数据,
如果发现某号码符合恶意攻击规则,则会将此号码写入到黑名单中,并拒绝操作;
即便被攻破,系统对于关键操作也要留下操作日志到日志文件中,如log4j日志文件,以便事后诸葛;
4、 高效性
4.1 Cache及Session Server的设计
4.1.1:Cache
对于xxx等不会经常变化的实体信息,可放入Cache中(如OSCache),减少对主数据库的访问;
4.1.2:Session Server
对于xxxxx等实时性要求较高的值,可放入到 Session Server中,每次需要读取或更新
值都到Session Server中读取,减少对主数据库的频繁访问。
一个xx第一次登录,会从主数据库中读取它的所有属性出来放到Session Server中,此后只要此xx在线,所有
xx属性的值变更都是与Session Server交互操作,而系统会定时从Session Server取得数据与主数据进行同步。
Session Server使用 Mysql Memory(Engine)来实现;同时 Session Server是集群式,有N台Cluster节点进行数据复制备份,保证Session Server的稳健性;
4.2 异步处理、队列设计、Socket长连接
4.2.1 开发思路介绍
系统使用 wap表现层+中间件,中间件实现所有业务逻辑,是用异步IO Socket实现的,可以减少线程的创建和discard所带来的性能消耗,在同步Socket中,一般做法是创建一定数量的线程组成线程池,如果数量过多,性能是比较低的,因为当Linux OS在处理超过1000线程时,各线程换页的性能是很低下的。使用异步 IO Socket(即Java NIO)的好处是性能高,由中间件统一管理Session、Cache和Database;
Http server只处理显示页面逻辑部分,而业务逻辑部分是在中间件实现的。Http Server与中间件通过TCp Socket进行通信。
4.2.2 异步处理
对于用户每次操作都需要记录日志的功能,可以使用异步处理的方式来处理,Socket客户端把请求异步
发送给Socket服务器端,无需等待结果返回,提高性能
4.2.3 Socket长连接
对于游戏用户,常用的场景是用户长时间停留在系统操作,故客户端应该Keep Socket连接不关闭,减少经常
创建Socket所带来的性能消耗;
4.2.4 队列设计
对于用户的请求,如果中间件处理不过来,会使用一定数量的队列来存放它,当中间件空闲时,会读取队列进行处理,
提高系统吞吐量;
5、 健壮性
5.1 数据库集群和备份
对于基于Memory存储的数据库,可以使用数据库的Cluster机制进行数据实时同步和备份,不会造成单点危险。
对于基于disk存储的数据库,可以使用数据库的Cluster机制或采用C-JDBC中间件进行数据实时同步和备份。
5.2 中间件冗余设计
可以在同一服务器上使用不同端口启动同一中间件,从而实现功能冗余
5.3 Http Server集群
利用 移动DNS功能,搭建N个Http Server来提高应用的吞吐量和性能
6、 扩展性(SOA)
6.1 组件抽象化:
6.1.1 抽象化组件及定义好接口,所以实现基于接口来开发;组件以接口的方式提供,而实现类是可以随意切换的,这部分使用Ioc容器实现;
6.1.2 接口需足够灵活,足够抽象,应包揽系统所有功能,并供外部本地JVM调用或远程调用;
6.2 业务功能可重用:
使用远程调用方式,如使用web service或其他远程调用方式,如基于二进制数据传输的hessian或基于xml的burlap。
7、 自适应性
7.1 模块可测试
应用程序是基于 JDK5.0上开发的,利用JDK5.0自带的JMX功能,可以实时监控到应用程序的运行情况。
7.2 模块自检
对于关键功能和应用,如果发现故障,系统会自动报故障,以email或手机方式发送给维护人员。
8、 独立性
利用 JMX 可以实时、快速且不影响运行的情况下,隔离有问题的接入系统
9、 系统基础平台选型
OS: Redhat Enterprise Linux 4
JDK: Jdk 5.0
Mysql: mysql 5
Servlet Server: tomcat 5
Web Server: Apache 2.0
Database Backup middelware: Mysql Cluster、C-JDBC(备选)
10、 系统软件架构选型
View:Wap1.0/Wap 2.0 + FreeMarker
MVC: Webwork 2.16
IOC/AOP:Spring 2.0
ORM:IBatis、Hibernate(备选)
Java NIO:Cindy
分享到:
相关推荐
《Dw_android手游产品需求文档(初稿)》是一份由产品经理邓伟编写的针对PPlive Android手游的详细需求说明书。这份文档旨在为产品的开发团队提供清晰的指导,确保产品的设计和功能满足目标用户群体的需求。以下是...
这份文档是项目初期的重要参考资料,它定义了游戏的设计目标、功能特性、用户群体以及技术实现等方面,对于团队成员理解产品愿景、规划开发路线和协调工作具有关键作用。 一、产品概述 手游产品的需求文档通常会...
《Dw_android手游产品需求文档(初稿)》是一份详细阐述PPlive Android手游产品的初期需求规划文档,由邓伟在2011年10月21日编写完成。文档旨在为产品的开发和设计团队提供清晰的指导,确保产品能够满足目标用户群体...
在这个阶段,系统设计人员需要编写一份详尽的概要设计说明书,以指导后续的详细设计和开发工作。这份名为"项目名称_概要设计说明书"的文档由广州市品高软件开发有限公司和广州市微高软件科技有限公司联合发布,并...
标题和描述提及的是“流水线专用镗床液压动力系统设计-液压站设计”,这是一份关于机械工程及自动化专业学生的作业,涉及到的内容是针对特定流水线作业的镗床,设计其液压动力系统的核心部分——液压站。这份文档...
《Dw_android手游产品需求文档(初稿)》是一份详细阐述PPlive Android手游产品的初期需求规划,由邓伟于2011年10月21日编写完成。该文档旨在为产品的开发团队提供明确的方向,确保产品设计与功能符合目标用户群体的...
报告基于一系列相关文档,包括项目计划、开发计划、需求规格说明书、用户操作手册初稿等,以及软件工程领域的专业书籍。 2. 任务概述 系统目标是创建一个高效、快速、安全且可靠的机票预订平台。运行环境为旅行社的...
文档编号为YNC365-ELOSv1.3的贷款需求文档是一份保密级别的机密文件,由作者在2017年1月1日完成初稿,经过多次修订,直至2022年3月17日最终批准。这份文档的修订记录详细列出了每次改动的时间和内容,确保了版本的...
《软件开发文档_技术开发模板.doc》是一份详尽的指南,旨在规范和优化软件开发过程中的文档编写标准。这份文档对于确保团队间的有效沟通、提高工作效率和保证项目质量至关重要。以下将对其中的关键知识点进行深入...
总的来说,这份详细设计文档全面地描绘了个人健康Web应用的系统架构和组件交互,为开发团队提供了明确的实现路径,确保了软件的可维护性和扩展性。设计中强调了模块化、接口隔离和职责划分,这些都是软件工程中提高...
《最好软件详细设计说明书参考文档》是一份针对大型软件项目——丁丁网上购书系统的详尽设计指南。这份文档旨在为开发团队提供清晰、全面的设计规范,确保项目的顺利进行和高质量的软件产出。以下是该文档的主要内容...
初稿论文可能包含项目背景、需求分析、系统设计思路等内容,而终稿论文则会详细阐述系统的实现方法、测试结果和结论,通常经过多次修改和完善。 5. **系统说明**:这份文档将详细介绍系统的架构、功能模块、技术...
【单片机技能与认证培训设计报告初稿】 ...总结,这份初稿详述了基于单片机的数字电压表设计过程,涵盖了从理论基础到实际操作的多个层面,对于学习单片机应用、数字信号处理和嵌入式系统开发具有很高的参考价值。
《信息系统软件开发流程管理规范初稿》是一份旨在规范软件开发过程的重要文档,它涵盖了从项目启动到最终交付的各个阶段,确保了开发工作的高效、有序进行。以下将详细阐述该文档涉及的主要知识点: 一、概述 在...
- 学生需要编写一份详细的设计说明书,包括中英文摘要,详细阐述设计思路、过程和结果。 综上所述,基于PLC的机械手设计是一项综合性的工程实践,涵盖了理论知识的学习、实际操作技能的锻炼和项目管理能力的培养,...
4. **系统说明**:这份文档可能详细介绍了系统的使用方法、功能特性和操作流程,对于用户和管理员来说,是一份重要的参考指南。 5. **答辩PPT**:这可能是项目开发者在学术答辩或项目展示时使用的演示文稿,包含了...
4. **初稿论文与终稿论文**:这两份论文详细记录了项目的背景、需求分析、系统设计、实现过程和测试结果。通过阅读论文,可以了解系统的开发流程和遇到的问题,以及解决问题的方法,对理解ASP实际应用非常有帮助。 ...