当前位置:首页 > 论文帮手>>文章详情

基于分布式互联网架构的移动商城应用研究

来源:论文帮手 作者: 发布日期:2017-12-09 11:40:13

  

摘    要
近年来我国电子商务市场发展迅速,作为国家战略性新兴产业纳入国家十二五规划。同时,国家通过制订一系列的标准、法规对电子商务的市场环境和交易行为不断进行规范和治理,这为我国网络购物市场的发展迎来了更多的机遇与挑战。我国电子商务经过十余年的发展,PC端应用已日趋成熟并走向世界的前列,而移动电子商务具有随时随地、灵活方便的优势,伴随智能移动终端的普及得以高速发展,截止2015年移动电商的成交量已经超过PC端,成为电子商务发展最快、最受欢迎的分支领域。
移动电子商务作为电子商务领域的新贵,得到各大电子商务服务商的追捧,并逐步开展在移动电商领域的布局,为了能够在激烈的市场竞争中得到一席之地,移动电商在建设过程中面临更多要求和挑战,如在用户体验方面,在秒杀、闪购、团购等商业行为造成突发流量、大订单的冲击方面,对系统设计及后台支撑能力提出了更高的要求,这也给系统的架构设计及采用的关键技术提出的更多的挑战。因此在进行电子商务平台设计时不仅要考虑如何解决大数据量的存储与访问、大并发量等关键问题,还要考虑系统的扩展性、可维护性以及降低系统维护成本等问题,否则将无法在激烈的社会竞争中生存。
本课题主要开展移动电子商务系统建设涉及的主流互联网技术的应用研究,并对关键技术进行POC验证,选择能够更好解决移动电商大数据存储、快速搜索以及大并发等问题关键技术,构建一套基于搜索引擎、分布式文件系统、分布式缓存等主流互联网技术的移动电子商城应用,打造适合时代及技术发展需要的移动电子商务系统。
 
关键词:移动电子商务;搜索引擎;分布式文件系统;分布式缓存
 
 
Abstract
In recent years, our country electronic commerce maintained rapid development trend, as the state will e-commerce as a strategic emerging industry in the twelfth five year plan, marking the electronic commerce will be from the folk dominant gradually turned to the government leading, through the state of e-commerce market environment and transaction behavior constantly norms and governance, has brought new opportunities to the development of electronic commerce. The end of electronic commerce in China after more than ten years of development, PC application has become increasingly saturated, and mobile electronic commerce with anytime, anywhere, flexible and convenient advantage, with the intelligent mobile terminal popularity has been rapid development, until 2015 mobile business volume has far exceeded the PC to become the new darling of the field of electronic commerce.
Mobile e-commerce as electricity supplier in the field of an important branch, the traditional e-commerce service providers have already started the layout in the field of mobile e-commerce, in order to get a place in the fierce market competition, mobile providers in the process of building facing more demands and challenges, such as the user experience, in the spike, flash purchase, buy commercial behavior caused by the impact of bursty traffic, large orders, a higher request to the system design and the backstage support ability, this also to the design of the structure of the system and the key technique of the more challenges. Therefore in the e-commerce platform design not only to consider how to solve the key problems of the storage and access of large amount of data, high concurrency, but also consider the system scalability, maintainability and reduce the system maintenance cost, otherwise will not be able to in the fierce social competition in survival.
This topic mainly carry out application research of mobile electronic commerce system construction relates to the mainstream of Internet technology, and the key technology is verified by the POC, can better solve the problem of mobile providers large data storage, fast search and concurrent key technology, to achieve a based on search engine, distributed file system, distributed caching mainstream Internet technology of mobile e-commerce application, build for the needs of time and the development of the technology of mobile electronic commerce system.
 
Keywords: Mobile e-commerce, search engine, distributed file system, distributed cache
 
目    录
摘    要 I
ABSTRACT II
目    录 III
第1章  绪论 1
1.1  课题研究的背景及意义 1
1.2  国内外研究现状 2
1.2.1  国内研究现状 2
1.2.2  国外研究现状 2
1.2.3  国内外研究现状对比分析 3
1.3  本文的研究内容 3
1.3.1  研究目标 3
1.3.2  研究内容 4
1.3.3  拟解决的关键问题 4
1.4  本文的组织结构 5
第2章  相关技术介绍 6
2.1  J2EE    . 6
2.2  HTML5 6
2.3  搜索引擎 7
2.4  分布式文件系统 8
2.5  分布式缓存 9
2.6  Spring 10
2.7  负载均衡 11
2.8  本章小结 12
第3章  需求分析 13
3.1  市场调研 13
3.1.1  淘宝网 13
3.1.2  京东商城 17
3.2  业务需求分析 19
3.2.1  市场营销 20
3.2.2  商品服务销售 20
3.2.3  客户服务 21
3.2.4  合作伙伴管理 21
3.3  可行性分析 21
3.3.1  经济可行性分析 21
3.3.2  技术可行性分析 22
3.4  功能需求分析 22
3.4.1  通用功能 22
3.4.2  展示模块 23
3.4.3  会员管理 24
3.4.4  订单购物模块 25
3.4.5  商品模块 26
3.4.6  商铺模块 26
3.5  非功能需求分析 27
3.5.1  性能与可靠性 27
3.5.2  可维护性 27
3.5.3  安全性 28
3.5.4  易用性 28
3.6  本章小结 28
第4章  系统设计 29
4.1  系统设计原则 29
4.2  系统架构设计 29
4.2.1  技术架构设计 29
4.2.2  关键技术验证 31
4.3  系统功能及流程设计 33
4.3.1  流程设计 33
4.3.2  首页功能设计 34
4.3.3  会员中心功能设计 35
4.3.4  购物车功能设计 36
4.3.5  订单模块设计 36
4.3.6  商品模块设计 37
4.4  系统安全设计 37
4.5  系统集成设计 39
4.6  系统性能及可靠性设计 39
4.7  系统数据结构设计 40
4.7.1 店铺主题逻辑模型设计 41
4.7.2 商品主题逻辑模型设计 43
4.7.3 合作伙伴主题逻辑模型设计 44
4.7.4 订单主题逻辑模型设计 45
4.8  本章小结 46
第5章  系统实现与测试 47
5.1  系统开发及运行环境 47
5.2  系统关键技术实现 47
5.2.1 分布式缓存实现 47
5.2.2 搜索引擎实现 49
5.2.3 分布式文件系统实现 54
5.3  系统部分功能实现 57
5.3.1 商城首页 58
5.3.2 会员中心 60
5.3.3 购物车 63
5.3.4 订单 64
5.3.5 商品模块 64
5.4  系统测试 66
5.4.1 测试目的 66
5.4.2 测试策略 66
5.4.3 测试流程 67
5.4.4 测试过程 69
5.4.5 测试缺陷管理流程 69
5.4.6 测试结果分析 70
5.5  系统部署 71
5.6  系统发布及版本管理 71
5.7  本章小结 73
结    论 74
参 考 文 献 75
致    谢 78
 
 
第1章  绪论
1.1  课题研究的背景及意义
《中华人民共和国经济和社会发展第十二个五年规划纲要》将电子商务纳入国家战略性新兴产业规划,标志着电子商务将从民间主导逐步转向政府主导,同时国家通过对电子商务的市场环境和交易行为不断进行规范和治理,这给电子商务的发展带来了前所未有的机遇。2014年,国家相关部门在促进中国的信息消费、消费者权益保护、创新服务、网络零售市场监管等方面出台了《网络交易管理办法》、《网络零售第三方平台交易规则制定程序规定(试行)》等多项政策法令,从政策法规的层面促进电子商务的发展,同时为企业的创新以及产业链的协同发展提供支撑,并为消费者和第三方经营平台的合法利益提供法律保障,从而促进了网络零售行业的规范、健康、快速的发展。2015年7月,随着《国务院关于积极推进“互联网+”行动的指导意见》的印发,电子商务作为互联网发展排头兵,以前所未有的态势高速发展,更加深入的影响着社会的方方面面。据中国互联网络信息中心(CNNIC)于2016年1月发布的统计数据,截止2015年12月,全国开展在线销售的企业比例为32.6%,我国网络购物用户规模达到4.13亿,占全部网民的60%[1]。
目前,电子商务呈现出普及化、全球化、移动化的发展趋势,移动电子商务作为一种新型商业模式,是电子商务领域的一个重要分支,相比PC购物而言,具有随时、随地不受限制,可以充分利用碎片时间等优势[2]。随着移动3G、4G网络技术逐渐成熟,以及智能手机的快速普及,移动互联网用户规模稳步增长,2015年移动上网人群达到6.2亿,比上年增加了6303万人 [1]。由于电子商务相比传统商务的优势,消费者足不出户,就能实现购物。加之目前社会性服网络服务SNS分享的普及,互联网用户很容易转变为网购用户,也为移动电子商务的发展提供了良好的契机。
1.2  国内外研究现状
1.2.1  国内研究现状
随着我国3G、4G网络以及移动智能终端的快速普及,移动互联网已完全融入现代人的工作与生活,改变着大家的生活习惯与消费方式,手机购物、支付、订票、娱乐服务等已成为人们业余活动的重要组成部分,这促使以移动数据终端设备参与商业经营的移动电子商务快速发展[3]。根据中国互联网络信息中心(CNNIC)2015年6月发布的统计数据,截止2014年我国手机网络购物用户达到2.36亿,比上年增长63.5% ,到2015年,我国移动网上购物的交易额达2.1万亿元 [1]。
目前国内如淘宝、京东等主流互联网公司均已推出基于移动智能终端的移动商城,其中淘宝、京东等电子商务企业通过各种优惠活动及营销策略将用户向引流至移动端;而当当网利用社区切入移动电商, 实现了全面渠道下沉;京东则借助微信的力量,大力拓展移动端网络购物市场,并获得了良好的市场反响。2013腾讯公司推出微信商城,凭借微信庞大的用户基础以及杰出的社交能力,结合其手机支付的优势,强势介入移动商城领域,大走集市型移动商城运营路线,获得了良好的收效[2-3]。极大的刺激并增强了传统企业走向互联网经营的决心,引发移动商城建设的旺盛需求。
1.2.2  国外研究现状
从目前国外移动电子商务发展情况来看,日本和欧美等发达国家一直引领着行业技术的发展。早年各商业巨头和互联网企业便纷纷投入到移动购物领域。目前日本和欧美国家在移动电商领域已进入深度个性化和需求挖掘,进而开展精准营销的阶段。
日本拥有全球发展最早也是当时最为发达的移动网络购物市场,早在2010年其移动电子商务的交易规模就达到1445亿元。日本移动电子商务之所以能够领先于欧美等发达国家,首先日本是最早普及3G网络的国家,其移动网络带宽远远超过欧美平均水平;其次是日本移动终端标准化程度高,这大大降低了移动终端应用开发与维护的成本,这为移动电子商务市场的快速发展奠定了良好的基础[4-9]。
对于欧美等发达的西方国家,其信用体系较为健全,信用卡业务在人们日常生活得到广泛应用,这使得这些国家早期移动电子商务市场远没有日本发展的迅速。随着移动互联网技术的不断发展,欧美以及全球范围内的移动用户消费习惯的也发生较大的转变,传统互联网用户不断的向移动端转化,这也促进了移动电子商务的快速发展,其增长速度远远超过传统电商的发展速度[4-9]。预计2016年美国零售移动电子商务销售额和2014年比翻一番,将达到1231亿美元。
1.2.3  国内外研究现状对比分析
国外发达国家的移动电子商务发展业务模式主要是根据移动电子商务产业链中移动通信运营商地位来确定,其中日本移动通信运营商利用自身在移动互联网中的优势地位,主导着本国移动电子商务市场发展,强力整合了各参与方的资源,清除了日本移动购物市场发展中障碍。而欧美移动购物市场的发展主要依托移动终端企业和IT技术企业,借助其在互联网以及信息技术等方面的优势,快速推出移动电子商务应用,从而促进其移动购物市场的快速发展。从国内的发展状况看,我国移动电子商务主要是由传统电子商务运营商逐步向移动电子商务领域拓展,以及占有资源优势的互联网企业推出具有自身特色移动电子商务平台[2-9]。根据2015年底的数据统计显示,中国的移动电子商务交易规模已超过美国,成为全球最大的移动购物市场,其中移动购物人数占全国网上购物人群的80%。
综上所述,随着全球移动通信技术的快速发展、移动互联网的普及以及用户消费习惯的养成,移动电子商务已成为人们的生活重要组成部分,也将是未来电子商务重点发展的方向。
1.3  本文的研究内容
1.3.1  研究目标
通过本课题的研究,主要在手机等移动智能终端上实现购物,并采用搜索引擎、分布式缓存、分布式文件系统等主流互联网技术构建移动商城产品,将目前盛行的电子商务迁移到手机等智能终端上,形成一套基于分布式互联网架构的移动商城产品框架,实现移动商城应用的基本功能,包括商城前台商品展示和下单支持的商城网站应用,中台商城运营管理的商品管理、订单管理、促销管理等应用,打造适合时代及技术发展需要的手机购物产品。
1.3.2  研究内容
本课题主要是进行基于分布式互联网架构的移动商城平台产品及关键互联网技术应用研究,主要研究内容包括:
(1)搜索引擎技术应用研究:了解搜索引擎的运作模式,选择适合移动商城的搜索引擎产品,并应用于系统研发, 将基于数据库的搜索演变为基于网页的搜索,商品搜索的内容通过搜索引擎事先索引,返回用户的为静态网页资源,降低应用服务器和数据库的压力;
(2)分布式缓存技术应用研究:通过对缓存技术的研究,并选择合适的技术组件(如Redis)应用于系统万不得已,有效解决海量并发数据访问对数据库造成的冲击,从而支撑系统大并发的问题;
(3)分布式文件系统应用研究:在电商领域,往往使用分布式文件系统管理非结构数据,如:图片、视频、搜索索引文件等的存储,使访问文件更加容易,提升文件读取容错率,确保商城系统运行性能, 满足互联网海量数据的存储及系统扩展的需求;
(4)研发移动商城产品:开展基于安卓(Android)系统的移动商城研发,系统以应用弱耦合的方式进行设计,实现手机端APP移动购物应用软件和移动商城平台管理所必需的产品管理、订单管理、会员档案管理、促销活动管理功能模块。
1.3.3  拟解决的关键问题
通过本课题的研究主要解决以下问题:
(1)如何提升用户的购物体验:由于手机屏幕较小,操作没有PC机的鼠标、键盘方便,这就需要手机购物操作设计要尽可能的简单,其中是否能够快速、准确搜索到想要的商品,是影响用户购物体验的关键因素之一;
(2)如何支撑大并发数:电商企业为吸引用户,要经常开展促销活动(如秒杀、降价竞购等),这些促销活动给系统的稳定性、可用性带来巨大的挑战,系统访问量瞬间大幅增加,网络流量短时间内陡增数十倍,如果不能很好的支持大并发,就很难留住客户;
(3)如何解决海量数据存储问题:电子商务经过近些年的发展,商品(SKU)数量极大丰富,如京东、淘宝等主流电商的SKU早已超过千万级,另外还包括商品的图片、视频等非结构化数据,如何存储如此大量的数据,如何快速检索到需要的数据,也是移动电商必须解决的问题之一。
1.4  本文的组织结构
本论文分五个章节来分析基于互联网架构的移动电子商城系统的设计与实现,各章节的内容如下: 
第一章,绪论。提出移动电子商城的研究背景及意义,分析国内外的发展现状,并提出本文研究的目标、内容以及要解决的关键问题等。
第二章,相关技术介绍。主要介绍基于互联网架构的移动电子商城在构建过程中所采用的核心技术,包括J2EE、Spring、HTML5、分布式文件系统、分布式缓存、搜索引擎等。
第三章,需求分析。本章主要介绍对国内主流电商调研情况,并对其系统的运行现状、主要业务场景以及采用的核心技术进行分析,提出本课题研究的业务需求、可行性分析、功能需求分析、非功能需求分析等。
第四章,系统设计。本章首先介绍了移动电子商城系统的设计原则,并基于设计原则开展系统的架构设计、功能设计、安全设计、集成设计、系统性能及可靠性设计、数据结构设计等,并在架构设计中阐述了系统采用的关键技术的选型要求及POC验证情况。
第五章,系统实现与测试。主要介绍了系统的开发、运行环境以及系统部署架构,并详细介绍了系统核心技术的实现以及系统测试管理流程,并针对互联网应用敏捷开发的特点提出系统的发布及版本管理流程。
 
