APP下载

基于SOA架构的互联网商城的设计与研发

2019-09-10张宇刘德磊赵明浩丁逸凡张淑婧

电子商务 2019年11期
关键词:电子商务

张宇 刘德磊 赵明浩 丁逸凡 张淑婧

摘要:作为电子行业的新兴产业,电子商务近年来发展迅猛,截至2018年底,中国B2B电子商务的市场交易规模累计产值增额达到118.9万亿,约占电子行业产值总额的62.3%,同比增额18.6%。本课题主要针对供给综合的主流B2B2C电商模式的平台建设和.NET的研究与应用,千万量级数据的企业级搜索,快速存储以及高并发的关键难题,构建一套完整的基于分布式与SOA组合架构。实现存储分布式,集群容器于一体的多功能互联网商城,可扩展与高并发高性能的电子商务平台。

关键词:电子商务;SOA架构;B2B2C模式;企業级搜索;分布式缓存;.NET;集群容器

引言

随着电子行业的新兴发展与国家政策的开放支持,电子行业拥有巨大的市场前景与发展空间,同时,国家出台多项法令法规,保障第三方平台与消费者的利益与权益,营造更为健康,安全,便捷,规范的电子行业的行业环境,本课题主要基于分布式SOA框架的互联网商城的设计优化以及关键技术的应用研究,主要研究内容包括:

(1) 分布式架构(Dubbox)的研究应用与SOA(面向服务的架构)整合优化。

(2) 搜索引擎的技术选型,消息中间件与消息队列的应用构架,网页页面静态化方案,非关系型(Nosql)数据库技术的应用,减少数据库访问压力,对海量数据及非结构化数据的管理与快速搜索(key-value)。

(3) Http反向代理服务器(Nginx),容器部署解决方案(Docker),服务器集群的搭建与部署。

(4) DFS(分布式文件系统)和CAS(单点登录系统)的嵌入与整合,提高资源访问率与商务平台的安全性与可靠性。

(5) 电子商务:秒杀服务,用户中心,评价服务,购物车功能,短信服务,支付服务等互联网商城的关键技术与复杂逻辑服务的设计与实现。

针对互联网商城的特性,依据当前电商行业的运作模式,选择合适的高性能的电商开发技术,使得整个互联网商城面向低耦合高内聚,接口隔离,单一职责,依赖倒置等设计模式等基本原则,提升商城平台的可复用性和实用性。

1、系统设计

电子商务互联网商城的业务逻辑复杂,各个模块之间调度关系紧密,数据库访问量大,为了符合软件设计的“低耦合高内聚,接口隔离,单一职责,开放封闭”的原则,准确,可逆的科技工作流模块支持,良好的开放性和扩展性,本课题互联网商城采用Dubbox分布式架构作为前端控制层和服务层交互的中介,Dubbox架构符合SSM设计原则,也是目前主流的框架集,实现逻辑功能和前端显示交互的分离。对于关系型数据库MySQL采用数据库中间件MyCat控制与管理,在数据库服务器Linux上搭建主从分布式集群Nginx,RedisCluster,SolrCloud,容器部署Docker,主备服务器模式确保服务器的安全性与可靠性,投票选举机制与集群分片完善集群运行机制,消息中间件ActiveMQ负责调度短信微服务和页面生成服务,与Redis协同完成搜索服务的调用与数据返回。ActiveMQ负责消息传递和任务调度,减轻数据库的访问量。本课题只针对互联网商城关键模块(如图1所示)的设计实现与较复杂的模块服务逻辑功能研究与剖析与技术选型,并对商城整体思路的流程控制与技术整合优化。

系统架构各部分说明如图1所示:

(1) 表现层(Web层)

Web层主要是负责前端页面的显示,用户与商家,运营商交互的页面,主要以html5为基础,angularJS为前端参数动态绑定与逻辑服务处理,接收服务层参数并封装调用,Freemarker生成静态化页面,实现动态与静态的整合与交互。

(2) 服务层(Service层)

作为连接前端与数据库的中介,服务层主要负责单一职责的功能逻辑处理,与前端显示和控制分离,负责实例化模块类,通过调用dao层的逆向工程和数据映射产生的表数据对象,完成对数据库或索引库的查询,并将参数数据结果返回给前端。

