1. 绪论
1.1. 课题的研究背景
湛江海田物流产业园是湛江市深入贯彻对赤坎的产业定位和实施“三产兴区”发展战略的创新举措,也是赤坎区发展第三产业和经济发展扩容提质的主要载体。
湛江海田物流产业园位于赤坎区东北部的海田片区,紧靠城市主干道,海、陆、空交通运输齐全、便利。目前,产业园内的商贸物流已具有相当规模,成为粤西最大的商贸物流聚集区,形成了建材、汽车、水产三大支柱产业等18个专业市场,拥有3700家各类大型商户,2015整个湛江海田物流产业园的年产值达110亿元人民币。经过充分的市场调研及与湛江市政府和海田物流产业园管委会的座谈,我们发现在当前“互联网+”概念的冲击下,湛江海田物流产业园的各类经营仍处于非常传统的商业运营,整个产业园综合管理效能不高,亟待产业的转型升级,尤其是要引入现代的互联网思维,实现线下向线上转型升级。
1.2. 研究目的及意义
伴随着区域经济一体化格局的逐步深化,区域与区域之间的经济交流更为密切,物流产业的发展直接催生不同地区之间一系列的商品交易,而我国当前很多的物流产业园区建设尚且处于一个逐步发展的传统阶段。物流业的布局及物流成本的高低,很大程度上制约着现代商贸企业的发展。因此,我们应优化物流产业园的产业发展环境,引入现代信息技术实现资源与功能的集聚效应,实现传统物流业的转型升级,使之搭上“互联网+”的快车,让物流发展更加“智慧化”和“智能化” [1] 。
本文的研究内容,使用面向对象编程的思想,通过UML建模 [2] 结合功能思维导图,基于SSM三大框架的整合思路 [3] 实现海田在线商城的设计与实现。
2. 需求分析
软件需求分析是系统必须完成的事,以及必须具备的品质,具体来说,需求分析包括功能性需求、非功能性需求和设计约束三个方面。软件需求分析的准确性对于海田在线商城实现的质量有着决定性的作用,也是开发团队的指南针。本文的需求分析采用的是统一建模语言(UML)中的用例图来展示用户的需求,描述用户和系统如何协作的功能和非功能性需求。用思维导图来描述海田在线商城核心子系统的功能需求。
2.1. 用户需求
用户的难题就是我们的课题。海田在线商城的实现旨在创建一个海田物流产业园区线上服务闭环,形成一个安全可靠、方便易用的多点互通的电子商务交易平台。实现大众客户、企业客户、会员可以在商城上搜索商品,浏览商品,交易商品等;供应商、厂商、零售商、品牌直营店可以在上平台发布商品、管理、售卖或者交易商品等;湛江海田物流产业园管委会、系统管理员等都能在平台上操作、管理的一个线上产业园平台,同时保证系统正常运行。
2.1.1. 用户需求分析
在项目的初始阶段,举办了项目成员对于海田在线商城用户需求的讨论会,根据目前整个互联网的发展趋向,初步确定了以下几个方面。
1、功能齐全的商品展现平台和仓库管理系统;
2、灵活的订单处理机制;
3、支持多选的线上支付的功能及可选快递服务(特殊商品同城配送服务);
4、提供活动窗口,广告投放窗口,vr店铺展窗口;
5、基于平台各类数据的分析为普通用户提供商铺推荐;
6、完善的管理功能,按照不同性质的用户进行权限分配;
7、开放的平台投资窗口。
2.1.2. 用例图
在需求分析初始阶段,为了明确项目的目标及参与者,更好的与项目干系人进行沟通,我们以用例图的形式来描述用例和参与者及其之间的关系。用例图提供了可视的语境图,明确的阐述外部参与者及其对系统的使用;同时,展示了系统的边界、位于边界之外的事物以及系统如何别使用;作为沟通的工具,概括了系统的全貌、系统以及参与者的行为。系统用例图如 图1和 图2所示。
用例定义了参与者与海田在线商城平台之间的关系,用户需求由系统来完成实现,前端系统则主要针对大众用户和会员用户,后台系统则对系统管理员和商城后台操作员开放。
2.2. 功能需求
2.2.1. 功能架构图
如 图3所示,海田在线商城主要由前台12个基本功能和后台12个主要功能系统组成,完成电商平台的基本用户需求。
2.2.2. 主要功能开发思维导图( 图4~ 图8)
思维导图是一种将思维形象化的方法。思维导图在海田在线商城的开发中能引导整个项目的开发不偏离方向。
![](//html.hanspub.org/file/12-2690292x9_hanspub.png)
Figure 1. Use case diagram of foreground system
图1. 前台系统用例图
![](//html.hanspub.org/file/12-2690292x10_hanspub.png)
Figure 2. Use case diagram of background system
图2. 后台系统用例图
![](//html.hanspub.org/file/12-2690292x11_hanspub.png)
Figure 3. Functional architecture diagram of Haitian Online store
图3. 海田在线商城功能架构图
![](//html.hanspub.org/file/12-2690292x12_hanspub.png)
Figure 4. The mind map of store system
图4. 店铺系统思维导图
![](//html.hanspub.org/file/12-2690292x13_hanspub.png)
Figure 5. The mind map of store setting
图5. 店铺设置思维导图
3. 海田在线商城的设计与实现
由于移动互联网的兴起,海田在线商城需要满足PC端、PAD和智能手机端的跨屏兼容;满足海田物流产业园18个专业市场实现商品的线上管理、线上销售、在线支付等。系统架构图体现的是整个系统的层次性和技术体现,系统架构图见 图9。
如 图9所示,海田商城采用基于B/S的三层体系架构模式,并利用Dubbo分布式架构,将系统把模块拆分并使用接口通信,降低模块之间的耦合度。可拓展性和分布式部署都相对与传统架构来的灵活。
3.1. 开发技术
3.1.1. Dubbo分布式解决多用户高并发问题
Dubbo是阿里巴巴开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合。透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需要简单API侵入。架构如 图10所示。
海田在线商城的开发过程中存在这种情况,服务提供方(Provider)发布服务以后,服务消费方(Consumer)发出一次调用请求,恰好这次由于网络问题调用失败,虽然可以采用重试这种策略,但是存在发布服务所在节点出现故障无法提供服务。所以我们搭建Dubbo集群解决了多用户同时访问网站某一个服务容易发生冲突的问题,在出现节点故障无法提供服务的时候,通过调用其它服务节点来解决,这就提高了服务的可用性。
3.1.2. Solr集群实现商品快速搜索
Solr是基于Lucene的全文搜索服务器,同时对其进行了扩展,提供了比Lucene更为丰富的查询语言同时实现了可配置、可扩展并且优化了查询性能。SolrCloud是Solr提供的分布式搜索方案,原理是由多台Solr服务器集中部署,共同来完成搜索和所索引库的任务。使用Solr集群的方式能更好的解决海田在线商城的多用户高并发、海量数据的搜索需求。
搭建Solr集群主要用途是降低单机的处理压力,将海田商城的搜索服务项目切换到这个集群,商城
![](//html.hanspub.org/file/12-2690292x14_hanspub.png)
Figure 6. The mind map of commodity system
图6. 商品系统思维导图
![](//html.hanspub.org/file/12-2690292x15_hanspub.png)
Figure 7. The mind map of order system
图7. 订单系统思维导图
![](//html.hanspub.org/file/12-2690292x16_hanspub.png)
Figure 8. The mind map of WMS
图8. 仓储系统思维导图
![](//html.hanspub.org/file/12-2690292x17_hanspub.png)
Figure 9. Functional architecture diagram of Haitian Online store
图9. 海田在线商城系统架构图
![](//html.hanspub.org/file/12-2690292x18_hanspub.png)
Figure 10. Dubbo Architecture1
图10. Dubbo架构图
中的所有商品信息导入到Solr的索引库中,在java后台通过SolrJ对Solr集群进行搜索相关的操作。最终实现对商品快速的全站搜索服务。
3.1.3. Redis提升数据访问速度
Redis 即为Remote Dictionary Server (远程数据服务)的缩写是一个开源的,支持网络、可基于内存亦可持久化的日志型、Key-Value的Nosql数据库,并提供java等多种语言的API。
Redis的主要特点是以内存空间来换数据读取时间,在海田商城的开发中,对于商品信息、商城活动、会员信息等一些短时间内不需要改变数据的,但是又要多次被用户点击访问。Redis即可缓解这类数据库的压力,降低商城的数据库负荷,海田商城将发布的商品信息保存到Redis数据库,用户可以立即查看到,然后将内存中的数据同步到关系型数据库。相对与Memcached分布式内存对象缓存系统,Redis支持存储的value类型相对更多,可靠性上比Memcached来的强 [4] 。更适合海田商城这种多位一体的电商平台。
3.2. SSM框架的研究
SSM框架整合即为Spring、SpringMVC、MyBatis三个开源框架的整合。商城主要是采用Spring (4.2.4.RELEASE),MyBatis (3.2.8)进行SSM整合。
3.2.1. Spring框架
Spring是一个开放源代码、轻量级的Java开发框架。通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。在这里举个例子来说明IoC的核心思想,支付宝在整个淘宝体系里就是庞大的IoC容器,交易双方之外的第三方,提供可靠性可依赖可灵活变更交易方的资源管理中心。我们在设计商城的时候:先设计商家,然后根据商家设计商品,接着根据商品设计买家,最后根据买家设计仓储。这里就出现了一个“依赖”关系:商品依赖商家,买家依赖商品,商品依赖库存。商品、买家、卖家、仓储之间的资源不由使用资源的双方管理,而由不使用资源的第三方即Spring的IoC容器来管理,这可以带来很多好处。第一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度。这样以后我们在对商品、卖家、买家、仓储的服务上增加或者增强功能模块的时候就不必要在商品、买家、卖家、仓储每个服务去修改,提高了后期维护的效率。
Spring还有一个很重要的特性,就是可以方便集成各种优秀的框架。海田在线商城主要集成了Dubbo服务框架、Redis缓存服务、Solr搜索服务、ActiveMQ消息队列服务。Spring集成海田商城要用到的第三方框架后,就可以通过简单的配置调用第三方框架提供的API,实现商城的业务服务。具体整合及特性如下:
1) 在商城SOA业务服务层集成了分布式的Dubbo服务框架,例如使用Dubbo实现分布式服务框架来提供相关商品的展示、商品搜索等服务时,只需在提供这些服务的web程序的SSM配置文件上加上Dubbo的关键配置
这样就可以把商品服务注册到服务中心,当要使用这些商品服务的web程序,如商城主页,就可以透明化的远程方法调用,就像调用本地方法一样调用远程方法。
2) 在商城的系统服务层整合了用来做缓存的Redis缓存库和用来提供搜索服务的Solr集群,使得整个系统数据库的负载大大降低,提高运行速度。数据库则整合了MyBatis,下面详述。
3) Spring系统中我们还内嵌了ActiveMQ,ActiveMQ是强劲的消息总线,不论是在海田商城分布式开发过程中还是在运维上都扮演着重要的角色,ActiveMQ的特点主要是,可以建立网络通信的通道,进行数据的可靠传送。在传输中保证了数据传输的完整性,而且能够跨平台传输。
3.2.2. SpringMVC
SpringMVC属于Spring框架的衍生模块,SpringMVC通过DispatcherServlet这个前端控制器(也叫中央调度器,笔者认为中央调度器更能体现其作用),来调用MVC的三大件:Controller、Model、View。这样就保证MVC的每一个组件只与DispatcherServlet耦合,而彼此之间独立运行,大大降低了程序的耦合性。使得海天商城的设计复合程序的开发之道,高内聚底耦合的设计原则。
3.2.3. MyBatis的选用
MyBatis是集合多种操作型关系数据库的概念和方法,它是一个强大的数据访问工具和解决方法 [5] 。对比Hibernate,MyBatis是一个半自动框架,Hibernate则是一个全自动框架,无法直接维护SQL。MyBatis在书写SQL的灵活性很好,Hibernate就不行,会比较麻烦。本文使用MyBatis作为海田在线商城这种多变性的项目,Hibernate比较适合稳定的项目。而且MyBatis速度相对于Hibernate的速度要快些。
3.3. 功能页面结构实现
3.3.1. 前端系统架的搭建
前端系统的搭建(如 图11所示)主要是实现前后端分离开发的,只在数据库层面进行交互上,这样前端能够缓解多用户、高并发的问题。有利于整个平台的性能能够更高效的运行。后台则通过发布服务,供PC端和移动端公用,提高了代码的复用度,降低了系统之间耦合度。
3.3.2. 前端页面的实现
基于SSM框架的后台系统,前台系统主要实现了功能模块页面有:首页信息模块、商品展示信息模块、购物车信息模块、商品展示信息模块、用户管理模块、订单管理模块等12个模块。所有模块都能够实现PC端(如 图12所示)、PAD端和智能手机端(如 图13所示)的分辨率自适应,满足绝大部分的用户需求。
![](//html.hanspub.org/file/12-2690292x20_hanspub.png)
Figure 11. Functional architecture diagram of foreground system
图11. 前端系统架构图
![](//html.hanspub.org/file/12-2690292x21_hanspub.png)
![](//html.hanspub.org/file/12-2690292x22_hanspub.png)
Figure 12. PC-side page structure
图12. 海田在线商城PC端页面结构
![](//html.hanspub.org/file/12-2690292x25_hanspub.png)
Figure 13. Smart mobile phone Page Structure
图13. 海田在线商城智能手机端页面结构
![](Images/Table_Tmp.jpg)
Table 1. Data sheet list summary
表1. 数据表清单内容汇总
![](//html.hanspub.org/file/12-2690292x26_hanspub.png)
Figure 14. Data table field design
图14. 数据表字段设计
3.4. 数据库设计
海田在线商场依照初定的项目需求设计了 表1所示数据表。
海田在线商城的数据表字段及类型的具体设计如 图14所示。
4. 结束语
本文对于海田在线商城的设计进行了初步实现,采用Spring、SpringMVC和MyBatis框架为基础,Spring作为整个系统的控制中心,这样可以使得系统在整合上更符合程序的设计之道,降低了整个海田商城系统的复杂度。Dubbo、Redis、SolrCloud技术的引入能够解决在线商城的海量数据、多用户高并发的问题,在移动互联网不断更新的时代里能够更好的兼容和内嵌新技术框架。一个好的平台需要不断的完善和改进,其中包括了问题的解决,例如本项目在开发中解决js跨域访问的问题应使用jsonp、跨站请求伪造(CSRF攻击)的解决方法为设置验证码验证,增加Token验证等 [6] 。这种基于SSM三大框架整合开发企业型的商城还是很受用的,分布式开发能够灵活的分布和部署移动端或者PC的服务器。对于商城的后续完善还有待进一步研究。
基金项目
2017年“攀登计划”广东大学生科技创新培育专项资金资助(项目编号:pdjh2017b0983)。
NOTES
1图片引用自Dubbo官方文档,http://dubbo.io/.
深圳SEO优化公司绥化网页制作推荐新乡优化推荐十堰网站建设设计报价海口SEO按效果付费报价威海网站推广多少钱永州网络营销价格和县网站优化排名多少钱鸡西百度爱采购报价昭通网站优化软件多少钱吉祥企业网站制作报价红河seo排名报价张家口阿里店铺托管价格玉树企业网站制作报价沈阳关键词按天扣费公司阜新网站改版公司杭州网站设计模板报价玉溪企业网站制作报价柳州网页设计价格商丘关键词按天扣费天水模板网站建设哪家好甘南设计公司网站多少钱防城港百度seo价格通化网站优化软件平湖seo优化公司遂宁推广网站林芝网站优化按天扣费肇庆百度网站优化哪家好拉萨模板网站建设报价海西网站优化软件报价双龙网站优化推广多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运
深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化