第2章  相关技术介绍
2.1  J2EE    .
Sun公司于1998年发布了JDK1.2版本,此次发布的JDK启用了新名称Java 2 Platform Software Develping Kit,即J2SDK。J2SDK分为标准版(J2SE)、企业版(J2EE)、微型版(J2ME),J2EE(Java 2 Platform, Enterprise Edition)便由此诞生。J2EE主是针对大型企业级应用设计的平台,采用了可重用组件设计,并将系统编码进行了标准化与规范化,这大大降低了客户端应用程序的开发难度。
J2EE 本身具有较强的跨平台移植性,一个基于J2EE、设计合理的应用程序可以部署在不同系统平台上,其运行不依赖任何特定的软硬件平台。另外,J2EE也具有较好的开放性,允许企业在J2EE上构建自己的基础组件或使用第三方的技术组件,提高了应用开发的效率,同时也节省了系统构建的费用。
J2EE具备极佳的可伸缩性,能够为客户提供了可靠的负载平衡策略,可以部署在多台服务器上,可根据系统访问量以及业务量增加或减少部署节点,实现可弹性伸缩的应用,从而满足未来系统容量扩充的需要。
对于开发者来说,J2EE能够让企业的开发人员把精力集中在系统的业务逻辑上,而那些通用的、繁琐的、难度大的服务端应用由更为专业的中间件提供商去构建,这样就大大缩短了应用系统的开发周期、降低了开发难度、提升了开发效率。
2.2  HTML5
HTML5 是目前最新版的超文本标记语言,是由HTML经过五次重大改版逐步发展而来。为了推动Web标准化部分公司联合起来组建了Web超文本应用技术工作组(Web Hypertext Application Technology Working Group 简称WHATWG)的组织。2006 年WHATWG与万维网联盟(World Wide Web Consortium简称W3C)合作研究新版本的 HTML,经过各方的不懈努力,HTML5标准规范于2012年12月17日正式公布。为进一步改善基于HTML5的Web应用程序开发的难度、提升用户体验,W3C与WHATWG对HTML5标准进行反复的分析与优化,先后修改了包括HTML和XHTML的标签在内的百余项标准,有效的提升了Web应用开发效率及运行性能 [13-18]。
HTML5最大优点是跨平台,如果你使用HTML5开发一款应用程度,它不仅运行在Windows平台,也可以轻易地移植到安卓(Android)、Mac OS等系统平台,还可以封装成应用程序包发布到App Store上。另外,HTML5具有较强的自适应性,它能够根据屏幕尺寸自动调整大小以及页面布局,因此无论是使用智能手机、平板或PC机浏览基于HTML5开发的系统应用,都能够保持较好的用户体验[13-18],这也是广大App开发者对HTML5感兴趣的主要原因。
2.3  搜索引擎
搜索引擎主要通过对分布在多个信息系统内的大量的结构化数据以及非结构化数据资源进行收集、整理,根据内部设定的规则对数据进行标识和分类,按关键词为数据建立索引,并对外提供数据信息搜索查询服务的一种关键技术。能够有效解决网站内部的信息查询的高速定位[19-20]。
搜索引擎是典型的搜索服务系统,能够对Internet上各类数据进行收集、加工和存储,是电子商务系统建设不可或缺的重要组成部分。搜索引擎系统是一种中间件技术,它采用“平台+通信”模式,有效地支持分布式开发应用[21]。
搜索引擎处理查询请求的流程如下:
 
图2-1 搜索引擎处理查询请求的流程
Figure 2-1 search engine processing query request process
下面对搜索引擎的功能和结构进行详细说明:
(1)搜索引擎和主要功能:具有实时采集、定时采集以及批量采集等多种模式,能够从各种常用的数据库以及多种文档资料(不仅包括txt、html、xml等文本格式的文件,还包括常用的xls/xlsx、doc/docx、pdf等类型的文档)中收集、处理关键的数据信息,并能够对外提供多种关键词检索及信息查询服务,可以根据需要建立关键词的关联关系,通过关联关系扩展查询范围,从而快速找到需要的数据信息;具有一套完整的访问权限管理体系,能够根据用户的身份或访问级别控制其访问权限;为方便实现与第三方的应用系统集成,搜索引擎一般都提供了完整、规范的接口,能够快速集成到其它系统中[22]。
 
图2-2 搜索引擎功能和结构
Figure 2-2 search engine function and structure
(2)搜索引擎服务是由数据源层、数据处理层、数据检索层、接口层、用户层以及概念编辑模块组成,其软件体系结构如图2-2所示。数据源层是由分布在网络中的多个应用系统中的结构化以及非结构化的数据构成,它们既可以是数据库中数据也可以是文档数据;数据处理层主要是将原始数据从相关应用系统或文档中抽取出来,并对这些数据进行一系列的加工处理后按定义好的、规范的格式保存在文件中[23-24]。根据预先设定的规则进行分词处理及文本标注,提取相关领域概念形成能够体现文本特征的概念集,并生成索引库[25-26]。数据检索层对用户提交的查询条件进行解析,并基于概念之间的关系进行查询扩展(包括同义扩展、语义蕴涵扩展、语义外延扩展、语义相关扩展等),并根据查询条件及用户访问权限在索引信息库中搜索与过滤,最终形成用户查询的结果;接口层主要为其它应用系统提供数据检索等服务,其它系统可通过调用对外公开的信息检索接口来实现数据查询功能;用户层包括对用户服务的应用系统以及用于与其它系统集成的接口构成[27-31]。
2.4  分布式文件系统
分布式文件系统(Distributed File System,简称DFS)主用来管理分布在网络上的多个节点上物理存储资源,这些节点通过计算机网络相连,实现统一的存取[32]。分布式文件系统采用基于C/S(即客户机/服务器)模式,系统结构可根据需要进行扩展,数据文件存储在多台服务器或存储设备上,并通过系统主控服务器(跟踪节点)来管理数据文件的存储位置[33-35]。另外,分布式文件系统具有较好的对等特性,这使得部分系统具备服务器与客户机的双重身份[36-38]。
目前分布式文件系统有很多种,包括FastDFS、HDFS、TFS、MooseFS等[39-40],本文主要通过对Hadoop 分布式文件系统 (HDFS)的研究与应用实现移动商城基础架构的搭建。HDFS全称是Hadoop Distributed File System,具备以下特点:
(1)高度容错性:硬件故障是计算机常见的问题,整个HDFS系统的构成可能会包括数十个乃至上万个存储着数据文件片断的服务器,如果整个文件系统的某个组成部分出现故障,HDFS会快速检测到故障位置并快速恢复,最大限度减少了对系统的影响 [35]。
(2)海量数据存储:HDFS主要用来解决文件的批量处理,而不是数据访问速度,也只有在处理大数据量时才能体现出其价值,因此HDFS更适用于大并发量的数据访问,更适用于电子商务网站中的图片、视频等数量大的、多次读取的场合[41-42]。
(3)简单一致性模型:HDFS在设计时就假定一个文件一旦创建、写入完成之后就不再需要修改,这使得大部分的HDFS对数据文件的操作都是一次写入,多次读取的,这样大大简化了系统的设计,并提升了系统的性能[42-44]。 
由于HDFS具备高度容错性、高吞吐量的特点,它被广泛的应用在各种大型互联网应用系统中(如电子商务系统),并已经成为各大互联网公司在线服务系统海量数据存储的设计基础。
2.5  分布式缓存
分布式缓存由一个服务端实现管理和控制,有多个客户端节点存储数据,可以进一步提高数据的读取速率。那么我们要读取某个数据的时候,应该选择哪个节点呢?如果挨个节点找,那效率就太低了。因此需要根据一致性哈希算法确定数据的存储和读取节点。以数据D,节点总个数N为基础,通过一致性哈希算法计算出数据D对应的哈希值(相当于门牌号),根据这个哈希值就可以找到对应的节点了[45-46]。一致哈希算法的好处在于节点个数发生变化(减少或增加)时无需重新计算哈希值,保证数据储存或读取时可以正确、快速找到对应的节点[47]。
分布式缓存能够高性能地读取数据、能够动态地扩展缓存节点、能够自动发现和切换故障节点、能够自动均衡数据分区,而且能够为使用者提供图形化的管理界面,部署和维护都十分方便[48-57]。
分布式缓存具有如下特性:
(1)高性能:一般应用系统在进行大数据量或大并发访问时,系统的性能瓶颈往往是物理磁盘的读与写,从而导致系统的响应延迟或超时。分布式缓存就是将系统数据以key/value 形式存储在高速内存中,从而实现较高的数据读写性能[52];
(2)动态扩展性:能够根据系统性能以及数据访问负载情况动态增加或减少服务节点,从而实现系统弹性扩展,有效的减少了系统资源的浪费[53-55];
(3)高可用性:可用性包含数据可用性与服务可用性两方面。高可用性主要通过冗余机制实现,能够自动检测失效或故障节点,并进行实时的切换,从而实现不间断的系统缓存服务,保证数据的完整性[51-55]。
(4)易用性:分布式缓存系统的后台管理具有统一的、图形化的操作界面,并提供统一的数据维护视图、简单的接口设计、强大的自动扩展功能[51-57]。
(5)分布式代码执行:程序代码可分布在不同数据节点并行执行,减少了缓存数据在节点中的传输,有效的提升了系统运行效率[49-50]。
2.6  Spring
2003年Rod Johnson推出基于Java语言的开源开发框架Spring,定义了七个设计合理、可独立运行的模块,给出了覆盖系统业务层、表现层和持久层整体解决方案,提供了与J2EE 应用程序的集成框架,简化了企业级应用的开发难度[58]。Spring的设计核心是控制反转(IOC)和面向切面(AOP),使用基本的JavaBean来实现EJB的功能,实现了轻量级的应用开发构架。因此,Spring架构可用于服务端、客户端的任何Java应用的开发 [58-60]。Spring框架如下图所示。
 
图2-3 Spring框架
Figure 2-3 Spring framework
每个模块的功能如下:
(1)Spring Core:是Spring核心容器,构建了基于控制反转(IOC)模式的 BeanFactory组件,实现了Spring基本功能[58]。
(2)Spring Context:Spring是通过配置文件实现上下文信息管理,主要作用是通过读取配置文件、加载Bean、维护Bean之间的关系,提供完整的框架功能[58]。
(3)Spring AOP:可通过配置直接将面向对象的程序集成,为Spring提供了事务管理服务,使得基于Spring的Java应用程序开发不用依赖 EJB 组件,也允许Spring框架管理的对象支持面向切面编程,为代码复用提供有力的支撑[58]。
(4)Spring DAO:作为业务逻辑层和持久存储层之间的抽象层,它的存在简化了应用程序代码,提供了用于管理系统异常信息的异常层次结构,降低了应用程序错误处理的复杂度,减少了异常处理代码的编写数量[58]。
(5)Spring ORM:是Spring 框架中提供的用于整合其它 ORM 框架的对象关系管理的工具,简化了系统数据库访问[58]。
(6)Spring Web:给基于Web的应用提供了上下文模块,减少了请求处理相关的开发工作量[58]。
(7)Spring MVC:Spring MVC主要是用于 Web 级应用开发的构架。通过MVC策略接口实现框架的可配置性[58]。
Spring 作为可以方便的集成在任何基于J2EE的系统中轻量级框架,采用了低侵入式设计,其运行不依赖于任何应用服务器,也不强制要求应用程序必须依赖Spring[58-60],这给系统开发者提供更多的选择。
2.7  负载均衡
应用系统的负载均衡技术是一种性能优化技术,将系统流量或负载分发到多个节点设备上并行处理,能够有效减少系统响应的时间,从而提升大并发、大数据量访问时的系统性能。
表2-1  负载均衡技术分类
Table 2-1 load balancing technology classification
技术分类 技术特点 优点
表现形态 软件负载均衡 通过在一台或多台应用服务器中负载均衡软件来实现 基于特定的系统环境,配置简单易用、使用方便灵活,成本低廉,可以满足一般应用的负载均衡需求
硬件负载均衡 通过专用的设备来实现负载均衡,完全独立于服务器及操作系统 整体性能得到更大程度的提高,加上多样化的负载均衡配置策略、智能化的流量管理,可满足更多的负载均衡需求
以下为3中常用负载均衡应用:
(1)IP映射方式:域名机制的使用有效地屏蔽了机器的实际 IP 地址。在不增加任何设备的情况下,通过服务器端配置实现一个域名与多个 IP 地址间的映射关系,并在域名解析时为不同请求返回不同的 IP,从而实现不同请求访问不同的应用服务器。通过这种方式可以让多个服务器分担系统流量,从而提升系统的总体性能。
(2)第四层交换:通过在多个Web服务器前布置第四层交换机,外部用户访问的是第四层交换机的IP地址,第四层交换机可根据各服务器的工作状态将用户请求分配给其中一台服务器,从而实现各服务器间的负载均衡。
(3)第七层交换:第七层交换机主要是针对HTTP请求,可以通过分析HTTP等高层协议的请求内容来实现交换,交换方式比第四层交换更为便捷,但对交换机的性能要求较高。
2.8  本章小结
本章首先阐述了移动电子商城系统建设所采用的关键技术及架构,并对J2EE、Spring、HTML5、分布式文件系统、分布式缓存、搜索引擎、负载均衡等技术的特点、用途、原理等进行简要说明。
 
 
第3章  需求分析
3.1  市场调研
3.1.1  淘宝网
3.1.1.1  运行现状
淘宝网由阿里巴巴集团在2003年5月10日投资创立的网络零售电子商务系统,淘宝的业务模式涉及C2C及B2C两大部分,包括天猫(TMALL)、聚划算、一淘等,目前是亚太地区最大的网络零售类电子商务平台。
截止到2013年底淘宝电子商务系统的用户数已达到5亿,全网日均页面浏览量约为16亿次,独立用户访问量约为6000万;平均每天有8亿多件商品在线销售,每分钟平均售出近5万件商品。2013年累计全年交易额超过8000亿。其中2013年的“双十一”促销当天的支付订单数高达1.8亿笔,日交易额超过300亿。
3.1.1.2  业务场景
(一)业务场景介绍
(1)C2C:淘宝集市
淘宝集市是淘宝电子商务系统为个人卖家提供的免费交易系统,具有个人卖家多、商品品类多等特点,是主要的个人消费门户。
(2)B2C:天猫商城
天猫商城采用更严格的商家入驻规则,提供比普通店铺更优质的服务,如七天无理由退换货、正品保障等。
淘宝的网上商店大多数是C2C的服务模式,能够更好的集思广益,集中大多数人的智慧。淘宝汇集了大量的网店客户,提供更多、更全的商品,提高了淘宝的知名度,从而吸引了更多的客户。由于客户数量的逐渐增多,销售额也不断上涨,促进了更多的商户进驻,使商品越来越全,形成为一个良性的循环。
 
(二)业务流程说明
 