(3)数据层(数据库)

数据层不涉及逻辑业务的操作,由硬件或软件服务器以及数据库服务器,企业级搜索引擎SolrCloud以及消息中间件ActiveMQ和Docker容器等集群组成,在Linux系统上完成部署和配置,完成对海量商品数据的存储和访问,按照性能要求存储数据,直接访问物理内存,减缓数据库查询压力,提升访问速率。

2、系统研发与优化

2.1 系统开发及其运行环境

本课题在多次调试运行后,本课题最终采用的系统开发运行环境如表1所示:

2.2 系统关键技术实现

2.2.1 消息中间件JMS实现与ActiveMQ整合流程

(1) JMS工作原理

JMS是Java平台提供的厂商执行标准的消息传递API接口,用来定义一个客户机向另一个客户机消息传递的标准规范,进行分布式和异步通信,传递路由信息和元信息参数,并且提供了优先于普通消息的传递优先级路线,完成消息传递。JMS提供了物种消息传递类型机制,根据不同的消息类型机制可以对一般和特殊数据消息传递:

课题中涉及的类型模板表单数据,需采用MapMessage封装并传递Json数据,品牌,订单,规格和首页轮播涉及的表单数据采用TextMessage传递参数,商品表数据采用ObjectMessage类型传递序列化对象实例。

(2) JMS与ActiveMQ整合流程

创建连接工厂;获取连接;启动连接;获取session(参数1:是否启动事务,参数2:消息确认模式)。创建主题对象(Queue或Topic);创建消息消费;监听消息;等待键盘输入;关闭资源。

在商城平台JMS和ActiveMQ的开发整合时,JMS和ActibeMQ的相关配置和基类注入都交由Spring统一管理,Xml文件中配置Spring提供的JMS服务厂商提供的工具类,其中使用的是JMS模板JmsTemplete及其中的方法进行消息的发送和接收,配置产生JMS服务的连接工厂和消息监听容器,导入和移除Solr索引库记录及搜索服务用到Queue点对点文本队列模式,对于网页页面静态化部分,先解除与Dubbox的依赖耦合,修改页面服务实现类的@Service注解为org. springframework.stereotype.Service包下的@Service注解。调用MessageCreator()方法返回参数完成操作,查询品牌和规格列表返回map类型的集合结果给控制层。

发送(发布订阅),商品详情页的索引删除,商品内容上架审核部分。

2.2.2 搜索引擎(Solr)实现

数据库服务器(Linux)完成solr环境的安装、ik分析器和业务域的配置。配置solr的本地配置文件仓库solrhome中的schema.xml文件,设置与数据库商品表单参数对应的字段复制域和动态域使用。如果映射存储值段为imagetype,则将indexed属性设置为false,将关键字查找域的storage属性设置为false。(1)红色设置为闪烁,多值属性设置为真。在商品对应的构造类中,动态域对应的数据库字段配置了@dynamic注解。(2)将solr模板类solrtimplete注入到服务层xml文件中,便于开发人员使用。(3)商城平台商品搜索业务逻辑规则:用户输入搜索关键字时,搜索引擎根据schema.xml文件的配置的关键字字段,根据域名搜索数据库,在爬虫类数据中用关键字字段搜索数据,调用solr模板类返回所有商品信息。包括商品SPU和包含关键字字段的SKU,并将其显示到solrhome/ collection1。搜索前端页面并返回商品的类别和等级。(4)用户能够确定商品的价钱范畴。选择后,商品价格范围消失。当用户搜寻数据库品牌称号的关键字时,品牌选择范围将自动消失。注意:在处理关键字搜索时,应将关键字作为空白进行处理,以防止查询结果中出现错误。

实现思路:(1)搜索面板的商品分类需要使用SpringDataSolr的分組查询来实现。(2)为了提高查询速度,最好提早将查问面板的品牌和规格的JSON参数数据放入redis。(3)查问条件的结构和面板的显示和点击消失需要使用AngularJS完成。(4)后端类别、商品品牌、规格、价钱区间查找需要过滤查询完成。highlight options实现搜索关键字groupoptions的highlight显示,设置分组选项,完成分类列表查询功能。grouping entry set list

