云存储总体设计方案编号:10 HOM 2102 0002目录1. 目的 (3)2. 适用范围 (4)3. 定义 (4)4. 系统总体部分 (5)4.1系统概述 (5)4.2系统功能、性能 (5)4.3系统总体结构 (6)4.4关键技术 (8)4.5系统配置 (9)4.6外包、外购子系统规格 (9)4.7产品升级 (10)4.8用户支持(可选) (10)4.9可靠性规格 (10)5. 软件设计 (10)5.1功能设计 (10)6. 测试系统设计 (14)6.1单元测试设计 (14)6.2集成测试设计 (14)6.3系统测试设计 (14)修订履历1.目的云存储设计方案用来存储RCU-U(车云平台)终端设备所采集的数据,以及对采集数据简单的查询功能,是对软件及测试概要设计和详细设计的约束。
2.适用范围对于此设计方案设计多方面的内容,使用范围:软件代表、测试代表、设计代表。
3.定义4.系统总体部分4.1系统概述4.1.1名称、型号、版本、保密代号此项目为云存储,简称LaunchCloud,云存储,版本V1.00.000。
4.1.2版本描述4.1.3云存储主要是设计一个存储亿级记录的分布式云存储系统,整个系统大致包含2大部分:(1)云存储:RCU-U终端采集行驶数据的存储,RCU-U终端部分分析后的数据存储,MapReduce分析后的结果存储。
(2)云存储门户网站:设备管理,用户管理,用户操作日志记录,第三方应用的API(预留)。
该系统存储的数据主要是为以后的业务应用(如:UBI、汽车租赁等)提供原始的数据,以及提供大数据分析的技术扩展4.2系统功能、性能4.2.1功能特性4.2.1.1云存储功能有以下几个方面系统部分:1.使用业内比较成熟的,开源的Hadoop+Zookeeper+Hbase云存储来存储汽车原始的行驶记录,2.设备资料,用户资料等亿级以下的数据使用开源的数据库mysql来存储3.基于Linux操作系统具体业务部分:1.GPS信息存储2.G-SENSOR(加速/减速)信息存储3.陀螺仪信息存储4.速度信息存储5.发动机转速信息存储6.安全带指示信息存储7.气囊信息存储8.胎压信息存储9.里程计信息存储10.车门信息存储11.油耗信息存储12.点火信息存储13.转向信息存储14.远程诊断信息存储15.超速信息存储16.急刹信息存储17.急加速信息存储18.旅程行驶距离信息存储19.碰撞事故信息存储20.意外事故信息存储21.用户操作日志记录存储22.设备信息存储23.用户信息存储24.用户汽车阀值存储(电子栏栅,超速阀值,各种数据采集的频度等)25.软件下载26.系统日志27.第三方应用的API(预留)4.3系统总体结构4.4.1云存储系统方框图4.4.1.1云存储功能性系统方框图4.4.1.2 RCU-U物理性系统方框图4.4.1.3对应关系云存储层: GPS信息存储、G-SENSOR(加速/减速)信息存储、陀螺仪信息存储、速度信息存储、发动机转速信息存储、安全带指示信息存储、气囊信息存储、胎压信息存储、里程计信息存储、车门信息存储、油耗信息存储、点火信息存储、转向信息存储、远程诊断信息存储、超速信息存储、急刹信息存储、急加速信息存储、旅程行驶距离信息存储、碰撞事故信息存储、意外事故信息存储、用户操作日志记录存储云存储门户网站:设备信息存储、用户信息存储、用户汽车阀值存储(电子栏栅,超速阀值,各种数据采集的频度等)、软件下载、系统日志、第三方应用的API(预留)4.4.2可测性设计的整体结构描述:测试过程一般按3个步骤进行,即单元测试、组装(集成)测试,系统测试,为了支持这些测试在下面的软件设计中作了如下考虑:软件模块以及内部子模块的对外接口标准化,整个软件流程系统化,以支持单元测试中的模块接口测试、出错处理测试,并使测试用例测试,同时使集成测试方便容易;软件模块内部采用清晰明了的判断分支结构。
以方便白盒方式的路径测试;软件模块保证可理解性。
使用有意义的数据名和函数名,充分的注释。
以方便测试用例的生成、以及走查等软件评审。
在关键的地方增加LOG信息,以方便出问题的时候知道问题出在哪里。
4.4关键技术1.高可靠性云存储底层的HDFS是一个分布式文件系统。
HDFS有着高容错性(fault-tolerant)的特点,并且设计用来部署在低廉的(low-cost)硬件上。
而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序2.高扩展性Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
假如想扩展云存储系统中的存储容量,运算能力,直接水平添加机器,修改配置即可实现,上层程序不需要做任何修改。
云存储门户网站前端采用高性能的nginx服务器做负载均衡,动静分离,静态资源缓存,经典的master-slave热备切换,不间断提供服务;Web集群层同样也可以按照集群的负担情况动态添加物理机器;数据缓存层是提供快速响应的重要保障;数据库Mysql存储层可以随着访问量的增大,按照业务垂直切分3.高效性Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
基本上系统的关键点上都采用分布式部署,当系统访问量增大时,可以通过添加服务器来持续保证整个集群的高效性。
4.高容错性Hadoop能够自动保存数据的多个副本,并且能够智能地将失败的任务重新分配。
基本上系统的关键点上都采用分布式部署,即使有部分服务器可能因为网络、硬盘、cpu、主板等物理损坏,也不会导致整个集群不可用4.5系统配置4.5.1硬件配置(比较节省的配置)5台服务器(1台[server1]:24GB内存+2TB硬盘[7200 RPM],其他4台:8GB内存+2TB硬盘[7200 RPM]),其他千兆交换机把这5台服务器连接起来4.5.2软件配置Linux操作系统、Nginx软件、Tomcat、Hadoop、Zookeeper、Hbase、Mysql4.5.3具体部署server1: NameNode+DataNode+HRegionserver2: DataNode+Zookeeper+HMaster+HRegionserver3: NameNodeSecondary+DataNode+HMasterSlave+Zookeeper+HRegionserver4: DataNode+Zookeeper+HRegion+NginxSlave+Tomcat+MysqlSlaveserver5: DataNode+HRegion+NginxMaster+Tomcat+MysqlMaster4.6外包、外购子系统规格无4.7产品升级4.7.1版本升级规格由于整个系统都是运行在我们的服务器上,直接按照升级步骤来升级即可4.7.2系统可扩充性设计整个系统都是分成多个小模块,多层架构来开发。
方便产品的有效的维护和升级。
4.8用户支持(可选)4.8.1资料提供可以在存储门户网站明显的位置放使用快速入门,在需要用户填写的表单位置有提示行说明4.8.2联机帮助暂无要求4.9可靠性规格无5.软件设计5.1功能设计5.3.1软件基本设计思想云存储系统要求工作稳定,性能达到相关标准规定。
程序架构多层分模块设计,分布式、高可靠、高可用、高扩展架构。
5.3.2软件开发平台Linux开源稳定高性能的开源服务器操作系统;Hadoop是大数据存储分析的事实上的标准,开源免费,目前仍然在快速的发展;Nginx是一个高性能的HTTP和反向代理服务器,同样是免费开源的;Mysql是目前最流行的开源免费数据库5.3.3软件系统描述I软件系统结构描述、总体软件框图II功能实现原理通讯集群通过云存储系统提供的API接口把RCU-U采集的实时业务的数据插入到HBase;云存储门户采用经典的MVC三层结构,有时改变其中的一层就能满足应用的改变。
一个应用的业务流程或者业务规则的改变只需改动MVC的模型层,它实现了显示模块与功能模块的分离。
提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
根据用户的请求,决定是从数据库获取数据还是从Hbase集群获取数据或者2者都有。
III模块规格、设计描述在各功能模块中需要注意有关数据精度的优化,达到提高网络传输速度,减少云存储的存储空间,方便以后根据第三方业务快速的数据分析。
表1:详细功能模块说明IV软件模块可测性设计规格需要提供软件各模块的单元测试和集成测试用例。
满足自动化测试要求。
提供给后台详细的测试数据和结果。
6.测试系统设计测试系统设计应满足产品的要求。
6.1单元测试设计单元测试是研发设计人员对板级软硬件各模块进行健壮性测试。
各软件设计人员应对各自负责的模块进行功能和性能测试,包含正常测试和异常测试。
充分保证产品底层最基础的部件的设计质量。
软件单元测试报告应由对应的研发设计人员完成提交和组织评审,以及进行缺陷早期处理和完善。
测试人员对各单元测试进行独立测试和验证,提交相应文档。
云存储具体模块内容请见前面表格。
6.2集成测试设计集成测试是在单元测试的基础上对模块之间,板级间组成的子系统进行健壮性测试。
由研发设计人员和测试人员各自完成。
验证模块间的功能和性能,验证单元测试的未知缺陷。
研发设计人员完成自测,缺陷处理。
测试人员完成测试,验证和提交相应报告,跟踪缺陷处理。
云存储需要测试的主要部分有:通讯集群与HBaseMaster数据库间的通讯,采集下来的各种数据是否已经正确保存到对应的表中,云存储门户网站是否能够快速查询到采集的数据等。
6.3系统测试设计系统测试在集成测试完成后,对产品的整体测试。
覆盖产品所有需求。
这部分由测试人员完成。
系统测试还应包含,可靠性测试,环境试验等。