图3-1 淘宝核心业务流程
Figure 3-1 Taobao core business process
从上图中我们可以看到买家、卖家、淘宝、支付宝在商品交易中起的作用。首先,淘宝作为一个综合性电子商务系统,解决信息流的问题,聚集买家和卖家。卖家提供商品信息。支付宝作为第三方支付公司,提供用户和银行接口,帮助用户进行网络支付,解决资金流的问题。同时,在网络交易中,支付宝还作为独立于买家和卖家之外第三方提供担保,消除买家和卖家之间的不信任。通过这样一个流程,将信息流,资金流和物流结合起来,实现了电子交易的闭环。淘宝和支付宝作为仲裁者,协助用户处理纠纷。
3.1.1.3  关键技术
淘宝电子商务系统采用分布式可扩展的多层架构体系支撑淘宝的各种业务模式。淘宝技术架构逻辑上分为五层,分别是产品层、查询层、计算层、数据层、存储层等。物理部署上将层次化架构通过独立硬件集群部署的方式实现隔离,每层可以根据需要灵活调整节点数量,实现业务的可伸缩性。
淘宝采用关键技术可以分为前端技术、中间件、数据库及文件系统等。
(一)前端技术
(1)内容分发网络(CDN)
淘宝电子商务系统在开始时是租用商用的CDN,随着数据量和访问量的增长,租用的商用CDN已无法满足日益增长数据量的需要,因此淘宝研发了有自主知识产权的CDN服务。
(2)负载均衡
淘宝早期采用的是商用调度负载均衡器,随着淘宝规模不断扩大,原有负载均衡方式已经不能满足需要,表现在小图片方面的访问量不断增加,而网络流量处理能力极限为3GB/s,一旦流量超过极限,会导致系统出现崩溃的风险。针对此问题淘宝开始采用虚拟服务器及集群代理LVS+HAproxy技术,如下图所示,其满足单节点支持流量带宽100GB/s,从而解决了淘宝网由于数据流量过大,改善网络负荷过重的局面。
 
图3-2 淘宝负载均衡技术
Figure 3-2 Taobao load balancing technology
(3)缓存技术
缓存技术使用在系统的Web服务器层和应用服务器层,具体包括以下两种类型:
页面内容的缓存:淘宝采用数据缓存(缓冲)服务器(Edge Side Include ,简称ESI)技术,它是一种用来定义网页组件的简单标记语言,用于将整个Web网页或片段进行缓存的技术。另外,ESI还提供了用于实现对Cache服务器中缓存内容管理功能及校验标准,能够有效的控制网站的内容。
分布式内容缓存:淘宝自主研发了一个基于key/value 结构数据存储系统技术TAIR,提供了基于缓存(非持久化)和文件(持久化)的两种存储方式,在淘宝网上得到广泛的应用。
(二)中间件
(1)搜索引擎应用
淘宝搜索引擎采用了阿里集团自主开发的新一代引擎技术HA2,它结合了阿里上一代搜索引擎以及开源引擎技术的优点,完全具备了商品搜索以及全文检索的各种功能,能够满足淘宝网的各种搜索需求。
(2)消息中间件
淘宝使用的中间件是基于J2EE自主研发的Notify(通知)。Notify是一个分布式的消息中间件系统,支持消息的订阅、发送和消费。
(3)会话同步
淘宝的session同步采用客户端 cookie实现,使用cookie保存用户访问的状态信息,从而减少服务器的压力。同时,这样的设计也使得淘宝能够根据用户的访问量来水平扩展应用节点。
(三)数据库及文件系统
(1)结构化数据
淘宝早期采用的是开源数据库MySQL,由于早期MySQL数据库没有得到持续开发支持,随着网站数据量及访问量的增长,数据库交互出现严重的瓶颈。淘宝决定采用Oracle数据库来替换MySQL,数据存储设计逐步采用了IBM小型机+Oracle数据库+ EMC2存储系统的IOE架构;中期随着访问量和数据量进一步增长,淘宝需要更多的IOE设备来满足业务需求,无形中增加了企业运维成本,同时,ORACLE数据库也出现了连接瓶颈问题。后期淘宝坚持“低成本、线性可扩、去中心化”的原则,开始采用去IOE战略部署系统,将结构化的数据库产品逐步从Oracle系统转换为MySQL自主研发系统上,并采用数据库拆分技术来实现数据库的线性扩展。
 
图3-3 淘宝数据库发展三阶段
Figure 3-3 Taobao database development three phase
(2)非结构化数据
淘宝的文件存储系统TFS专门处理非结构化数据如图片、视频等。它是在结合Google的GFS设计的基础上自主研发的成果。
3.1.2  京东商城
3.1.2.1  运行现状
京东商城是全球领先的互联网零售及服务平台,也是我国最大的自营式电商平台,由京东集团于2004年创建。截至到2014年12月31日,京东注册用户1.4亿,供应商4万家,1000余万种商品,31个城市设置配送中心。
3.1.2.2  业务场景
(一)业务场景介绍
(1)B2C京东商城
京东最初定位是成为全国最大3C产品的B2C零售企业,随着公司业务量的不断扩大,其销售的产品也从3C产品扩展到家用电器、家居家装、厨卫用品、服饰鞋帽、化妆品、户外用品、箱包礼品、珠宝首饰、母婴玩具、图书音像、办公用品、医药保健、食品饮料、保健食品、汽车用品、商旅票务、理财保险等。
(2)京东商超
京东基于打造“一站式购物平台”战略布局,于2013年5月6日在线上强势推出京东超市,为消费者提供了网上购买糖、米、油、盐、酱、醋、茶等日常生活用品的便利通道。
(二)业务流程说明
京东的模式包括如下:
(1)京东市场定位:打造中国最大3C产品线上购物商城,打造全球领先的“一站式购物平台”。
(2)交易模式:在线交易、第三方交易平台。
(3)支付方式:货到付款,在线交易[支付宝,快钱],银行转账,邮局汇款,上门刷卡。
(4)物流方式:建立自己的物流体系,与第三方合作,高校代理。
(5)营销策略:价格策略
 
 
图3-4 京东核心业务流程
Figure 3-4 Jingdong core business process
3.1.2.3  关键技术
京东采用分布式可扩展的多层架构体系,主要分成前台和后台两个核心业务模块。前台包括网站系统、手机客户端、开放平台系统等;后台包括订单履约中心、零售管理系统、仓储系统、配送系统、财务系统等。京东采用关键技术可以分为前端技术、中间件、数据库及文件系统等。
(一)前端技术
(1)内容分发网络(CDN)
京东采用自建和租用CDN相结合的方式来实现流量动态分配、内容高速缓存和用户就近接入等目标。由于自建CDN可以更好的设定分发、缓存等策略,因此自建CDN的范围在逐步扩大。
(2)负载均衡
京东在负载均衡应用方面混合使用了多种软件负载均衡技术,包括Linux虚拟服务器(简称:LVS)、集群代理HAProxy、轻量级Web服务器Nginx等。
(3)动静分离
京东采用在网站前端页面设计上进行片段划分,页面中需要动态变化的部分通过AJAX技术进行动态加载,保证主要的前端应用页面的快速展现,比如商品详情页通过CDN进行缓存,加快页面加载速度。
(4)缓存
采用Redis分布式缓存技术部署了大规模的缓存集群,集群根据业务系统的分类及所处区域等进行分组。应用系统通过服务层调用服务后,再经过缓存与数据层的交换来存取数据,一般不直接访问缓存。
(二)中间件
(1)应用部署架构
中间件系统部署在应用层之下,作为一个应用支撑系统,主要用于提供公共和高级的服务,包括服务框架、分布式缓存、搜索引擎等。
(2)搜索引擎
京东目前使用自研的搜索引擎系统。
(3)会话同步
通过客户端Cookie保持用户会话唯一标识,用户会话的详细信息存放在缓存系统中的会话缓存服务器。
(三)数据库及文件系统
(1)结构化数据
京东下属各业务系统都有对应的数据库集群,数据库依据数据量的大小进行数据库的切分。目前京东商城采用了多个的数据库产品,其中包括Oracle、SQL Server及MySQL。
(2)非结构化数据
京东在发展初期,曾使用FastDFS、TFS和ClusterFS等分布式文件系统技术保存图片文件。目前开始使用自主研发的JFS分布式文件系统。
3.2  业务需求分析
移动电子商城系统需涵盖市场营销、商品服务销售、客户服务、合作伙伴管理等业务领域,实现移动商城展示浏览、用户注册登录、商品选购、订单支付、订单收货确认和客户服务的全流程应用。其整体业务需求如下:
 
图3-5 移动商城业务需求
Figure 3-5 Mobile mall business needs
3.2.1  市场营销
通过制定营销规划和策略,组织各种促销活动,制定品牌引入策略,加强营销渠道管理和营销资源管理,为招商入驻提供有效支持。
(1)品牌传播
商户可以通过品牌传播推广商家的品牌,商城运营可以通过此渠道吸引更多商户。
(2)招商入住
商城通过招商政策、优惠入住活动吸引商户入住电子商城,商户按照入住政策融入商城、销售商品。
(3)促销活动
通过制定营销规划和策略,组织各种营销活动,例如团购、秒杀、限时抢购、代金券、拍卖、降价竞购、抽奖、定向优惠和试用体验,帮助商家吸引更多的客户,撮合订单成交。
(4)营销管理
可以对外发布产品、服务和资讯;商铺装修和商品上下架;制定定价策略;组织开展多种促销主题活动,建立买卖双方互动交流的渠道。
3.2.2  商品服务销售
通过制定营销规划和策略,组织各种促销活动,制定品牌引入策略,加强营销渠道管理和营销资源管理,为招商入驻提供有效支持。
(1)商品销售
商户通过电子商城对用户提供各种商品的买卖,用户可以通过移动电子商城快速搜索及购买需要的商品。
(2)服务销售
给用户提供专业性的成套的服务,例如咨询服务、宣传服务、导购服务、整体解决方案服务、增值服务等。
3.2.3  客户服务
用户、商户可以通过客户服务功能向客户服务电子商务系统咨询、投诉、建议、举报、表扬等。
(1)普通客户服务
管理客户信息和认证资料;建立客户信用档案和信用机制;制定客户积分等级规则;加强对黑名单客户的监管工作。
(2)差异化客户服务
通过呼叫接入和在线客服两种渠道,对投诉、建议、举报、咨询,分类受理,提升服务质量和满意度。
3.2.4  合作伙伴管理
合作伙伴管理是指对参与商城活动的单位和个人,进行融入和清退管理的业务的总称,实现包括移动电子商城的用户线上注册、用户登录以及用户中心等业务功能。
3.3  可行性分析
3.3.1  经济可行性分析
伴随着3G、4G应用不断扩展、手机上网进一步普及,移动互联网用户数急速增长,根据CNNIC提供的调研数据,2014年我国手机网民规模达5.27亿,移动网络购物用户数为2.36亿,比上一年增长了63.5%,目前处于高速增涨阶段,未来还有较大的发展潜力,因此国内外先进电商企业纷纷将目光投向移动购物市场,并认为未来商业市场的争夺的焦点在移动购物。
目前国内知名电商企业如京东、淘宝、亚马逊等都推出了自己的移动商城,主要用于自主经营和运行。而腾讯公司推出的微信商城,凭借微信大量的用户数作为基础,加上微型的社交功能和支付能力,成为移动商城后起之秀。
从淘宝、京东等互联网电商企业的经营发展趋势来看,移动互联网已与电子商务全面接轨,会有更多除京东、淘宝、亚马逊、一号店等以外的移动电子商务应用出现在互联网,也将为消费者带来更为丰富移动购物渠道以及更为美好的购物体验。中国拥有全球最多的移动上网用户和最大的网络购物市场,这为移动电子商务的快速发展打下了坚实的基础。
3.3.2  技术可行性分析
(1)移动商城系统采用成熟的、轻量级的、开源的Java 开发框架Spring,Spring因简单性、可测试性和松耦合等特点广泛应用于互联网领域,已成为市场主流的开发框架;
(2)对于课题研究采用的技术如搜索引擎、分布式存储、分布式缓存等在京东、淘宝等主流网络购物平台中得到广泛的应用,技术已经成熟,且互联网有很多开源的产品,可供本课题研究和应用;
(3)本课题研究人员前期参与过移动储运产品研发项目的实践,初步掌握了安卓手机系统APP应用开发所使用的工具与技术,为本课题的移动商城研发打下基础;
3.4  功能需求分析
根据移动商城总体建设思路和业务需求,通过建立商城购物、特色专区和服务专区三个频道,实现用户登录、购物下单和售后服务的流程闭环,其整体应用功能需求如下:
3.4.1  通用功能
3.4.1.1  会员登录
登录模块是商城的最基本功能之一,登录以后,商城系统可以识别用户是否具有权限进行某些操作,登录的主要功能是检验用户信息是否存在、建立会员token,以及登录需要进行的其他操作,例如下单、查看我的信息等。
3.4.1.2  密码找回
密码找回功能以安全简洁为前提,让用户方便操作,通过手机验证码的方式确认用户的会员身份。
3.4.1.3  会员注册
会员注册功能除了需要填写手机号、密码等必要的会员信息外,关于会员资料的信息填写要尽量简洁,节省注册时间。
3.4.1.2  修改密码
注册用户根据实际需要进行密码的修改时使用,需要填写手机号、手机验证码等信息。
3.4.1.2  公告
移动商城可通过公告为用户提供商城的最新资讯、重要的信息以及用户关注的信息。
3.4.2  展示模块
3.4.2.1  首页
首页提供广告图列示,商城产品分类,部分产品展示,部分商铺展示。
3.4.2.2  广告
商品广告展示不仅仅是具有刺激提示的作用,还能更快地帮助消费者了解商品的性质、用途、价格以及使用方法等,帮助消费者在购买行为中做最后决定。
3.4.2.3  特色业务展示
根据移动商城的前期调研分析,将目前市场交易比较活跃、关注度较高以及企业核心的业务进行提炼、梳理,本课题研究的移动商城具有以下特色业务:
智能家居:根据移动商城的前期调研,用户对智能家居类商品需求量大,因此为方便用户浏览及购买,特地将智能家居作为一个大类放置在首页展示。
电动汽车:用户对电动车类商品需求量大,因此为方便用户浏览及购买,特地将电动车作为一个大类放置在首页展示。
家用电器:目前家用电器类商品需求量较大,为方便用户浏览及购买,特地将家用电器作为一个大类放置在首页展示。
图书:图书类商品需求量大,因此为方便用户浏览及购买,特地将家用电器作为一个大类放置在首页展示。
3.4.2.4  优选店铺
针对用户经常访问的点评或者用户评价较高的店铺进行专门展示,便于用户直接访问节省用户搜索时间。
3.4.3  会员管理
3.4.3.1  会员信息
提供注册用户的个人资料查看、维护等。
3.4.3.2  地址管理
提供地址管理维护功能,可新增,编辑更改和删除地址。
3.4.3.3  浏览记录
记录用户浏览过的商品、店铺等信息,方便用户查询、回看。
3.4.3.4  我的订单
提供用户订单管理相关功能,便于用户查看订单、完成订单支付或取消、订单状态跟踪以及删除订单等操作。
3.4.3.5  我的收藏
提供商品或者店铺收藏功能,实现用户收藏需要关注的商品、店铺等,便于用户多次重复访问等。
3.4.3.6  退出登录
提供用户需切换用户重新登录或者直接退出登录等功能。
3.4.4  订单购物模块
3.4.4.1  购物车
用户可将搜索、查看的商品加入购物车,并可进入购物车查看购物车中的商品,或对购物车中的商品的数量进行修改,查看合计支付金额等。用户可对加入购物车的商品进行选择下单及支付购买。
3.4.4.2  订单提交
提交订单用于用户明确所要购买的商品数量及总金额,选择收货地址、配送方式等资料。
3.4.4.3  我的优惠券
在会员中心界面中提供‘我的优惠券’功能,用于记录用户所拥有的已过期、已使用、未使用的优惠券信息,在购买过程中可使用满足条件的未使用优惠券。
3.4.4.4  退换货
购买用户在收到货品之后对货品不满意(如有发错货或货品瑕疵等情况)可选择退换货操作。用户在进行退换货操作后,商户会对该操作进行反馈,逾期自动退款。
3.4.4.5  确认收货
用户在下单支付后收到商户发来的货品,对货品无退换货需求时可点击确认收货操作。确认收货功能标明用户的购买行为已完成。
3.4.4.6  选择收货地址
为满足用户多地址收货情况,系统提供收货地址管理功能。
3.4.4.7  取消订单
用户在下单之后,商户发货之前,可取消订单。
3.4.5  商品模块
3.4.5.1  商品搜索
提供移动电子商城全部商品的检索服务,提供商品分类展示和关键词搜索功能,可按用户需求搜索出满足条件的所有商品并以列表展示。
3.4.5.2  商品详情
用户可查看商品详细信息,包括商品的价格、厂商、规格型号、详细介绍及图片、可参与的优惠活动、历史交易情况、货品已有评价等。
3.4.5.3  立即购买
用户在浏览商品详情页面时可立刻购买,节省加入购物车环节时间。
3.4.5.4  商品评价显示
用户在购买商品过程中可查看该产品其它已购买用户的评价,便于用户增加对商品的了解,确定是否下单操作。
 