Storage服务器集群是文件上传存储的最终路径,文件在Storage生成的子目录和文件夹中存放,Storage生成的文件路径采用的是多级分层树形结构,组名/虚拟磁盘路径/一级目录(0-256)/二级目录(0-256)/文件名.sh。.sh是FastDFS存储文件后缀。

例:Group1/M00/02/44/wkgDrE82AASFHYTAAAAADKEITY34567.sh。

需要注意的是,FastDFS有许多优化机制,Storage内置内存合并机制,也称碎片合并,当碎片内存数量达到一定量时(一般是50个),Storage会优化合并碎片,生成新内存。

2.2.4.1 文件上传和下载流程

(1)文件上传流程

当Tracker容器接收到更新文件的请求时,在Tracker容器中随机选择一台服务器作为TrackerServer,当此Tracker接收到更新文件请求时,服务器会采用轮询或者组剩余空间多的group作为存储媒介。接着Tracker服务器会为已选好的group内分配一个存储服务器给用户,一般采用优先级排序,在选择好文件存储目录后,Storage服务器会默认生成二级子目录和文件名。存储服务器Storage会定时向Tracker服务器上传文件存储的信息状态,以便于Tracker准确查询可用的Storage,并将存储服务器的ip地址的端口号返回给客户端。服务端上传文件后存储服务器将上传的内容写入对应的磁盘完成存储。在资源文件中添加fdfs_client.conf,在控制层中添加方法执行步骤(1)取文件的扩展名(2)创建一个FastDFS的客户端(3)执行上传处理(4)拼接返回的url和ip地址,返回前端完整的url。前端AngularJs服务层异步post方法根据文件名从数据库获取图片地址,控制层查找图片地址并显示。

(2)文件下载流程

当FastDFS执行下载文件的操作时,首先由客户端发送下载请求链接,Tracker从StorageServer上传来的状态信息查询可用的Storage信息,并检验同步状态,查找完成后向Client发送Storage的ip地址和端口号。客户端向StorageServer发送文件的相关信息(组名,路径,文件名)等,StorageServer在内存结构中查找匹配对应的文件,如果查找成功,向Client返回文件相关信息,并提供下载。

2.2.5 网页页面静态化实现(Freemarker)

网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数據,而网页静态化比较适合大规模且相对变化不太频繁的数据,网页静态化还有利于SEO(搜索引擎优化),提高搜索显示性能。

此技术实现需要交付ActiveMQ管理,页面模块调用freeMarkerConfigurer获取配置对象,加载.ftl后缀的模板文件,创建map数据模型查询并添加商品主表,扩展表,分类,SKU数据,创建监听类生成页面,模板页面使用eval将图片列表Json字符串转换为对象并显示,显示购买数量的加减操作,商品类型面包屑和规格列表。页面模块在运营商管理商品模块审核通过,商品状态从待审核更新为上架,同时商品数据导入到索引库,获取商品的SKU列表,遍历商品并将商品列表转换为Json格式传输,遍历商品id并调用jms模板send方法发布订阅产生TextMessage。

2.3 系统部分功能实现

2.3.1 首页展示

作为互联网商城的门户网站和访问入口之一,本网站中主要包括的功能有轮播图展示,条件搜索查询框,全部商品分类树形索引,猜你喜欢,近日推荐,主要频道等如图2所示。

(1)用户点击全部商品分类时可以看到商品分类的树形结构详细商品信息。

(2)用户键入搜寻内容点击搜寻按钮时,页面自动跳转至搜索结果页面,调用索引库查询数据,查询结果高亮显示。耗时在0.5-0.8秒之间,用户体验良好。

(3)用户点击首页图片时,页面跳转至商品详情页面,用户无需登录。

本课题涉及的网站首页全部采用AngularJS+html5动静态结合的方式显示,html5负责显示页面主体静态框架,AngularJs负责完成参数从后端到前台的绑定操作,完成数据动态化。

2.3.2 商家后台展示

商家后台添加商品基本信息,商品图片,扩展属性和商品规格,修改商家基本信息和登录密码等功能,商家后台只对已经入驻商城的商家开放,商家登录平台后可以进行相关操作。

