1、XX 金融信息服务平台项目技术方案XXX 有限公司二一四年七月目 录一、 简介 4二、 系统总体架构 4三、 技术选型 43.1 开发语言 43.2 数据库 53.3 基础技术架构 53.3.1 Spring 框架53.3.2 iBatis 数据访问框架53.3.3 Redis 缓存框架.63.4 前端开发 63.4.1 PC 端网站63.4.2 PC 端后台63.5 第三方开发 63.5.1 微信开发 73.5.2 支付开发 73.5.3 资金托管开发 73.6 安全体系 73.6.1 数据加密机制 73.6.2 JWT 认证标准.73.6.3 完善的日志机制 83.7 集群方案 8四、 工
2、作量估算 9五、 参与人员 .263.1 技术总监 .273.2 架构师 .273.3 开发团队 .283.3.1 项目经理(1 人)283.3.2 前端开发工程师(4 人)293.3.3 后台服务开发工程师(3 人)323.3.4 UI 设计工程师(2 人) .353.3.5 数据库开发工程师(2 人)363.3.6 质量控制工程师(2 人)38六、 经费预算 .40一、 简介本技术方案是由华夏标准信用管理有限公司设计,目的是为金担当信息服务平台提供技术上可实施的方案。本方案从技术选型、工作量估算、参与人员和经费预算几个方面做了详细评估,是充分分析了客户需求并结合自身行业经验做出的成果。二、
3、 系统总体架构本系统使用三层架构和基于 Web 的访问界面,以便于前端业务用户的使用。先进、可靠、稳定的架构可以有效降低系统间耦合度,使系统复杂度分割合理,保证系统可维护性与可管理性。系统架构如下图所示:三、 技术选型3.1 开发语言选择 Java 体系的最大的优势在于其庞大而完善的生态系统,其学习成本和技术风险是比较低的。Java 生态系统的完善性主要体现在一下几个方面: 数量丰富的从业人员 完善的第三方技术体系和社区 功能强大的开发工具选择 Java 体系能为项目的持续开发和维护提供一个平稳的成长曲线。3.2 数据库MySQL 数据库相对 Oracle、SQLServer 等数据库优势如下
4、: 免费 多种存储引擎可灵活适应不同的业务场景 分布式集群有成熟的方案可供实现 能与 Java 很好的集成选择 MySQL 不仅可以节省一大批 License 费用,也能为平台在初期成长时提供良好的存储支持。3.3 基础技术架构3.3.1 Spring 框架Spring 框架作为轻量级 IOC 容器,现在已经是行业标准,其适应范围很广。作为粘合剂,Spring 框架有很多优点: Spring MVC 为分层构建和管理代码提供良好支持。 为 RestFulAPI 设计提供良好支持,使得构建集群系统更为容易。 Spring AOP 为垂直领域构建代码提供良好支持 使代码隔离后更容易管理 Sprin
5、g 声明式事务 事务的控制更为简单3.3.2 iBatis 数据访问框架是最简单的一种持久化框架,其结构清晰,灵活配置。相对 Hibernate 和 Apache OJB 等“一站式”ORM 解决方案而言,ibatis 是一种 “半自动化”的 ORM 实现。其主要优点如下: 把 sql 语句从 Java 源程序中独立出来,放在单独的文件中编写,给程序的维护带来了很大便利。 封装了底层 JDBC API 的调用细节,并能自动将结果集转换成 Java Bean 对象,大大简化了 Java 数据库编程的重复工作。 简单易于学习,易于使用,非常实用。 需要程序员自己去编写 sql 语句,程序员可以结合
6、数据库自身的特点灵活控制sql 语句,因此能够实现比 hibernate 等全自动 orm 框架更高的查询效率,能够完成复杂查询。3.3.3 Redis 缓存框架由于使用了 iBatis 作为数据访问框架而没有使用 Hibernate,因此选择了额 Redis 作为主要的缓存容器。Redis 是一个基于 key-value 的高速缓存系统,能支持更多复杂的数据结构,并且有持久化的功能。并且 Redis 也是集群系统中的重要组件之一。本系统使用 Redis 来应对高并发访问下对数据库造成巨大压力的问题。3.4 前端开发3.4.1 PC 端网站PC 端网站由于需要兼顾各种访问者,而访问者使用的浏览
7、器众多,标准不一,所以在兼容各浏览器版本上的工作量会比较大。其中主要是 HTML4、XHTML1 和 HTML5的兼容工作量。由于一些比较知名的框架的新版本已经明确表示不再支持 IE6-8,在 JS框架使用上还是以 JQuery1.11.3 为主。 JQuery 1.11.33.4.2 PC 端后台PC 端后台是各个机构和平台维护者使用,可以对浏览器有较高要求,比如使用谷歌浏览器的最新版,可以完美支持 HTML5 的相关特性,在 JS 框架上可以使用JQuery2.1,EasyUI1.3.6 以及各种 JQuery 小插件。罗列部分主要组件如下: JQuery 2.1.4 EasyUI 1.3
8、.6 BASE64 2.1.7 Fancybox 2.1.5 Uploadify 3.2.13.5 第三方开发3.5.1 微信开发 企业号企业号,是微信为企业用户提供的移动应用入口,也可以连接组织与个体间相互认可且稳定的关系。微信企业号与公众号最主要的区别是,只有限定范围内的用户才可以关注对应的企业号,使用企业号发送的信息数量几乎不受限制。企业号开发社区比较成熟,腾讯提供了详细的开发文档,在 Github 上也有基于JAVA 开发的 SDK:weixin-java-tools。3.5.2 支付开发现在国内第三方支付平台众多,必须要对用户受众、第三方支付的知名度、支付接口的形式、第三方支付服务的
9、稳定性、接口规范、费率等进行考察,在做好以上的调研分析后,结合自身的需求,才能最终确认接入哪家(或者几家)第三方支付。不同形式的支付方式可能会形成不同的产品呈现方式。下面提供几家我们做过的第三方支付平台。 汇付宝 中金支付 宝付支付3.5.3 资金托管开发资金托管是银监会对 P2P 平台做出的要求,其选择过程与选择第三方支付过程一样,本系统的资金托管方和第三方支付方都是同一个厂商,这样处理在实现上可以更为统一。3.6 安全体系3.6.1 数据加密机制在保障信息安全各种功能特性的诸多技术中,密码技术是信息安全的核心和关键技术,通过数据加密技术,可以在一定程度上提高数据传输的安全性,保证传输数据的
10、完整性。我们通过下列方法来提升 web 安全性。 所有敏感信息存储时全部加密,使用对称加密算法 AES。 所有敏感信息传输时全部加密,使用非对称加密算法 RSA。 所有口令只存储签名后的内容,使用数字签名算法 DSA。3.6.2 JWT 认证标准认证是任何 web 应用中不可或缺的一部分。 JWT 代表 JSON Web Token ,它是一种用于认证头部的 token 格式。这个 token 帮我们实现了在两个系统之间以一种安全的方式传递信息,JWT 认证方式比 OAuth2 认证标准实现起来更为简单也有效。我们在以下场景使用 JWT。 单点登录 移动端请求数据 其它第三方请求数据3.6.3
11、 完善的日志机制日志系统是一个成熟 Java 应用所必不可少的,在开发和调试阶段,日志可以帮助我们更好更快地定位 bug;在运行维护阶段,日志系统又可以帮我们记录大部分的异常信息,从而帮助我们更好的完善系统。本系统主要是使用 Log4J 及其扩展组件来实现日志机制,记录用户、第三方服务的每一步操作。3.7 集群方案每个大型网站都会有不同的架构模式,而架构内容也就是在处理均衡负载,缓存,数据库,文件系统等,只是在不同的环境下,不同的条件下,架构的模型不一样,目的旨在提高网站的性能。在本系统中,我们设计的集群架构图如下:本架构结构清晰,在系统成长初期可以很好的在阿里云上实现这样的架构,阿里云也提供
12、了该架构中的主要组件,在中后期脱离阿里云后可以通过的增加低成本服务器来应对业务发展需要。四、 工作量估算工作量估算有多种方式,有的以页面数量为基础,有的以人员代码效率为基础,有的以功能为基础,我们则以数据表数量为基础,用这种方式评估工时需要建设方对需求认识比较透彻,在初期建设时能较好反应真实的结果。其具体算法如下: 10 个字段以内的表设为 1 工作时。 10 个字段以上的表,每增加 5 个(包含 5 个以内)的字段,工时加 0.3 每一个分类字段按分类数量多少来计算工时 4 个以内的分类数,工时加 0.5 4 个以上 8 个以下的分类数,工时加 2 8 个以上的分类数,工时加 5 每一个外键
13、字段工时加 1 每一个时间字段工时加 0.5 每一个排序字段工时加 0.5 多个平台展示时,每增加一个平台工时加 1 由于所有约束全由代码实现,整体工时 x1.3 基于代码迭代、质量控制的情况,整体工时 x1.5 需求变更时,增加的表的工时按以上算法,修改的表的工时则在原基础上 x1.5总工时表如下:合计总工时约为:1700 人/天五、 拟参与人员组织架构示意图如下:3.1 技术总监技术总监为技术的最高负责人。负责技术管理体系的建设和维护,制定技术,准确判断行业技术发展趋势和管理现状。同时把控项目的长远目标和长期技术方向,根据项目的发展变化组建合适团队。姓 名 年 龄 专 业 计算机应用拟担任
14、项目职务技术总监最高学历 本科 毕业学校 长沙大学 从业时间 2001工作及项目经历时间 项目内容 所在公司 职务教育背景 时间 毕业院校专业技能 自我评价3.2 架构师系统架构师将掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的人。确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。他负责设计系统整体架构,考虑从需求到设计的每个细节,把握整个项目,提高项目的设计效率,使开发容易,维护方便,升级简单等。姓 名 年 龄 专 业拟担任项目职务最高学历 大专 毕业学校 从业时间工作及项目经历 时间 项目内容 职务教育背景 时间 毕业院校专业技
15、能 自我评价3.3 开发团队3.3.1 项目经理(1 人)项目经理为具体项目工作的管理者,主要对项目进行背景调查,收集整理项目相关资料,进行需求策划,撰写项目调查报告和信息综述,对项目组成部分或模块进行完整系统设计,联系项目相关单位和相关技术专家,制定项目可行性研究报告,协同配合制定和申报立项报告材料,组织项目团队完成项目任务,保证项目的完成时间和完成质量。姓 名 年 龄 专 业拟担任项目职务最高学历 毕业学校 从业时间工作及项目经历时间 项目内容 职务教育背景 时间 毕业院校专业技能 自我评价3.3.2 前端开发工程师(4 人)前端开发熟练掌握 HTML(4,5)、CSS(2,3) 、Jav
16、ascript 这三门语言。其不仅在 PC 端能做 Web 页面,在移动端的混合开发中也占据很重要的位置。知名框架如JQuery,Bootstrap 等需要非常精通。姓 名 年 龄 专 业拟担任项目职务最高学历 毕业学校 从业时间工作及项目经历时间 项目内容 职务教育背景 时间 毕业院校专业技能 自我评价3.3.3 后台服务开发工程师(3 人)后台服务开发工程师熟练掌握 JAVA 及其相关技能,对于第三方框架也要能灵活运用,特别是对于 RestFulAPI 的设计。姓 名 年 龄 专 业拟担任项目职务最高学历 毕业学校 从业时间工作及项目经历时间 项目内容 职务教育背景 时间 毕业院校专业技能
17、 自我评价3.3.4 UI 设计工程师(2 人)UI 设计工程师精通 Photoshop、Illustrator 、Flash 等图形软件,html、Dreamweaver等网页制作工具,能够独立完成静态网页设计工作;熟悉html, CSS, javascript,Ajax;对通用类软件或互联网应用产品的人机交互方面有自己的理解和认识。姓 名 年 龄 专 业拟担任项目职务最高学历 毕业学校 从业时间工作及项目经历时间 项目内容 职务教育背景 时间 毕业院校专业技能 自我评价3.3.5 数据库开发工程师(2 人)数据库开发工程师熟练掌握 MySQL、 SQL Server 2000、Oracle,使用主流的数据库分析设计工具;能独立完成数据库系统设计,能根据具体应用设计数据库服务器。姓 名 年 龄 专 业拟担任项目职务最高学历 毕业学校 从业时间工作及项目经历时间 项目内容 职务教育背景 时间 毕业院校专业技能 自我评价3.3.6 质量控制工程师(2 人)软件测试工程师针对产品的功能要求,并对其进行测试,检查软件有没有错误(Bug) ,测试软件是否具有稳定性(Robustness) ,写出相应的测试规范和测试用例的专门工作人员。姓 名 年 龄 专 业拟担任项目职务最高学历 毕业学校 从业时间工作及项目经历时间 项目内容 职务教育背景 时间 毕业院校专业技能 自我评价六、 经费预算