3.4.6  商铺模块
3.4.6.1  商铺详情展示
用户从商品列表页可点击服务栏进入商铺,查看商铺详情信息以及商铺中列示的商品信息。通过商铺详情页面,便于用户了解商铺的情况以及添加该商铺中其它货品。
3.4.6.2  店铺内商品搜索
当该商铺中货品数过多不便于一一浏览时,可使用店铺内商品搜索功能,按用户设置的关键词查询并列示查询结果,大大节省了选择货品的时间。
3.5  非功能需求分析
3.5.1  性能与可靠性
对于部署于互联网上的电子商务系统将面向的全世界的用户,这就要求系统要保证每天24小时不间断运行,因为任何形式的暂时性服务中断或访问困难都将对用户的使用体验造成不良影响,也将意味着会有大量客户的流失,从而造成不可预期的经济损失,因此,构建一个具备高可用性的电商平台是运营服务得以持续的基本保证。
移动商城设计要满足500万注册用户、100万活跃用户规模,满足日均独立用户访问量(简称UV)为200万以上、日均页面访问量(简称PV)为5000万。同时支持系统访问并发量达到2000以上的承载水平,总商品数满足100-500万件的容量要求。
3.5.2  可维护性
移动商城系统业务多、规模大、发展快、变化快、服务器节点多,系统可用性要求高,而系统运维人员有限,运维难度大,要运维这么大的系统,系统的可维护性迫切需要自动化运维工具支撑。运维自动化工具主要包含以下两个方面的内容:
(1)日常运维自动化
移动商城系统的稳定性非常重要,系统上线后,要保证系统7*24小时可用。在移动商城系统的日常运行过程中,可能会出各种各样的故障,例如某个服务器节点坏了,系统需要能自动的发现这些问题,并自动告警,自动处理,将这个坏掉的服务器节点从集群中去掉,保证系统仍然可用。
(2)新版本发布自动化
移动商城新的需求变化快,而且要求新的需求能快速响应,以抢占市场,运维自动化要求系统能实现新功能和新版本的测试自动化,代码自动化检查,自动化部署到测试服务器,集成测试通过了的版本,需要能自动化发布到生产环境。
3.5.3  安全性
交易信息安全:应确保重要交易数据的真实性和完整性,确保交易信息的防篡改和抗抵赖。
保护客户身份和支付信息:应妥善保管客户身份信息和支付相关信息,确保信息不被非法获取和滥用。
保护在线交易业务安全:保护客户在使用网上支付模块进行在线交易业务的安全性。
数据可靠性和业务连续性保障:应保证客户数据、业务数据的安全可用,保证系统服务正常运行,特别是在发生灾难后,确保在规定的时间内快速恢复所有数据、恢复系统正常运行。
3.5.4  易用性
用户体验(User Experience,简称UE)是客户在使用系统应用或相关产品过程中形成的一种较为主观的直觉感受,一个系统的用户体验好坏将直接影响企业的产品销售以及收益。
移动商城系统用户体验主要包含以下几个方面要求:性能、视觉设计、导航分类、站内搜索。
(1)系统页面的打开速度是直接影响用户体验的因素之一,因此在系统构建过程中要考虑减少图片的使用量、减少数据交互次数等,从而提升系统性能,提高用户体验。
(2)视觉设计颜色搭配须符合系统定位。良好的布局与风格设计是留住用户的关键,是用户体验设计的重要组成部分。
(3)导航分类为用户提供了方便、直观的搜索功能,让用户能够方便的找到自己想要的商品或内容。
3.6  本章小结
本章首先对阐述了对电子商务市场的调研情况,并详细介绍了淘宝、京东等主流电子商务系统的运行情况,以及它们的技术特点、业务场景等。并根据调研情况开展移动电子商城业务需求分析、可行性分析、功能及非功能需求分析等,为后续系统设计与开发提出具体要求及建设依据。
 
第4章  系统设计
4.1  系统设计原则
移动电子商城系统建设充分借鉴当前电商成熟经验,符合国家信息化建设规范,系统设计遵循以下几个原则:
(1)先进成熟性原则
移动商城系统规划建设将结合电子商务的业务特色,选择互联网电商平台建设普遍采用的开源软件和先进成熟技术,满足移动电子商务系统现阶段业务与管理需求,同时适应并满足未来移动商城业务扩展的需要。
(2)可扩展性原则
可扩展性是互联网规模经济发展和应用发展对技术发展的潜在要求。在系统建设过程中要保证系统平台具有较强的扩展性;应用软件能够通过配置实现功能及业务的拓展需求,能够方便实现与其它业务系统的集成及数据交互。
(3)安全性原则
移动商城系统架构复杂,应用数据分类较多,必须通过采取多种安全机制和技术手段保障系统安全稳定运行,确保业务应用具备高安全可靠性的保护机制,满足信息系统安全运行的要求。
(4)实用性原则
随着虚拟化技术的发展,企业资源的整合效率不断提高,大大降低了成本,提高了资源整体经济性。因此,移动商城系统的构建应该从实用性角度出发,在确保先进性、高性能的前提下合理投资,从而获得最大的经济效益。
(5)高可靠性原则
移动商城系统应采用成熟的、先进的技术和设备,保持系统技术行业领先态势,确保系统的高可靠性,满足长期稳定运行的要求。
4.2  系统架构设计
4.2.1  技术架构设计
系统在设计过程中充分考虑电子商务系统在海量数据支撑、系统变更频率、新技术应用、低成本运维等方面的特点,引入目前互联网应用的主流架构,借鉴主流电商平台的成熟经验,并考虑电子商城的未来发展需要,设计了如下电商系统技术架构。
 
图4-1系统技术架构
Figure 4-1 system technical architecture
系统架构各部分说明如下:
(1)展现层
负责对网络接入层分发的压力进行第二层分担,通过Web服务负载均衡、静态化、动静结合的方式实现前端功能的展现。
(2)应用层
应用层与传统企业应用类似,负责业务逻辑的处理。在互联网架构下,应用层通过引入应用无状态、搜索引擎、分布式缓存等技术,进一步扩大负载的横向分担能力和业务变化快速响应能力,尽可能减少单点故障。
(3)服务层
将企业级应用大量同步信息传递,根据业务特性进行异步化处理。通过消息路由和消息调度机制的理构建,改善在高并发情况下各系统组件间同步通信可能导致的堵塞,提高系统负载能力。
(4)数据层
主要体现电商大数据量的特点,按照数据的分类、读取性能、计算要求进行不同存储技术的划分,并且通过引入分布式技术着重降低关系型数据库的压力,在最大程度保障数据可靠性的前提下降低数据库压力。
(5)基础设施层
承载电商系统的基础设施,包括网络、服务器、存储等,通过虚拟化、计算加速等技术提高硬件负载能力。
4.2.2  关键技术验证
对移动商城将采用的关键技术进行应用研究及技术验证,以便尽可能早地发现并解决开发过程中将会遇到的技术障碍,为后续进行的系统研发工作起到指导作用。
4.2.2.1  验证场景设计
表4-1 POC验证场景
Table 4-1 POC validation scenarios
POC验证项 验证项场景
分布式缓存(Redis) 1、构建一套应用服务器集群
2、模拟创建用户会话,例如用户信息、模拟购物车等。
3、实现会话状态数据存于分布式缓存服务。本地浏览器将唯一标识(SESSIONID)保存在cookie中,访问请求发送给任意应用服务器,通过分布式缓存存取状态信息。
搜索引擎(Solr) 1、实现索引文件创建
2、实现对中文自动分词功能
3、实现通过语意进行搜索
分布式文件系统(HDFS) 1、实现非结构数据(商品图片、搜索索引文件)在分布式文件系统中存放
4.2.2.2  验证环境
此次POC验证工作共准备9台虚拟机,软硬件配置如下:
CPU:Xeon E7-4830 4核 2.0GHz
内存:8G
操作系统:RedHat 5.8 64位
4.2.2.3  验证结果
表4-2 POC验证结果
Table 4-2 POC validation results
验证技术点 验证场景 验证结果
分布式缓存:Redis 分布式缓存读写 支持
持久化 支持
高可用 支持
搜索引擎:Solr 模糊搜索 支持
关键词高亮显示 支持
关键词分类 支持
高可用 支持
分布式文件系统:HDFS NGINX集成 有限支持
WEBLOGIC集成 支持
搜索引擎集成 有限支持
文件读写 支持
高可用 支持
(1)分布式缓存(Redis)
Redis支持的数据类型主要包括String、List、Hash、Set和SortedSet等五种。支持主从模式的部署方案,当主从模式下的主节点挂掉后,能自动从现有的从节点中选取一个作为新的主节点,当人为或者非人为的出现Redis环境宕机后,数据不会丢失。但尚无支持Cluster功能的稳定版本适用于生产环境,因此不能称之为完全分布式。
(2)搜索引擎(Solr)
Solr默认功能可以满足对高亮显示、读写检查、集群部署、模糊搜索等需求,其他高级功能,如:搜索推荐、排序等功能,需要进行二次开发工作。另外Solr对HDFS的支持较差,在系统构建过程中可使用Solrcloud插件的方式或采用存储+索引复制的方式来实现。
(3)分布式文件系统(HDFS)
实现对小图片、搜索索引文件读写功能,验证分布式文件系统高可用性,在高并发下性能满足非功能性需求指标。但需要Ngnix、搜索引擎添加应用服务器桥接集成,增加了技术架构和系统运维的复杂度。
4.3  系统功能及流程设计
4.3.1  流程设计
移动电子商城系统在设计过程中更注重的是流畅的用户购物体验,弱化了业务流程控制,当新用户在使用商城系统时可以方便进行注册/登录、查询/浏览商品,将想要购买或比较关注的商品加入购物车,在购物车内完成商品数量等信息修改进行下单、支付等操作,完成在移动商城的购物操作。
 
图4-2用户登录购物流程图
Figure 4-2 User login shopping flow chart
 