(1) 商家基本管理:包括商家基本资料的修改和登录密码的修改,修改资料包括公司名称,公司手机,公司电话,公司详细地址,联系人姓名,联系人QQ,联系人手机,联系人email,营业执照号,组织机构代码证,法定代表人,法定代表人身份证号,开户行姓名,银行账号等如图3所示,点击保存后数据提交更新到数据库。

(2) 新增商品: 商品基本信息(商品分类3级面包屑分类;商品名称;品牌(下拉框选择);价格;商品介绍;包装列表和售后服务),商品图片,扩展属性和商品规格如图4所示。

(3) 商品管理:对商家商品的增删改查和提交运营商后台审核基本操作如图4所示。

2.3.3 个人中心展示

个人中心是用户个人操作的部分,当用户登录商城后,商城后台数据库调用用户信息显示在用户个人中心,包含用户名,订单中心,我的中心,物流消息与设置,订单中心包括我的订单,我的中心包括我的收藏和我的足迹,设置包括个人信息,地址管理和安全管理几大部分如图5所示。

网站页面显示用户基本信息,安全退出等选项。

(1) 我的订单:显示已购买商品以及商品SPU(标准化产品单元)基本信息(商品图片,商品名称和商品规格,商品数量,实付金额和商品状态),以及下单付款时间和订单编号,商家名称,用户可以点击确认收货或立即付款,点击立即付款将重定位回订单结算页面 ,点击确认收货将跳转到收货成功页面。

(2) 我的收藏:显示本用户下收藏的商品基本信息和商品价格变动。

(3) 地址管理:用户可以管理收货地址信息,选择默认地址以及地址添加和删除。

(4) 安全管理:安全管理部分用户可以更改用户密码和支付信息密码等。

(5) 页面分页显示,按照下单时间排序。

3、小结

本课题在当今电子商务行业的良好发展趋势下,对互联网商城进行整体的思路设计,核心功能开发,实现和优化,各个模块服务之间的逻辑耦合关系和数据库设计。本课题展示了关键技术的选型以及部分功能的设计实现。服务器集群和容器部署使得互联网商城的整体性能和并发量访问量显著提升,为用户,商家,运营商提供良好的界面服务和技术操作,符合当今时代下电商行业的发展态势。

参考文献:

[1] 张籍元,马爱霞.醫药电子商务B2C模式与O2O模式对比分析[J].中国药物评价,2017,01:77-80.

[2] 彭非.B2B电子商务模式在我国的研究现状及发展趋势探析[J].金融经济,2017,04:85-87.

[3] 谢丽霞,孙伟博.B2C电子商务信息系统操作风险评估方法研究[J].计算机应用与软件,2016,09:43-35+71.

[4] 黄曦,张怀君.移动电子商务商业模式浅谈[J].技术与市场,2016, 08:124+126.

[5] 耿慧慧,王萍.O2O电子商务顾客满意度影响因素探究[J]电子商务,2017,02:44-45.

[6] 邵鹏,胡平.电子商务平台商业模式创新与演变的案例研究[J].科研管理,2016,07:81-88.

[7] 王中锋.大数据时代的电子商务服务模式革新[J].电子商务, 2017,03:18-19.

[8] 张晶,张珺.电子商务背景下企业营销模式的创新方向[J].企业改革与管理,2017,02:118.

[9] DericSlavko.ELECTRONIC COMMERCE[J].Economics, 2017,04:38-45.

[10] RP Osca.conceptualization and research review[J]. Espacios,2017,38(61).

作者简介:

张宇,学士,现就学于山西农业大学软件学院,主要研究方向为软件工程,Python;

刘德磊,副教授,现就职于山西农业大学软件学院研究生导师,主要研究方向为软件工程,Java和智能计算机与模式;

赵明浩,学士,现就学于山西农业大学软件学院,主要研究方向为软件工程;

丁逸凡,学士,现就学于山西农业大学软件学院,主要研究方向为软件工程;

张淑婧,学士,现就学于山西农业大学软件学院,主要研究方向为软件工程。

猜你喜欢

电子商务
小微企业电子商务平台的开发与应用
O2O电子商务信任问题分析
O2O电子商务信任问题分析
辽宁大拇哥农业电子商务有限公司
电子商务法草案首审
2013年跨境电子商务那些事儿
电子商务:在对的时间做对的事