您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 基于分布式集群技术的SSM购物商城系统设计
2019年软件2019,Vol.40,No.8第40卷第8期COMPUTERENGINEERING&SOFTWARE国际IT传媒品牌作者简介:童二宝(1992),男,杭州电子科技大学电子信息学院硕士研究生,研究方向为应用软件开发;彭战军(1991),男,杭州电子科技大学电子信息学院硕士研究生,研究方向为应用软件开发。基于分布式集群技术的SSM购物商城系统设计童二宝,彭战军(杭州电子科技大学电子信息学院,杭州310018)摘要:aiBuy商城是一个基于J2EE的综合性B2C电商平台,用户可以在商城内浏览和购买商品。aiBuy商城采用分布式集群技术,整合SSM框架来实现。使用Nginx作为图片服务器、搭建Solr集群作为搜索服务器、Redis做缓存、ActiveMQ做消息中间件、Dubbo做服务中间件,SSO来实现单点登录。aiBuy商城可以解决高并发、高可用和高性能等诸多问题。经过测试,该系统可以基本满足用户购物需求。关键词:J2EE;分布式集群;SSM;Redis;高并发中图分类号:TP391文献标识码:ADOI:10.3969/j.issn.1003-6970.2019.08.029本文著录格式:童二宝,彭战军.基于分布式集群技术的SSM购物商城系统设计[J].软件,2019,40(8):123126DesignofSSMShoppingMallSystemBasedonDistributedClusterTechnologyTONGEr-bao,PENGZhan-jun(Collegeofelectronicsinformation,HangzhouDianziUniversity,Hangzhou310018,China)【Abstract】:aiBuyMallisacomprehensiveB2Ce-commerceplatformbasedonJ2EE,userscanbrowseandpur-chasegoodsinthemall.aiBuyMalladoptsdistributedclustertechnologyandintegratesSSMframeworktoachieve.UseNginxastheimageserver,buildtheSolrclusterasthesearchserver,Redisasthecache,ActiveMQasthemes-sagemiddleware,HttpClientastheservicemiddleware,andSSOtoimplementsinglesign-on.aiBuyMallcansolvemanyproblemssuchashighconcurrency,highavailabilityandhighperformance.Aftertesting,thesystemcanba-sicallymeettheuser'sshoppingneeds.【Keywords】:J2EE;DistributedCluster;SSM;Redis;HighConcurrency0引言随着生活水平的提高,网上购物逐渐成为当下人们追求潮流的方式之一。购物大潮导致的直接问题就是购物网站系统的崩溃,这是由于服务器在高并发情况下承受的负载压力过大,导致出现宕机现象。在如此环境下,设计可以承受高并发的电商平台就显得十分重要。J2EE(Java2PlatformEnterpriseEdition)[1]是SUN公司使用Java技术开发的一套企业级应用规范,它是为了简化企业应用开发、管理和部署。J2EE采用了MVC分层设计模式[2],降低了组件之间的耦合度,大大减轻了客户端和服务端的压力。MVC包括了三大层:Model层(模型层)、View层(视图层)、Controller层(控制层)。该系统以当前较为流行的轻量级SSM[3-5]框架(SpringMVC、Spring和MyBatis)为核心框架,摒弃了原始的SSH框架(Struts2、Spring和Hibernate),提高了开发效率,简化了程序开发步骤。在MVC基础上,再添加服务层(Service层)以及数据访问层(Dao层),Controller层负责接收和处理来自View层的请求转发,Service层负责业务逻辑处理,Dao层负责与数据库交互,实现持久化操作。将SSM框架与目前火热的分布式集群技术整合在一起,可以将各个功能模块独立出来,降低模块之间的耦合性,方便进行分布式部署,就有望设计出一个可使用的大型网上购物平台。1系统介绍采用分布式系统架构的aiBuy商城系统的模块划分主要由以下几部分组成:后台管理模块、前台第40卷第8期软件124《软件》杂志欢迎推荐投稿:cosoft@vip.163.com管理模块、订单生成模块、商品搜索模块、登录(注册)模块以及订单支付模块等。后台管理模块主要完成对商品的管理(包含商品的增加)删除、修改、查询),以及用户信息管理等;前台系统包含商城的首页显示、用户的注册、登录以及商品浏览等;订单生成模块主要是提供下单、订单查询、订单修改以及订单提交等服务;商品搜索模块即提供商品的搜索功能,方便用户;登录(注册)模块实现用户的注册和登录操作;订单支付模块提供支付服务。典型的分布式架构如图1所示。图1分布式架构Fig.1Distributedarchitecture2系统设计2.1开发环境操作系统:Windows7;数据库服务器:MySQL5.7,Redis3.0.0;Web服务器:Tomcat8.0,Nginx1.8.0;开发工具:MyEclipse(自带Maven3.3.3插件);版本控制工具:SVN1.8.0;JDK版本:JDK1.8.0。配置:主频2.0GHZ以上;内存:4G以上;硬盘:100G以上。2.2相关技术系统后端是通过整合J2EE和SSM轻量级框架来实现,前端用户界面采用EasyUI[6-7]框架实现。前后端是通过RESTful[8]架构来实现分离的。(1)Spring框架。Spring为现代基于Java的在任何类型的部署平台上的企业应用程序提供了全面的编程和配置模型。Spring的一个关键要素是应用程序级别的基础架构支持:Spring专注于企业应用程序的“管道”,以便团队可以专注于应用程序级业务逻辑,而无需与特定部署环境建立不必要的联系。Spring框架包含两大理念:IoC(控制反转)和AOP(面向切面编程),这两个理念大大简化了Java的开发。(2)SpringMVC框架。SpringMVC是Spring的一部分,SpringMVC旨在运用MVC架构的思想,来实现WebMVC设计模式,将Web层进行解耦,简化日常的Web开发。MVC的模式图如图2所示。图2MVC模式图Fig.2MVCpatterndiagram(3)MyBatis框架。MyBatis是一款持久层框架,MyBatis相对于Hibernate,最明显的优势是避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,只需要简单的XML或者注解配置就可以实现持久化。(4)Redis数据库。Redis数据库是一个Nosql数据库,是以Key-Value键值对的方式保存数据,主要应用于数据缓存、高并发下负载均衡和Session共享。aiBuy商城使用的是Redis的集群版,启动了6个Redis实例,三主三从,这样做的目的是在宕机情况下,最大可能地保证数据正确性和安全性。(5)Nginx服务器。Nginx是一款开源的HTTP服务器和反向代理服务器,在aiBuy商城中,Nginx主要是作为图片服务器、反向代理服务器以及负载均衡服务器使用。(6)Solr集群。Solr是Apache下的一个开源项目,它是基于Lucene的全文搜索服务器。Solr的集群版使用的是基于Solr和Zookeeper的集群方案SolrCloud,其中Zookeeper是作为集群的信息中心。SolrCloud有诸多优点,如:集中式的配置信息、自动容错、查询时自动负载均衡等。2.3系统功能模块设计整个系统的设计采用分布式系统架构实现,即把系统按照不同的模块拆分成多个子系统,各个子系统之间通过调用接口来通信,增加或者删除某个模块不会对其它模块产生影响,可以实现灵活的分布式部署。系统的架构设计如图3所示,服务层按照执行模块的不同,分别提供不同的接口服务,如商品服务、登录服务、订单服务以及支付服务等,童二宝等:基于分布式集群技术的SSM购物商城系统设计125《软件》杂志欢迎推荐投稿:cosoft@vip.163.com这样做的好处是降低了各个服务之间的耦合,当要增加一个服务模块时,可以直接添加,不会对其它模块产生影响;而用户所要做的就是直接调用这些服务来完成购物操作,这个过程的实现要依靠RPC远程调用服务,这里选择Dubbo来实现。这些服务是以接口的形式表现,这些接口都统一采用RESTful格式。持久层的工作主要是对数据库的数据进行操作(增删改查),系统采用Mysql数据库集群和读写分离(MyCat实现)来减轻数据库的压力,集群和读写分离均在Linux[9]环境下进行配置和运行,使用的是CentOS[10]版本。使用Redis集群来作为缓存,也可以大大减轻数据库的压力。图3aiBuy系统架构Fig.3aiBuysystemarchitecture2.4数据库表结构设计根据设计需求系统所需要的表有商品表、商品内容表、商品类目标、商品描述表、商品规格参数表、订单表、用户表等11个表。这些表均对应于程序中的实体类,以下列举商品表相关信息,如表1所示:表1商品表Tab.1Commoditytable字段名类型长度是否主键注释idbigint20是商品编号titlevarchar100否商品标题sell_pointvarchar500否商品卖点pricebigint20否商品价格numint10否库存数量barcodevarchar30否商品条形码imagevarchar30否商品图片cidbigint10否所属类目statustinyint4否商品状态createddatetime8否创建时间updateddatetime8否更新时间3系统实现由于系统的模块和功能较多,以下只介绍其中一些模块的设计和实现。3.1后台管理模块后台管理模块主要涉及的是对商品的信息进行管理,即对商品和商品规格进行CRUD(增删改查)操作以及对用户订单进行处理。在设计商品表和商品规格表时,已经为不同的商品设置了不同的id,因此在对商品进行增删改查时,只需要将指定商品的id设置到SQL语句中,在Dao层中对数据库进行操作,就可以实现这一目的。以下程序段的功能是根据商品id查询商品信息并返回。publicItemgetItemById(longid){ItemExampleex=newItemExample();Criteriacri=ex.createCriteria();cri.andIdEqualTo(id);ListItemlist=itemMapper.selectByExample(ex);if(list!=null&&list.size()0){Itemitem=list.get(0);returnitem;}returnitemMapper.selectByPrimaryKey(id);}3.2购物车模块在购物车模块设计中,首先要考虑的问题是用第40卷第8期软件126《软件》杂志欢迎推荐投稿:cosoft@vip.163.com户在登录和未登录两种情况下将商品加入购物车(购物车在程序中是一个类),后台应该怎样保存商品信息。在用户将商品加入到购物车时,通过在程序中加入拦截器来判断用户是否登录,如果已登录,则直接将购物车放入Redis缓存中;未登录则将购物车放入cookie[11]中,待登录后再放入Redis缓存中,这样的设计类似于京东商城,可以确保用户在登录和未登录情况下,均可以将商品加入购物车,购物车的设计框架如图4所示。图4购物车设计Fig.4Sh
本文标题:基于分布式集群技术的SSM购物商城系统设计
链接地址:https://www.777doc.com/doc-7525977 .html