图4-3用户登录购物时序图
Figure 4-3 User login shopping timing diagram
4.3.2  首页功能设计
移动商城APP首页采用最常用的入口导流型的首页界面设计方案,此设计使得首页不再是真正的消费活动和与用户对话的主场景,而是更多的起到分流的作用。首页布局采用宫格形式,从而精简首页的内容呈现,并提供促销活动及广告轮播、主要频道、品类、搜索等入口。同时引导用户尽快引入二级页面产生PV。
首页的功能如下:
(1) 广告轮播:在首页显著位置以一定时间间隔对多个广告或宣传图片进行循环播放,来展示商城、商品、店铺等信息,达到吸引用户产生购买行为。
(2) 活动专区:将移动商城开展的秒杀、降价竞购等促销活动集中展现给用户,并提供相关活动的入口。
(3) 主要频道:将移动商城运营的特色业务(如智能家居、电动汽车、家用电器、图书等)展现给用户,并提供相关入口,方便用户快速查询相关商品。
(4) 优选店铺:在商城App首页中提供商城优选店铺信息,并可直接打开查看店铺及该店铺提供的商品信息。
4.3.3  会员中心功能设计
会员中心是实现商城会员管理的核心模块,主要包括用户注册及登陆、会员管理(增加、删除、更改、查询)、会员统计等相关功能。
(1) 用户登录:用户输入用户名、密码以及验证码进行登录验证,只有通过验证后的用户才能进入到手机APP程序中使用会员中心相关功能,在该界面用户可选择记住用名户、密码及自动登录。 
(2) 用户注册:用户通过注册功能输入用户名、密码设置等信息进行注册,通过审核后可登录到商城系统中进行会员相关功能的操作,在注册过程中需提供短信验证或邮箱验证等功能。
(3) 个人购买信息查看:提供查看商品购买的订单信息,包括历史订单信息详情,待支付、待收货、待评价订单信息,以及商品评价、退换货等功能。
(4) 个人信息:支持个人的基本信息查看及修改,包括昵称、生日、爱好等。
(5) 帐户与安全:实现用户的密码修改、密码找回、手机/邮箱绑定等功能。
(6) 收货地址:实现用户常用的收货地址查询维护,包括新增、删除、修改等。
(7) 其它功能:会员中心提供商城积分、我的收藏、我的消息、购物车、商品评价等信息的查询功能。
4.3.4  购物车功能设计
购物车是商城为用户提供的类似于超市购物时使用的推车,用于存放用户挑选好的商品,在购物车中实现商品的添加、删除或更改购买数量,并实现价格、运费的计算,帮助用户完成多个商品一次购买、结算。
(1) 添加到购物车:用户在选定商品后添加到购物车中,便于用户对商品进行整理。
(2) 购物车浏览及维护:支持购物车中的商品数目的增加、删减,支持商品的新增、删除等。同时显示商品可参加的促销活动信息以及可享受订单优惠说明。
(3) 清空购物车:可一键清空用户的购物车中的商品。
(4) 结算下单:用户通过购物车进一步选定要购买的商品,系统自动完成购买商品的价格计算,分别展现本次购物的数据、金额小计,并通过结算功能完成下单操作,生成订单并进入支付流程。
4.3.5  订单模块设计
移动商城订单模块主要实现用户的订单管理,包括下单、支付、收货确认、退换货、订单及商品评价、状态跟踪等,并可实现订单的取消、删除操作。
(1) 下单:用户可在购物车中选择要购买的商品,确认数量等信息后完成下单操作,或在商品详情页中直接购买实现下单。下单完成后系统直接进入订单支付页面。
(2) 支付:用户下单后系统直接进入支付页面或通过会员中心->待支付订单打开支付页面,进行订单支付操作。
(3) 收货确认:用户收到购买的商品后,打开会员中心->待收货订单,进行确认已收到商品。
(4) 商品评价:对购买的商品、购物过程以及店铺的服务情况进行评价。
(5) 订单状态跟踪:打开会员中心->我的订单查看购买订单的状态,如未付款、已发货、收货完成等。
(6) 订单取消:对于未付款的订单用户可自行取消订单。
(7) 订单删除:对于已取消或已完成的订单,用户可在会员中心->我的订单删除。
(8) 历史订单查询:用户可通过会员中心->历史订单查看所有订单信息。
4.3.6  商品模块设计
移动商城商品模块主要实现商品信息的展示,包括商品列表及商品详情页。 
(1) 商品列表:用户在搜索商品时以清单方式向用户展示满足搜索条件的商品,系统默认显示10个商品,当页面滑至底部进自动加载后10个商品,提供按综合排名、销量、价格的排序功能及高级搜索功能。每个商品一行,左侧显示商品图片,右侧上面显示名称、型号等关键商品信息,中部展现商品的价格及促销信息,下部显示店铺以及商品的评价、销量等信息。点击商品可打开商品的详情面。
(2) 商品详情页:商品详情页提供商品图片轮播功能、商品的规格型号信息、可参与的优惠活动、商品配送运费估算、商品评价、商品的详细介绍、历史交易情况等信息,并提供收藏、加入购物车、直接购买等功能。
4.4  系统安全设计
表4-3 系统安全要求及实现方式
Table 4-3 system security requirements and implementation methods
安全要求 实现方式及措施
身份认证 采用用户名、口令方式认证时,设置密码安全策略,保证密码长度不少于8位,并要求至少使用数字、大、小写字母、特殊字符中的两种搭配组合;
设置认证策略,用户在连续5次密码输入错误后,系统自动锁定账户,需用户提出解锁申请并在验证身份无误后由系统管理员手工解锁;
在进行业务办理时,应判断同一次登录后的所有操作必须使用同一IP地址和MAC地址,并确保进行双向身份认证,否则服务器端自动终止会话。
授权 系统通过角色定义用户的业务操作及数据访问权限,系统管理员只有系统资源权限,安全审计员只有安全审计功能的权限,普通业务用户只具有业务权限和本身的信息权限; 
系统可以给角色分配可访问资源的权限及系统操作的权限;
特权管理员账户禁止使用;
可以区分客户(消费者、商户、渠道商)身份信息标记等敏感信息数据;
输入输出验证 系统通过配置过滤器来过滤用户请求中是否包含的非法字符,并使用正则表达式来适应各类业务场景,从而实现输入输出的验证;
会话管理 设置用户会话保留的时间,如果超过就自动删除会话,默认会话保留时间为30分钟,可根据系统要求进行调整;
用户在登录系统时,用户登录及身份凭证需要加密存储及传输,登录成功后创建并存储会话,会话中保存IP、机器名等关键信息;同时禁止同一帐号不同地点重复登录系统;
登录系统后的页面中需要提供退出及注销等功能,用户退出或关闭应用程序后,系统自动清除用户的会话信息;
加密技术 使用国产加密SM系列(如对称算法SM4、非对称算法SM2、哈希算法SM3)加解密算法对数据进行加密;
用户密码:采用高强度哈希密码算法SM3对用户密码进行加密存储;
通信报文:使用HTTPS安全协议传输,重要数据传输时采用高强度哈希算法生成数字摘要,能够保证信息在传输过程中的完整性;
敏感数据:对于重要的数据使用具有较高强度对称加密算法加密后存储,并在数据传输过程采用SSL等安全协议;
集成服务:对于文件类型通过FTP流转的均采用SFTP安全协议传输,其他类型数据使用HTTPS安全协议传输,对于关键应用集成信息,采用数字签名进行安全防护。
异常管理 出现意外情况,系统自动重新启动,自动保护当前状态;
建立系统异常统一管理的机制,统一保存异常信息,并使用统一页面展示异常信息;
日志与审计 提供对用户的登录、下单、支付、删除订单、更改用户信息等关键操作或对敏感数据操作的审计,并按指定格式保存审计日志数据;
具有审计日志统一管理功能,可集成对审计日志进行搜索、分析等,并生成系统管理需要的审计报表,供管理人员使用;
可根据数据的敏感度以及系统和用户数据安全等因素设置审计日志的级别,对于系统及用户的敏感数据进行强制审计,对于非敏感数据可以通过后台配置来确定是否进行审计;
通过使用企业审计管理,记录关键HTTP请求并进行威胁检测。
抗抵赖 执行交易信息、第三方支付等重要业务操作时,利用数字摘要技术对用户提交数据进行完整性保护;
如果用户申请了数字证书,应采用数字签名技术对用户提交的数据进行签名。
对重要业务操作,详细记录事件日志,包括用户提交请求、各次交互数据以及事件发生时间、地点等。
信息发布审核 针对具体栏目设置发布是否需要经过审核及审核、发布权限。拥有审核设定的栏目,在进行信息提交后,将会处于待审核状态,仅当拥有审核权限的管理人员审核通过后,信息方可对外发布。
入侵防范 禁止通过Web页面浏览及操作服务器的目录与文件,通过禁止浏览系统目录列表,能够有效防止未经授权的用户下载站点重要的数据;
统一目录访问的出错提示信息,屏蔽程序中的详细错误信息以及系统的调试信息;
明确哪些数据类型可以由客户端提交,自动校验提交数据的有效性;
在网站业务处理层使用代码规则验证以及数据查找比对的真实性准确性验证;
4.5  系统集成设计
实现电子商城与第三方支付平台、第三方物流的集成设计。
表4-4 系统集成要求及实现方式
Table 4-4 system integration requirements and implementation methods
集成工作项 工作项说明 技术实现
电子商城与第三方支付集成 电子商城系统调用第三方支付系统完成用户对订单的支付需求,电子商城系统需要与第三方支付系统做集成,提供多个第三方支付商供用户选择,用户在第三方支付系统支付完成之后,第三方支付系统将支付成功信息返回给电子商城系统。 通过https协议方式与第三方支付进行集成
电子商城与第三方物流集成 用户在电子商城购买商品之后,由第三方物流公司来配送用户商品,客户在电子商城系统可以随时查询自己订单的配送状态;第三方物流公司将客户订购的商品配送成功之后,可通过接口通知电子商城。 WebService与第三方物流进行集成
4.6  系统性能及可靠性设计
(1)系统性能
联机交易处理时间小于3秒。
前后台文件传输时间、处理时间需符合实时处理等性能指标。
(2)系统支持用户数
最大连接用户数:大于两万。
最大并发用户数:大于五千。
(3)响应时间
用户登陆请求的响应时间小于1秒。
常用的简单搜索请求响应时间小于2秒。
(4)时间窗口需求
本系统为7X24小时运行。
(5)核心功能的可靠性需求
系统在上线运行期间,需保证每月非计划停机时间不超过5分钟,每次非计划停机时间不能超过3分钟,折合等效可用率是99%。
在出现关键硬件故障影响系统使用时,系统恢复并可正常使用的时间不超过2小时。
4.7  系统数据结构设计
电子商城系统主要通过营销手段吸引合作伙伴入驻商城开设店铺,开展在线商品交易形成订单,提供配套的支付、物流服务和客户服务,实现商城的财务收入。通过梳理电子商城系统各应用数据组织、数据需求、核心数据模型,形成如下一级和二级主题域:
 
图4-4 电子商城系统数据主题域
Figure 4-4  electronic mall system data theme domain
 
电子商城系统产生的关键数据主要涉及营销、店铺、商品、订单、客服、合作伙伴、物流、财务8个一级主题域;店铺经营、店铺配送、店铺商品、商户、消费者、财务方案、财务管理、促销方案、促销管理、推广方案、推广管理、广告方案、广告管理、营销方案、营销管理、运营方案、运营管理、招商方案、招商管理、历史方案、采购方案、收入、支出、发票、账目、财务辅助、客服辅助、客户关系、客服历史、售后服务30个二级主题域。
4.7.1 店铺主题逻辑模型设计
 
图4-5 店铺主题逻辑模型
Figure 4-5  store theme logic model
 
 
图4-6 商铺、商品主题逻辑模型
Figure 4-6 shop, commodity theme of the logic model
 
表4-5 店铺主题中实体关系
Table 4-5  entity relationship in the shop theme
数据实体1 数据实体2 关联关系
店铺信息 店小二岗位信息 一对多
店铺信息 店铺商品信息 一对多
店铺信息 店铺与促销工具关系 一对多
店铺信息 店小二信息 一对多
店铺信息 商户发货物流信息 一对多
店铺信息 参与促销商品信息 一对多
店铺信息 店铺评价 一对多
店铺信息 店铺与品类关系 一对多
店铺信息 店铺分销处信息 一对多
店铺信息 店铺运费模板信息 一对多
店铺信息 店铺方案 一对多
店铺信息 店铺品类产品资质关系 一对多
店铺信息 店铺单品信息 一对多
店铺信息 店铺与品类关系方案 一对多
店铺信息 询价信息 一对多
店铺信息 店铺与商品关系 一对多
店铺信息 店铺内商品间关系 一对多
店铺信息 店铺商品评价 一对多
店铺信息 店铺商品属性信息 一对多
店铺信息 店铺品类品牌关系 一对多
店铺信息 店铺商品与图片关系 一对多
 
店铺主题共有3个数据子主题:经营、配送、商品。此数据域以店铺信息为中心展开,形成了店小二岗位信息、店铺商品信息、店铺与促销工具关系、店小二信息、商户发货物流信息、参与促销商品信息、店铺评价、店铺与品类关系、店铺分销处信息、店铺运费模板信息、店铺方案、店铺品类产品资质关系、店铺单品信息、店铺与品类关系方案、询价信息、店铺与商品关系、店铺内商品间关系、店铺商品评价、店铺商品属性信息、店铺品类品牌关系、店铺商品与图片关系共22个数据实体。
4.7.2 商品主题逻辑模型设计
 
图4-7 商品主题逻辑模型
Figure 4-7  commodity theme logic model
 
表4-6 商品主题中实体关系
Table 4-6  entity relationship in commodity themes
数据实体1 数据实体2 关联关系
商品基本信息 商品扩展信息方案 一对多
商品基本信息 品类与品牌关系 一对多
商品基本信息 品牌信息 一对多
商品基本信息 品类扩展信息 一对多
商品基本信息 商品基本信息方案 一对多
商品基本信息 品类信息 一对多
商品基本信息 单品信息 一对多
商品基本信息 历史商品基本信息方案 一对多
商品基本信息 商品扩展信息 一对多
 
商品主题现阶段以商品基本信息为中心展开,形成了商品扩展信息方案、品类与品牌关系、品牌信息、品类扩展信息、商品基本信息方案、品类信息、单品信息、历史商品基本信息方案、商品扩展信息共9个数据实体。
4.7.3 合作伙伴主题逻辑模型设计
 
图4-8 合作伙伴主题逻辑模型
Figure 4-8  partner theme logical model
 
表4-7 合作伙伴主题中实体关系
Table 4-7  entity relationship in the theme of partner
数据实体1 数据实体2 关联关系
合作伙伴信息 支付平台账户信息变更 一对多
合作伙伴信息 公司资质信息 一对多
合作伙伴信息 店铺收藏信息 一对多
合作伙伴信息 生产经营性物资采购商信息 一对多
合作伙伴信息 常用邮件网址 一对多
合作伙伴信息 商户合同信息 一对多
合作伙伴信息 报价信息 一对多
合作伙伴信息 公司财务税务信息 一对多
合作伙伴信息 退款信息 一对多
合作伙伴信息 商品收藏信息 一对多
合作伙伴信息 生产经营物资供应商信息 一对多
合作伙伴主题以合作伙伴信息为中心展开,形成了支付平台账户信息变更、公司资质信息、店铺收藏信息、生产经营性物资采购商信息、常用邮件网址、商户合同信息、报价信息、公司财务税务信息、退款信息、商品收藏信息、店铺评价信息、店铺品类信息、店铺通知信息、店铺关闭申请信息、生产经营物资供应商信息共12个数据实体。
4.7.4 订单主题逻辑模型设计
 
图4-9 订单主题逻辑模型
Figure 4-9  Order subject logic model
 
表4-8 订单主题中实体关系
Table 4-8  entity relationship in order theme
数据实体1 数据实体2 关联关系
订单信息 订单与支付关系 一对一
订单信息 订单与采购订单关系 一对一
订单信息 物资订单明细信息 一对多
订单信息 解决方案订单信息 一对多
订单方案 订单明细信息 一对多
此数据域以订单信息为中心展开,形成了订单信息、订单方案、订单明细信息、订单明细方案、采购订单方案、订单与采购订单方案、订单与支付关系、解决方案订单信息、物资订单明细信息共9个数据实体。
4.8  本章小结
本章首先叙述移动电子商城系统设计原则以及系统架构设计,并对系统技术选型以及关键技术POC验证情况进行简要介绍。并在需求分析及架构设计基础上详细讲述了系统功能设计、安全设计、集成设计、性能及可靠性设计、数据结构设计等设计过程。
 
 
第5章  系统实现与测试
5.1  系统开发及运行环境
移动电子商城系统的开发环境准备包括以下工作:
表5-1 电子商城系统的开发及运行环境
Table 5-1 Developing and running environment of electronic mall system
类型 描述
应用服务器 硬件参数:CPU:Xeon E7-4830 4核 2.0GHz 内存:8G
操作系统:RedHat 5.8 64位
数据库服务器 硬件参数:CPU:Xeon E7-4830 4核 2.0GHz 内存:8G
操作系统:RedHat 5.8 64位
数据库 Oracle 11g
开发语言 Java
开发平台 Eclipse 4.3.2
中间件 Tomcat 7.0
关键技术组件 分布式缓存:Redis 2.8.1
搜索引擎:Apache Solr 5.0
分布式文件系统:HDFS 2.2.0
客户端 PC端:Windows 7、Windows 10 中文专业版
移动端:Android 3.0及以上
5.2  系统关键技术实现
5.2.1 分布式缓存实现
分布式缓存主要应用于动态Web应用的数据访问,将数据从数据库读取到内存中供终端应用使用,从而减少数据库读取存储设备的次数来提高系统的性能。其原理就是在系统内存中创建一个巨大的Hash表来存储文本文件、二进制文件以及数据库表等各种类型的数据。可以允许不同主机上的不同用户同时访问这个系统,避免了共享内存只能在单机使用的弊端,同时也减轻了数据库访问的负载。也可以使用到分布式数据库、分布式计算等领域。
 
图5-1  分布式缓存业务场景
Figure 5-1 distributed cache service scenarios
 
数据的存储有很多方案,大多采用文件存储及数据库存储方案,当访问并发量大时,这种方案就局限于数据库或者文件的IO操作。由于数据块很大,读取数据块所需时间相对很长,就会造成页面显示不及时或者无法显示的状态,采用分布式缓存存储方案就是解决这一问题的最佳方案。分布式缓存采用的内存操作,不存在着频繁IO读写操作,大大降低的数据库的读取时间,调高了程序的响应时间。有利于高并发下的系统正常运行。例如用户在浏览商品时,商品的库存信息,可以进行分布缓存式的处理方案。这项技术即涵盖缓存配置工作,也涵盖大量的开发工作。
本课题研究的移动商城系统采用Redis作为系统的分布式缓存组件,Redis能够存储字符串、链表、哈希表以及集合(包括有序集合)等多种类型的数据。Redis的出现在很大程度上弥补了memcached的不足,它提供了性能更好的key-value数据库,并提供了更为实用的主从同步机制。
Jedis是Redis基于客户端的java实现。也是Redis客户端的一个子项。Jedis核心实现类就是Jedis class,下面将详细介绍 Jedis class api及开发案例
Jedis jedis = new Jedis("127.0.0.1",6379); //通过tcp/ip的通讯方案,连接到redis服务器。
jedis.set("key","value"); // 调用set方法向redis服务器存储信息(基于string类型)。
jedis.get("key"); //调用get方法调用为“key”参数的值。
jedis.hset("hashs", "entryKey", "entryValue"); //向hashs表添加数据(基于hash表类型)
jedis.hset("hashs", "entryKey1", "entryValue1");//向hashs表添加数据
System.out.println(jedis.hexists("hashs", "entryKey")); // 判断某个值是否存在      
System.out.println(jedis.hget("hashs", "entryKey")); // 获取指定的值       
System.out.println(jedis.hmget("hashs", "entryKey", "entryKey1")); // 批量获取指定的值
System.out.println(jedis.hkeys("hashs")); // 获取所有的keys
System.out.println(jedis.hvals("hashs")); // 获取所有的values
redis作为缓存应用的主要组件,spring机构也对该组件提供相应的配置和整合方法。依赖的jar文件包括spring-data-redis.jar, jedis-2.1.0.jar ,commons-pool-1.6-bin.zip
<!-- Redis   spring 缓存配置 -->
    <bean id="jedisConnFactory"        class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="${redis.pool.host}" />
        <property name="port" value="${redis.pool.port}" />
        <property name="poolConfig" ref="jedisPoolConfig" />
    </bean>
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
        p:connection-factory-ref="jedisConnFactory" />
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxTotal" value="${redis.pool.maxTotal}" />
        <property name="maxIdle" value="${redis.pool.maxIdle}" />
    <property
        name="timeBetweenEvictionRunsMillis"  value="${redis.pool. timeBetweenEvictionRunsMillis}" />
        <property name="minEvictableIdleTimeMillis" value="${redis.pool. minEvictableIdleTimeMillis}" />
        <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
5.2.2 搜索引擎实现
搜索引擎一般通过特定的应用软件,按照指定的策略从互联网搜集需要数据信息,并对收集的数据进行再加工,并为广大的互联网用户提供信息检索服务以及向用户展示查询到的信息。
搜索引擎工作原理如下:
第一步:爬行。搜索引擎是根据制定的搜索策略来跟踪网页中的链接,打开一个链接后按照预定的规则抓取网页数据,然后再跳转到另外一个链接抓取数据,就像自然界中的蜘蛛一样。
第二步:抓取存储。搜索引擎通过爬行的方式从网页中抓取HTML页面数据,并在不进行任何加工的情况下保存在数据库中。搜索引擎除了抓取页面数据外,还会对网页中的内容进行检测,一旦网站的出现重复内容多或存在大量抄袭的内容时,它就会自动停止爬行。
第三步:预处理。搜索引擎将原始的HTML页面数据进行加工处理,首先提取网页中的文字,并进行分词处理,同时去掉对搜索无意义的停止词(如:然后、和、或者),并消除如版权声明、广告等影响搜索的噪音,然后就要为数据建立索引,计算数据链接的关系,处理特殊的文件等。通过搜索引擎除了抓取HTML页面外,还可以抓取如 PDF、Word、WPS、XLS、PPT、TXT 等以文字为基础的多种类型的文件。
第四步:排名。用户在通过关键词检索数据信息时,搜索引擎排名应用会调用索引来计算检索数据的排名顺序,并按排名顺序展示数据。
本系统将采用Solr作为主要的搜索组件。Solr是一个采用Java开发的高性能的企业级搜索应用服务器。Solr是以Lucene为基础构建,其查询语言更为丰富、安装配置更为灵活、系统扩展性也更好,并可同时支持XML/XSLT、JSON等多种输出格式,是一款使用方便、功能完善、性能可靠的全文搜索引擎。另外Solr与Lucene保持了良好的兼容性,通过在Solr进行适当的配置或简单的编码就可以使用其它基于Lucene 开发的索引程序 [23-24]。
下面将从Solr的基础、配置及应用几个方面详细讲解slor的使用。
(1)Solr基础
因为 Solr 是基于Lucene构建,所以Solr延用了Lucene的技术术语,这使得它们具有较好的兼容性。搜索引擎Solr通过Document 来进行索引创建,并根据需要至少为其分配一个 Field,并通过Field本身的选项来明确数据的名称、内容等信息,并通知Solr应该如何处理这些数据。
表5-2  Solr属性说明表
Table 5-2  Solr attribute description table
属性名称 描述
Indexed Indexed Field 是用于信息搜索和排序的。
Stored stored Field 内容保存在索引中。
 
(2)Solr配置
Solr模式关联的配置文件schema.xml能在\solr\example\solr\collection1\conf中找到,这个配置文件中对需配置的内容有详细的注解与说明。
types 部分
它是重用Lucene的技术术语,其中明确了Field的使用要求。(详见参数列表)。
表5-3  types配置说明表
Table 5-3  types configuration description table
属性 描述
name 标识而已
class 是确定fieldType行为的关键因素之一。
sortMissingLast 值为true或false,系统默认为false,当设置成true时,系统将不管请求设定的排序规则,只是将该field有值的数据排在前面。
sortMissingFirst 值为true或false,系统默认为true。作用与上面的相反,就是将该field有值的数据排在后面。
analyzer 字段类型指定的分词器
type 当前分词用用于的操作.index代表生成索引时使用的分词器query代码在查询时使用的分词器
tokenizer 分词器类
filter 分词后应用的过滤器  过滤器调用顺序和配置相同.
 
fileds 部分
用于定义索引文件内容中的属性名称,其中在其类型声明中可使用types。
表5-4  fileds配置说明表
Table 5-4  fileds configuration description table
属性 描述
name 字段类型名
class java类名
indexed 值为true或false,系统缺省true。 用于定义当前字段是否应该被搜索和排序。
stored 值为true或false,系统缺省true。用于说明这个字段应该在搜索结果中。
omitNorms 值为true或false,一般文本字段不设置为true,只有在索引不做boost时,设置它为true。
termVectors 值为true或false,一般设置为false,此字段值为ture时表示是more like this 或highlight特性。
compressed 通过compressed属性来压缩字段,节省数据存储空间,但会牺牲系统索引和搜索的速度。
multiValued 值为true或false,如果字段存在多个值时要设置成true。
positionIncrementGap 仅在multiValued的值为true时使用,用于定义fields多个Value的间隔。
 
Solr配置(solrconfig.xml)
Solr的配置工作是通过solrconfig.xml这个配置文件实现的,它保存在solr安装目录\solr-4.2.0-src-idea\solr\example\solr\collection1\conf文件夹里。这个配置文件主要包括lib配置、Solr依赖的jar包以及相关插件、组件信息配置、索引配置和查询配置等,下面详细说一下索引配置和查询配置。
表5-5 索引配置
Table 5-5  index config
属性 描述
useCompoundFile 系统默认为false。通过此属性设置为true就可以多个Lucene的内部文件合并成一个文件,这样可以减少Solr中文件句柄的使用数量,但会给系统性能带来负面影响。
ramBufferSizeMB 用于设置Solr缓存大小。
在更新文档数据时,Solr首先将文件放在缓存中,只有在缓存中的数据大于设定的值时,系统才自动更新索引库,这样能够有效的减少索引更新的频率,提升系统效率。
maxBufferedDocs
mergeFactor 用于定义Lucene 段被整合的频率。一般要根据应用运行情况来确定其值的大小,值越小使用的内存也越少,但会使索引的时间变长,值越大则使用的内存越多,其索引时间就越短。
maxIndexingThreads 使用indexWriter创建索引时Solr可使用的最大线程数量。
unlockOnStartup 通过unlockOnStartup来定义在多线程环境下的索引保护机制。
lockType Single:只有在索引没有被其它进程修改或处于只读状态时才能使用。
Native:利用操作系统自身的文件锁控制JVM中的共享索引不被多个Solr使用。
Simple:使用一个文本文件锁定索引。
 
表5-6 查询配置
Table 5-6  query configuration
属性 描述
maxBooleanClauses 用于定义BooleanQuery的最大数量,这个值在全局有效。
filterCache filterCache用于保存lucene document id:
1. 存储并得到的document id集合结果;
2. 还可用于facet查询;
3. 通过配置useFilterForSortedQuery参数,来确定过滤器是否可用。
queryResultCache 通过一个文档ID列表来获取缓存的搜索结果。
documentCache 基于Lucene的Document缓存数据。
fieldValueCache 通过文档ID可以快速检索字段缓存。系统默认会自动创建。
enableLazyFieldLoading 数据延迟加载主要用于检索大型Document时,如果加载整个文档将严重影响系统的性能与效率,因此在搜索结果中显示几个Field或一小段信息,用户通过点击打开对应的原始文档。
queryResultWindowSize 用于定义在一次信息检索服务中可存储Documen id的最大数目。
queryResultMaxDocsCached 用于保存Documen检索结果的最大缓存数。
listener 用于定义新搜索被执行时或第一个执行搜索服务时系统需要执行哪些操作或事件。
useColdSearcher 值为true时系统使用冷搜索,值为false时不会使用冷搜索。
maxWarmingSearchers 用于定义系统自热的最大数量。
 
Solr应用
对于Solr的应用,本课题主要通过SolrJ进行介绍。为方便系统跟踪调试原程序,在开发过程中使用了嵌入式服务器(EmbeddedSolrServer)。
EmbeddedSolrServer初始化
System.setProperty("solr.solr.home", "D:\\B2C\\solr-4.2.0-src\\solr\\example\\solr");
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
CoreContainer  coreContainer = initializer.initialize();
SolrServer  server = new EmbeddedSolrServer(coreContainer, "");
增加索引
首先通过给Document添加字段和值来构建SolrInputDocument对象。
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "XXX");
doc.setField("content", "移动电子商城");
server.add(doc);
server.commit();//如果配置文件中的使用了autoCommit,此外可省略。
删除索引
有两删除索的方法,如果知道Document ID,可以通过ID直接删除,另外可以选择删除查询结果。
通过ID删除方式代码:
server.deleteById(id);
//或是使用批量删除
server.deleteById(ids);
通过查询删除方式代码:
server.deleteByQuery("*.*");//这样就删除了所有文档索引
//”*.*”就查询所有内容的,介绍查询时会详细说明.
优化索引
优化Lucene 的索引文件以改进搜索性能。索引完成后执行一下优化通常比较好,一般索引优化工作通过在使用率较低的时候进行。
server.optimize();//建议在使用频率低的时候调用。
查询索引
Solr的查询功能并不依赖于任务配置,如在web程序中直接调用URL来访问Solr服务器查询数据。例如:
http://localhost:8983/solr/ collection1/select?q=*%3A*&wt=xml&indent=true
如果使用Solr,查询调用的代码如下:
SolrQuery query = new SolrQuery();
query.set("q","*.*");
QueryResponse rsp =server.query(query)
SolrDocumentList list = rsp.getResults();
5.2.3 分布式文件系统实现
分布式文件系统(Distributed File System)是通过网络将多个物理存储资源整合在一起进行统一管理,通常分布式文件系统采用基于客户机/服务器模式进行设计。本课题采用了HDFS(Hadoop Distributed File System)构建移动电子商务文件管理系统,主要是由于HDFS可以部署在价格低廉的PC服务器上,且具备较高的容错性,这为电子商务低成本运营提供有力的支撑。
 
图5-2 分布式文件系统的实现
Figure 5-2 Implementation of distributed file system
以上是从业务角度来分析分布式文件系统的实现。实际上数据存储就是数据块存储过程,但如果数据块相对足够大时,那么我们每次进行IO读取操作就会进行相当长的时间,如果将数据分割分布存储在不同机器上,在利用多线程的读取方案读取数据块,最后组装,就能有效的缩短数据读取与存储时间。快速的响应给用户所需的数据信息。例如图片和视频数据信息相对很大,采用分布式存储方案会提高数据读取与存储时间。这项技术即涵盖配置工作,也涵盖大量的开发工作。
HDFS中关于文件操作类是在"org.apache.hadoop.fs"包中,通过这些API来完成打开文件、读写文件、删除文件等操作。HDFS类库中最终面向用户提供的接口类是FileSystem,该类是个抽象类,只能通过来类的get方法得到具体类。get方法存在几个重载版本,常用的是这个:
static FileSystem get(Configuration conf);
HDFS常用的文件操作示例: 
上传文件
通过"FileSystem.copyFromLocalFile(Path src,Patch dst)"可将本地文件上传到HDFS的指定位置上,其中src和dst均为文件的完整路径。具体事例如下
1. package com.hebut.file; 
2. import org.apache.hadoop.conf.Configuration; 
3. import org.apache.hadoop.fs.FileStatus; 
4. import org.apache.hadoop.fs.FileSystem; 
5. import org.apache.hadoop.fs.Path; 
6. public class CopyFile { 
7.    public static void main(String[] args) throws Exception { 
8.        Configuration conf=new Configuration(); 
9.        FileSystem hdfs=FileSystem.get(conf); 
10.        Path src =new Path("E:\\DataFile");  //本地文件路径 
11.        Path dst =new Path("/"); 
12.        hdfs.copyFromLocalFile(src, dst); 
13.        System.out.println("Upload to"+conf.get("fs.default.name")); 
14.        FileStatus files[]=hdfs.listStatus(dst); 
15.        for(FileStatus file:files){ 
16.            System.out.println(file.getPath()); 
17.        } 
18.    } 
19.
创建HDFS文件
通过“FileSystem.create(Path pf)”可在HDFS上创建文件,其中pf为文件的完整路径。具体实现如下:
1. package com.hebut.file; 
2. import org.apache.hadoop.conf.Configuration; 
3. import org.apache.hadoop.fs.FSDataOutputStream; 
4. import org.apache.hadoop.fs.FileSystem; 
5. import org.apache.hadoop.fs.Path; 
6. public class CreateFile { 
7.    public static void main(String[] args) throws Exception { 
8.        Configuration conf=new Configuration(); 
9.        FileSystem hdfs=FileSystem.get(conf); 
10.        byte[] buff="hello hadoop world!\n".getBytes(); 
11.        Path dfs=new Path("/test"); 
12.        FSDataOutputStream outputStream=hdfs.create(dfs); 
13.        outputStream.write(buff,0,buff.length); 
14.    } 
15.
创建HDFS目录
通过"FileSystem.mkdirs(Path f)"可在HDFS上创建文件夹,其中f为文件夹的完整路径。具体实现如下:
1. package com.hebut.dir; 
2. import org.apache.hadoop.conf.Configuration; 
3. import org.apache.hadoop.fs.FileSystem; 
4. import org.apache.hadoop.fs.Path; 
5. public class CreateDir { 
6.    public static void main(String[] args) throws Exception{ 
7.        Configuration conf=new Configuration(); 
8.        FileSystem hdfs=FileSystem.get(conf); 
9.        Path dfs=new Path("/TestPath"); 
10.               hdfs.mkdirs(dfs); 
11.    } 
12.
删除HDFS上的文件
通过"FileSystem.delete(Path f,Boolean recursive)"可删除指定的HDFS文件,其中f为需要删除文件的完整路径,recuresive用来确定是否进行递归删除。具体实现如下:
1. package com.hebut.file; 
2. import org.apache.hadoop.conf.Configuration; 
3. import org.apache.hadoop.fs.FileSystem; 
4. import org.apache.hadoop.fs.Path; 
5. public class DeleteFile { 
6.    public static void main(String[] args) throws Exception { 
7.        Configuration conf=new Configuration(); 
8.        FileSystem hdfs=FileSystem.get(conf); 
9.        Path delef=new Path("/test1"); 
10.        //递归删除 
11.        boolean isDeleted=hdfs.delete(delef,true); 
12.        System.out.println("Delete?"+isDeleted); 
13.    } 
14.
查看某个HDFS文件是否存在
通过"FileSystem.exists(Path f)"可查看指定HDFS文件是否存在,其中f为文件的完整路径。具体实现如下:
1. package com.hebut.file; 
2. import org.apache.hadoop.conf.Configuration; 
3. import org.apache.hadoop.fs.FileSystem; 
4. import org.apache.hadoop.fs.Path; 
5. public class CheckFile { 
6.    public static void main(String[] args) throws Exception { 
7.        Configuration conf=new Configuration(); 
8.        FileSystem hdfs=FileSystem.get(conf); 
9.        Path findf=new Path("/test1"); 
10.        boolean isExists=hdfs.exists(findf); 
11.        System.out.println("Exist?"+isExists); 
12.    } 
13.
5.3  系统部分功能实现
目前智能移动终端设计的操作系统基本被安卓与iOS垄断,市场上移动应用开发主要有以下三种模式:
(1)原生应用程序开发:原生应用程序的主要优点是其用户体验更好、系统性能更佳,但缺点是应用程序无法跨平台运行,需要针对不同的平台分别开发,系统开发及维护成本高。
(2)HTML5应用程序:HTML5应用开发主要使用HTML、CSS以及JavaScript等统一Web开发技术,通过HTML5编写的应用程序可在不同的系统平台下运行,且能根据屏幕的尺寸自动调整系统页面大小及样式。但基于HTML5开发的应用程序也存在很多缺点,如会话管理、安全离线存储等一些局限性,同时也无法访问移动设备上的原生部件,因此在应用灵活性及用户体验方面很难与原生应用程序媲美。
(3)混合应用程序:混合应用程序是将HTML5与原生应用程序开发相结合,充分利用两者的优点来开发移动应用。主要实现方式是通过原来应用程序来开发一个容器,然后把HTML5应用程序嵌入。
综上所述,本课题研究的移动端应用在选择开发模式时充分考虑了应用程序的运行效率、适用范围及后期维护成本等因素,最终确定采用混合模式开发,并完成在安卓(Andriod)平台上构建移动电子商城应用。移动客户端通过浏览器访html5应用服务器,html5应用服务层通过java http协议(根据商城接口封装好公共的post请求方法和get请求方法以及公共的返回参数类)或者httpClient的API请求访问国网商城接口服务器,接口服务器将数据返回给html5应用服务器,html5应用服务器将接收到的数据返回给html5展现层,最后通过html5页面展现数据。
以下将以系统首页、用户注册登录、商品、下单等主要功能流程为例说明系统的具体实现。
5.3.1 商城首页
打开移动商城,首先进入的是移动商城的首页。商城首页采用Html5开发,通过WebView将Html5页面集成到App中,并通过WebView 实现JS和Java相互调用。
以下代码为是在Android中暴露接口供JS调用:
//在Android代码中启用js支持
testWebView.getSettings().setJavaScriptEnabled(true);
//在WebWiew中增加js接口,并定义接口名
testWebView.addJavascriptInterface(this, "testYdsc");
//加载Html5页面
testWebView.loadUrl("file:///assets/testIndex.html");
//通过以下注解将接口暴露给js
@JavascriptInterface
public void toast(String s) {
Toast.makeText(SafeJSActivity.this, s+"", Toast.LENGTH_SHORT).show();
}
移动商城广告轮播功能的实现是在html文档使用DIV标签定义广告图片显示的样式及位置,并在页面中引用jQuery库的插件,代码如下:
<script type="text/javascript" src="jQuery.js"></script>
使用以下代码实现广轮播效果:
1. <script type="text/javascript">
2. $(function(){
3.  var i=0;
4.  var len=$("#scroll ul li").length-1;
5.  //点击上一张的效果代码
6.  $(".btnLeft").click(function(){
7.     if(i==len){ i=-1;}
8.     i++;
9.     $("#scroll ul li").eq(i).fadeIn().siblings().hide();
10.  });
11.  //点击下一张的效果代码.
12.  $(".btnRight").click(function(){   //获取类名的点击事件.
13.    if(i==0){  i=len+1; }
14.    i--;
15.    $("#scroll ul li").eq(i).fadeIn().siblings().hide();
16.  });
17. });
18. </script>
 
 
图5-3移动商城首页
Figure 5-3 mobile mall home
移动商城首页中的其它功能如主要频道、搜索、促销活动、优选店铺等实现主是通过点击相关图片链接打开详细页面进行浏览和操作,如点击智能家居频道中的商品图片,系统直接进入商品的详情页面,方便用户查看和购买。
移动商城App的下方设置了快捷按键,方便用户快速打开常用的功能界面,主要包括:
(1) 首页:方便用户快速返回移动商城App的首页。
(2) 分类:直接打开移动商城的商品分类导航界面,方便用户根据分类快速查询想要购买的商品。
(3) 购物车:直接进入用户的购物车窗口,方便用户进行购物车商品修改、下单结算等操作。
(4) 我的:方便用户快速打开“我的商城”页面,能够查看用户的详细信息,详细说明参见5.3.2.2我的商城。
5.3.2 会员中心
5.3.2.1 用户登录
登录模块是商城的最基本功能之一,登录以后,商城系统可以识别用户是否具有权限进行某些操作,登录的主要功能是检验用户信息是否存在、建立会员token,以及登录需要进行的其他操作。
 
图5-4  用户登录
Figure 5-4 User login
 
通过移动端应用程序获取用户输入的帐号、密码,并判断是否为空。
1. private EditText login_name, login_password;
2. login_name = (EditText) findViewById(R.id.login_name);//用户名
3. login_password = (EditText) findViewById(R.id.login_password);//密码
4. if(TextUtils.isEmpty(login_name.getText().toString()))
5. {
6. toast("请输入账号");
7. return;
8. }
9. else if(TextUtils.isEmpty(login_password.getText().toString()))
10. {
11. toast("请输入密码");
12. return;
13. }
 
采用HTTPS加数字证书的方式加密传输数据,保证数据传输的安全性。接口调用采用用户名、密码、IP限制的方式认证接口调用客户端。关键数据采用MD5算法进行二次加密,保证关键数据传输的安全性。主要实现代码如下:
1. String username = login_name.getText().toString();
2. LoginInfo info = new LoginInfo();
3. info.setUname(username);
4. // 加密用户名和密码
5. String pwd = MD5.getMD5(login_password.getText().toString()).toUpperCase();
6. pwd=new String(com.squareup.okhttp.internal.Base64.encode(pwd.getBytes()));
7. info.setPwd(pwd);
提交服务器进行用户帐号、密码验证,并根据服务器返回值确认用户身份及帐号状态。
5.3.2.2 用户注册
为确保用户在移动商城能够快速完成注册,只需在注册时填入帐户名、密码、确认密码以及验证码,便可完成帐户注册。用户的其他信息可以登录系统后根据实际需要在会员中心完善。
 
图5-5  新用户注册
Figure 5-5  New user registration
 
新用户注册时,系统功能实现过程如下:
(1) 首先检查新用户注册时帐户名、密码、验证码是否为空;
(2) 通过正则表达式对帐户名、密码输入的合法性进行检测,如密码合法性校验的正则表达式为: /^[a-zA_Z0-9]\{\1,\}{8,20}$/;
(3) 检查设置密码与确认密码输入是否一致,不一致则提示“两次密码输入不一致”;
(4) 调用系统后台接口检查用户名的唯一性,如果帐户已经存在则提示“用户名已存在”;
(5) 验证码的正确性检查,如验证码校验失败则提示用户“验证码错误或已失效”,用户可通过点击验证码进行刷新后重新输入;
(6) 如上述校验通过则完成注册,系统提醒“注册成功”后自动登录商城。
5.3.2.2 我的商城
“我的商城”是移动商城会员信息集中展现与维护功能页面,用户通过“我的商城”可以查看用户查看关注过的商品、店铺信息;可以按状态查看订单的总体情况,能够打开订单了解订单的详细信息;也可查看用户的积分、评价、等级等;并可以维护用户的常用地址,修改用户的密码等。
 
图5-6  我的商城界面
Figure 5-6  My mall window
5.3.3 购物车
通过点击移动商城页面下方的购物车图标打开购物车页面,在购物车页面中可以查看已加入的商品,并可修改购物车商品的数量等信息。
 
图5-7  移动商城购物车结算及修改界面
Figure 5-7  Mobile mall shopping cart settlement and modification
 
具体实现功能如下:
(1) 商品数量修改:点击购物车中商品右下方的“+”、“-”来增加、减少商品数量;
(2) 编辑商品:点击购物车右上角的“编辑”,使购物车进入编辑状态,屏幕下方的合计、运费等信息隐藏,去结算按键变更为“删除”,用户可通过复选商品点击“删除”,将商品从购物车中删除。
(3) 价格计算功能:通过在购物车复选要下单的商品,系统自动计划商品总价及运费。
(4) 结算:在购物车中选择好要购买的商品,点击屏幕右下解的“去结算”按键,系统自动进入下单界面。
(5) 商品状态显示:系统根据购物车的商品的库存等信息,自动提醒用户当前商品的状态,如“无库存”、“商品已下架”等。
5.3.4 订单
用户在购物车中选定要购买的商品后点击右下角的“去结算”按键,移动商城打开“确认订单”界面。
 
图5-8  移动商城确认订单页面
Figure 5-8  Mobile mall confirmed order page
“确认订单”主要实现用户的收货(包括收货人、地址、联系电话等)、支付、配送、发票等信息的维护,系统根据用户的选择自动进行运费及付款金额的计算。确认无误后用户点击右下角的“提交订单”按键进入付款页面。
5.3.5 商品模块
在移动商城中商品主要通过商品列表及商品详情页来展现,可在移动商城首页,通过页面上方的搜索框输入要购买商品的关键字或按页面最下方的分类进行查询,系统会将搜索到的商品以列表方式展现给用户(如下图所示)。实现的方式是移动商城通过web程序中直接调用URL来访问Solr服务器查询数据,并以列表形式展现给用户,同时显示商品的名称、规格型号、价格及参与的活动价格、库存数据等数据。
点击商品列表中的商品,打开商品详情面,具体实现如下:
(1) 商品展示:详情页面上面以轮播形式展现商品的图片,点击图片可以放大进行全屏浏览。
(2) 商品详细参数:单击商品名称及规格型号,可以查看商品的详细参数。
(3) 商品价格及数据:展示商品的当前价格以及历史价格,并提醒用户目前库存的数量。
(4) 促销活动:展示该商品目前参与的各项促销活动信息。
(5) 规格:当商品存在不同颜色、不同配置时,用户可根据实际需求选择相关规格。
(6) 配送信息:根据当前用户设置的默认配送地点计算运费,并显示商品的发货方及售后服务方。
(7) 商品评价:统计商品历史成交及好评情况,点击可查看详细的评价信息。
(8) 商品推荐:根据用户选择的商品系统自动推荐用户可能喜欢的其它商品,主要根据商城的历史成交数据以及商品的品类相关性向用户推荐。
(9) 收藏:用户单击“收藏”按键来收藏当前商品,收藏的商品可以“我的商城”中查看。
(10) 立即购买:单击立即购买系统将自动进入“确认订单”页面。
(11) 加入购物车:单击此按键可将当前商品直接加入用户的购物车中,可供用户集中下单购买。
 
图5-9  商品列表及商品详情页
Figure 5-9  List of commodities and commodity details page
5.4  系统测试
5.4.1 测试目的
通过测试验证系统是否符合业务需求和前期设计成果,验证系统是否安全、可靠并且能够满足性能等方面的要求,是否易于使用。通过测试及时发现系统可能存在的缺陷,提高移动商城系统上线后的稳定性及可靠性,具有更高的可用性,为项目顺利实施奠定基础。
5.4.2 测试策略
5.4.2.1  测试方法
(1)功能测试
功能测试采用黑盒测试方法,依据概要设计、UE设计、详细设计编写测试用例,并按照测试用例执行业务功能测试。
功能测试由测试人员执行。测试过程中发现缺陷,测试人员通过指定的工具登记缺陷并进行跟踪。开发人员按照要求修改缺陷并进行反馈。测试管理人员每天、每周发布测试报告,项目组内部通告测试情况。
(2)集成测试
集成测试采黑盒测试方法,根据软件需求规格说明书、系统概要设计来编写集成测试用例。测试人员、需求提报人员根据测试用例进行系统测试,并通过指定的工具登记发现的缺陷并进行跟踪直到消缺完成。开发人员按照要求修改缺陷并进行反馈。测试管理人员每天、每周发布测试报告,项目组内部通告测试情况。
(3)性能测试
采用性能测试工具模拟用户使用业务功能,并收集应用性能指标数据(响应时间、每秒处理事务数、事务成功率)、服务器性能指标(CPU使用、内存使用、磁盘IO使用)。
5.4.2.2  评价准则
(1)功能性测试评价准则
系统功能缺陷修复率应达到100%。
(2)性能测试准则
达到或高于非功能需求中性能要求的标准。
(3)安全测试评价准则
符合前期设计成果中关于系统安全的要求。
5.4.3 测试流程
 
图5-10 系统测试流程
Figure 5-10 System test procedure
【测试流程说明】:
(1)测试申请
开发组提交测试组之前,应已经通过单元测试。
开发组必须向测试组提交软件测试申请单,其中包含本次测试版本功能范围。
测试组在接收到开发组提交的本次测试版本功能范围后,和开发组测试申请人沟通测试相关事宜。
(2)制定测试计划或方案
测试组可根据开发组提供的《软件测试申请单》、《系统需求规格说明书》、《系统概要设计说明书》、《系统详细设计说明书》、《系统安装部署手册》、《用户操作手册》以及其他必要资料并在开发组的配合下完成测试计划或方案的制定,测试方案须经过项目经理或项目总监确认。
测试双方须严格按照测试计划或方案规定的计划和内容执行测试,在测试过程中需要对测试内容进行变更,须双方共同确认。
(3)测试环境准备
测试环境由测试组和开发组按照测试计划或方案中的要求共同搭建。
测试环境须由双方共同确认,配置信息经双方确认后作为测试报告中的内容。
(4)冒烟测试
测试组在测试环境搭建完成后,在开发组的配合下,对系统的基本功能进行冒烟测试,重点检查编译和部署是否正常、修复的缺陷功能是否正常、受影响的功能是否正常、系统主干功能是否正常等。冒烟测试通过后,方可开始设计测试用例,否则本次测试终止。
(5)测试实施
在开发组、需求组、业务组的配合下,测试组参考《系统需求规格说明书》、《软件测试申请单》等资料编写、完善测试用例,测试用例须全部覆盖测试计划或方案中的测试内容,测试用例经过需求组、开发组、测试组确认通过后,作为测试执行的依据;
在开发组的配合下,测试组按照测试计划或方案规定的时间执行测试用例;
测试组按照轮次进行测试,每轮测试期间禁止开发组变更系统测试版本或测试环境;
开发组在测试组测试期间须按照测试计划或方案中要求指派必要的技术支持人员协助测试,并及时跟踪解决发现的问题;
测试组配合开发组解决缺陷并进行回归测试。
(6)编写测试报告
测试组在测试工作结束完成测试报告编写,测试报告中须按照实际结果给出测试总体结论,并按照测试类别分别对功能、性能、安全给出测试结论;测试报告作为软件发布的必要条件。
5.4.4 测试过程
表5-7 各阶段测试的采用技术及方法
Table 5-7 using techniques and methods for each phase of the test
测试阶段 测试技术 测试类型及方法
单元测试 采用白盒测试技术 代码测试:采用单元测试工具
集成测试 采用黑盒测试技术 黑盒测试用例的设计涵盖概要设计的所有接口(包含与第三方系统集成)
系统测试 采用黑盒测试技术 主要对系统功能、性能、安全进行测试,功能测试用例覆盖软件需求规格说明书中的所有功能点。性能测试场景依据软件需求规格说明书中非功能需求。安全测试依据软件需求规格说明书中安全需求指标进行,主要采用黑盒/渗透测试。
5.4.5 测试缺陷管理流程
 
图5-11 测试缺陷管理流程
Figure 5-11 test defect management process
 
(1)测试人员在测试过程中发现缺陷后,需及时登记并提交缺陷(状态为New)给系统开发组组长。
(2)开发组长查看测试人员提交的缺陷并进行确认,对于确认的确是缺陷的,将缺陷状态改为Open,并分派给开发人员进行修复;对确认不是缺陷的,将缺陷状态由New改为Rejected。
(3)开发人员查看开发组长分派给自己需要修复的缺陷(状态为Open),开发人员确认的确是缺陷,则进行修复,修复完成后将该缺陷状态改为Fixed;对于开发人员确认是缺陷的,但是暂时不做修改,计划延期修改,则添加说明并将缺陷状态由Open改为Deferred。
(4)测试人员查询到状态为Fixed的缺陷记录后对相关应用功能进行回归测试,如果测试通过则将缺陷状态改为Closed,如果缺陷仍然存在,则将状态改为Reopen,由开发人员继续修复,直到修复通过。
(5)测试人员查看状态为Rejected的缺陷,并根据添加的注释确定的确不是缺陷,则关闭,缺陷状态由Rejected改为Closed,如果再次确认属于缺陷,则将状态改为Open。
(6)测试人员查看状态为Deffered的缺陷,并根据添加的注释确定该缺陷暂时不影响系统核心功能,可以延期下个版本修复,则待下个版本开发人员修复后再进行回归测试。
5.4.6 测试结果分析
移动电子商城系统完成系统开发及部署工作,并根据系统设计从业务需求符合度、功能完整性、系统性能、安全性等四个方面开展测试工作,完成移动商城的营销管理、客服管理、销售管理、运营统计、用户社区、系统管理、财务结算管理以及公共技术组件的核心功能、性能以及完全性测试,测试结果如下:
(1)业务流程及功能符合业务需求设计中所规定的系统功能的需求目标,满足移动电子商城的注册、登录、搜索商品、购物车、下单、结算等相关设计要求,相关系统功能均已按照建设要求实现。
(2)移动商城系统用户体验良好,界面美观、操作简单、业务流畅,不需培训用户便可快速掌握系统操作,完成注册、登录、搜索商品以及下单结算等核心业务流程。
(3)移动电子商城系统性能稳定,系统部署采用负载均衡等技术,单个站点故障不影响系统访问,并通过系统压力测试。其中部分核心功能压力测试结果如下:用户登录1000并发时平均响应时间0.84秒;商品搜索1000并发时平均响应时间1.36秒;提交订单1000并发时平均响应时间1.597秒;秒杀2000并发时平均响应时间为1.063秒。综上,移动电子商城系统满足系统的性能及稳定性建设要求。
(4)移动电子商城系统通过了安全功能、代码扫描以及渗透测试等安全测试工作,系统的身份鉴别、访问控制、安全审计、数据完整性及保密性等满足系统安全设计要求。
综上所述,移动电子商城系统满足设计要求,达到了系统建设初期设定的建设目标。
5.5  系统部署
电子商城系统部署架构设计需考虑移动商城未来业务规模,也要考虑电商基础技术平台以及应用系统的可扩展性,以便快速适应未来业务及用户高速增长的需求,让系统具有良好的用户体验。电子商城系统物理部署视图如下:
 
图5-12 移动商城部署架构图
Figure 5-12 Mobile mall deployment framework
5.6  系统发布及版本管理
系统发布及版本管理流程:
图5-13 系统发布及版本管理流程
Figure 5-13 system release and version management process
 
具体介绍如下:
(1)在第一次封版,版本发布上线时,确保主干稳定,同时将主干(trunk)关闭除了配置管理员以外所有人员的权限,配置管理员在主干基础上,建立开发分支;
(2)如果在生产环境发现必须要紧急修复的Bug,者从主干建立一条基于最新主干版本的Bug修复分支,Bug的修复在Bug修复分支上完成,如果测试通过后,合并到主干后建立Tag
(3)基于主干的Bug修复完成后,将修复内容合并到主干和开发分支中;因此此处Bug修复合并到开发分支需要及时处理。
(4)此处是按照版本发布计划,将已经开发完成且需要发布的新功能,合并到稳定的测试分支中,因为此处的合并属于选择性合并,仅仅合并此处解决的问题和此次需要发布的新功能部分,因此此次合并要求,开发经理、各开发小组长和配置管理人员共同参与开展,保证合并的正确性。
(5)在测试环境测试无误后,将测试分支合并到主干,建立Tag,并发布到准生产和生产环境。
根据系统建设的实际情况,整个系统的业务功能开发采用稳定主干发布策略为主。具体操作策略如下:
(1)trunk需要长期保留一个能够稳定运行的系统版本。同时严格控制trunk的操作权限,除配置管理员以外都不能修改。
(2)新功能开发在每次上线发布后,在主干上重新建立基线release版本,并以此主干为基础定义下一应用程序发布周期的测试分支。
(3)开发人员完成所在项目的分支的开发工作后提交测试,在通过集成测试后提交上线申请,配置管理员根据系统版本发布计划将分支提交的代码合并到对应的测试分支,并提交测试。配置管理员通过上述操作以及合并后测试情况,能够快速发现系统版本间可能存在的冲突,并及时与开发人员沟通,排查并解决存在的问题。
(4)测试人员完成本发布周期测试分支所有版本发布计划的功能测试后,由配置管理人员将本发布周期的测试分支合并到主干,并通过打tag来release 一个上线版本。
(5)配置管理员从分支中导出完整的发布版本,同时生成新的md5校验码与发布版本打包到一起,在系统发布时通过md5校验码来验证部署包的正确性,同时将生产系统中的上一版本部署包备份,然后执行生产系统的部署工作,最后通过冒烟测试来验证生产系统发布的情况。
5.7  本章小结
本章首先介绍了基于互联网架构移动商城的开发及运行环境要求,其次详细描述了系统所使用关键技术的实现原理及实现过程,并对系统的测试目的、测试策略、测试过程、测试流程、缺陷管理流程以及测试结果进行具体说明,最后针对系统的部署、发布以及版本管理等过程阐述。
 
 
结    论
随着国家“互联网+”行动计划的推进,互联网给社会产业结构带来的冲击越来越大,传统企业纷纷踏进互联网来寻找新的生机。移动智能终端设备作为互联网业务的关键入口之一,凭借着个人电脑无法比拟的优势得到了空前的发展。而移动电子商务也随着3G/4G网络、无线Wifi以及智能手机的普及,成为电子商务市场中最具影响力的一个分支。通过本课题研究,实现一套基于分布式互联网架构的移动商城系统架构,打造适合时代技术发展需要的移动商城产品。
基于分布式互联网架构的移动电子商城应用研究课题自启动以下,经历了市场调研、需求分析、技术验证、系统设计、功能开发、测试及部署实施等过程,系统各方面功能稳定、性能良好,达到课题启动时设定的目标。取得的具体成果说明如下:
(1) 通过对电子商务系统所采用的技术研究,课题组掌握了分布式文件系统、分布式缓存、搜索引擎等目前主流互联网技术的工作原理,并成功应用于本课题研究的移动电子商城系统;
(2) 通过市场调研与业务需求分析,完成移动电子商城系统的业务需求分析、功能及非功能需求分析,课题组掌握了移动电子商城系统核心业务流程以及业务场景,为系统设计打下坚实的基础;
(3) 搭建了一套完整的移动电子商城系统架构,并在些架构上完成移动商城核心应用的开发与部署;
(4) 完成了基于安卓(Andriod)系统的HTML5前台应用开发,实现了移动商城的登录、搜索、购物车、下单以及会员中心等核心功能。
 
 
参 考 文 献
[1] 中国互联网络信息中心.第37次中国互联网络发展状况统计报告[R].北京:中国互联网络信息中心,2016.
[2] 薛晓青, 王明宇. 移动电子商务发展的机遇与挑战研究[J]. 电子商务, 2016(3). 
[3] 董环婕. 我国移动电子商务发展现状研究[J]. 商, 2016(2).
[4] Zhang C, Jin W, Jin Y F. Application Research of Mobile E-commerce Based on Web Data Mining[J]. Value Engineering, 2015.
[5] Elvander A. Developing a Recommender System for a Mobile E-commerce Application[J]. 2015.
[6] Chen Shangyi, Jiang Xiaolin, Qin Weijun. Practices on Intelligent Mobile E-commerce[J]. Information & Communications Technologies, 2015.
[7] Yuan X. Research on the Characteristics of Mobile E-commerce in the Era of Big Data[J]. Science Mosaic, 2015.
[8] Shao Y, Liu B S. Analysis of Value Chain of We-chat Mobile E-commerce Model[J]. Science & Technology & Economy, 2015.
[9] Wächter M. Mobile Commerce[M]// Mobile Strategy. 2016.
[10] 孟娟娜. 基于Android平台的移动电子商务系统设计与实现[J]. 电子设计工程, 2016, 24(8).
[11] 周怡. 移动电子商务客户端的用户界面设计研究[J]. 湖南邮电职业技术学院学报, 2016(1).
[12] ZHOU Yi. Mobile e-commerce client UI design research[J]. Journal of Hunan Post and Telecommunication College, 2016.
[13] 黄玉春. 浅谈下一代Web开发标准的核心技术—HTML5[J]. 计算机时代, 2015(4):3-5.
[14] 程君. HTML5技术在移动终端的应用研究[J]. 科学导报, 2015(22).
[15] 张增波. 基于HTML5的移动智能应用终端新特性分析与研究[J]. 信息安全与技术, 2015, 6(5):91-93.
[16] 王澎涛. 基于HTML5的跨移动终端平台信息推送系统的设计与实现[D]. 北京邮电大学, 2015.
[17] 张玉晴, 黄瑾娉. 基于HTML5的跨平台移动应用关键技术的研究与实现[J]. 工业控制计算机, 2013, 26(3):56-58.
[18] 凯瑞恩. HTML5移动应用开发入门经典[M]. 人民邮电出版社, 2013.
[19] 曾远柔. 搜索引擎客户端的智能化与个性化设计[J]. 电子技术与软件工程, 2016(7).
[20] 李倩. 搜索引擎技术分析与研究[J]. 信息与电脑:理论版, 2015(21):117-118.
[21] 柏雪. 基于Hadoop的分布式搜索引擎设计与实现[J]. 图书馆学刊, 2016(2).
[22] 罗忠琦. Java技术的搜索引擎研究与实现[J]. 信息通信, 2016(1):144-145.
[23] 赵璞, 朱志祥, 张康益. 高性能分布式搜索引擎Solr的研究与实现[J]. 电子科技, 2015, 28(4):73-75.
[24] 张新生. 基于Solr的分布式搜索引擎研究[D]. 华中科技大学, 2012.
[25] Terui F, Hamada S. Search engine, search system, search method, and search program product: US, US8930372[P]. 2015.
[26] Paiz R. Search engine optimizer: US, US8977621[P]. 2015.
[27] Cruz-Guzmán M. A Distributed Search Engine Design[C]// II Jornadas de Docencia Universitaria. 2015.
[28] Wang F, Wei F, Liu Y, et al. Application of Open Source Search Engine Solr to Build Standards Information Management and Analysis Platform[J]. New Technology of Library & Information Service, 2014, 8(2).
[29] Huo Q, Liu P Z. Use Solr to Build a Search Engine for Large Database[J]. Computer Engineering & Software, 2011.
[30] Fu W, Li R, Liu Y, et al. Study and Implementation of Distributed Real-Time Search Engine Model Based on Solr[J]. Telecommunications Science, 2011.
[31] Vohra D. Using Apache Solr[M]// Pro Docker. Apress, 2016.
[32] 刘忠新, 张海明, 黎建辉. 分布式文件系统在线性能测试平台研究与实现[J]. 科研信息化技术与应用, 2015(2).
[33] 孙知信, 谢怡, 宫婧. 一种基于Hadoop分布式文件系统的三级缓存方法:, CN104270412A[P]. 2015.
[34] 黎斌. 基于HDFS的分布式文件系统存储研究与优化[D]. 电子科技大学, 2015.
[35] 谢莉祥. 分布式文件系统现状探讨研究[J]. 文摘版:自然科学, 2015(4):238-238.
[36] 肖玉泽, 张利军, 潘巍,等. HDFS下海量小文件高效存储与索引方法[J]. 小型微型计算机系统, 2015, 36(10):2218-2223.
[37] 邹振宇, 郑烇, 王嵩,等. 基于HDFS的云存储系统小文件优化方案[J]. 计算机工程, 2016(3).
[38] 陈明顺. 分布式文件系统HDFS快照技术的研究与实现[D]. 东南大学, 2013.
[39] Takemoto T. Distributed file system:, US8943022[P]. 2015.
[40] Lee J, Ki Y S. HETEROGENEOUS DISTRIBUTED FILE SYSTEM USING DIFFERENT TYPES OF STORAGE MEDIUMS:, US20150347451[P]. 2015.
[41] Kim Y, Araragi T, Nakamura J, et al. A Distributed and Cooperative NameNode Cluster for a Highly-Available Hadoop Distributed File System[J]. Ieice Transactions on Information & Systems, 2015, 98(4):835-851.
[42] An-ping Xiong, Jin-yong Ma. HDFS distributed metadata management research[C]// International Conference on Applied Science and Engineering Innovation. 2015.
[43] Patel, A, Mehta, M.A. A novel approach for efficient handling of small files in HDFS[C]// Advance Computing Conference. IEEE, 2015.
[44] Chaturvedi S, Bhirud N, Lowden F. Solving Big Data Problem using Hadoop File System(HDFS)[J]. 2015.
[45] 王胜, 杨超, 崔蔚,等. 基于MongoDB的分布式缓存[J]. 计算机系统应用, 2016(4).
[46] 梁晓杰, 王绍宇. 基于Hadoop分布式缓存的研究与实践[J]. 智能计算机与应用, 2015, 5(6):29-32.
[47] 苏振华. 基于分布式缓存的高性能电子商务商品后台系统的设计与实现[D]. 华南理工大学, 2015.
[48] 崔解宾. 分布式内存缓存技术在数据处理平台中的研究与应用[D]. 北京邮电大学, 2015.
[49] 付建俐. 分布式缓存技术选型探究[J]. 中国传媒科技, 2014(5).
[50] 陈怀亮. 分布式数据缓存技术的研究与应用[D]. 大连理工大学, 2011.
[51] 白鑫. 基于Redis的信息存储优化技术研究与应用[D]. 北方工业大学, 2014.
[52] 刘高军, 王帝澳. 基于Redis的海量小文件分布式存储方法研究[J]. 计算机工程与科学, 2013, 35(10):58-64.
[53] 邱祝文. 基于redis的分布式缓存系统架构研究[J]. 网络安全技术与应用, 2014(10):52-52.
[54] Athalye, Pranav, Sudhakaran, Srinivas. DISTRIBUTED CACHE FRAMEWORK:, US20160110284[P]. 2016.
[55] Han X, Liu K, Zhao P, et al. Distributed Cache System:, US20150189033[P]. 2015.
[56] Fergus R K. Distributed Cache[M]. SpellPress, 2012.
[57] Cache U D. Using the Distributed Cache[J]. Pro Hadoop.
[58] 宋涛, 王洪鑫, 徐庆增. J2EE平台标准下的SPRING 3.0轻量级框架技术概述[J]. 通讯世界, 2015(23):306-307.
[59] 柳奎奎. Spring MVC架构在淘日网系统中的优化与应用[D]. 东华大学, 2014.
[60] 张玲. 基于EJB及SPRING技术的B2B电子商务平台的设计与实现[D]. 东北大学, 2012.