马梓昂 贾克斌
(北京工业大学信息学部 北京 100124) (先进信息网络北京实验室 北京 100124)
智能快递投递箱将快件暂时保存在投递箱内,并将信息通过短信等方式发送用户,为用户提供24小时自助取件服务。用户还可以通过寄存功能将物品进行短暂的存放,通过发送的验证码再次开柜取走寄存物品。广告模块可以由广告商申请权限进行物料的上传和广告计划的添加,用户亦可上传需要发布的物料,类似寻人寻物启事等。
目前基于Web的管理系统主要采用固定化的模块方式,底层逻辑只针对相应的功能模块,当功能之间有交叉重叠时,代码复用率很低。此外,传统的快递柜系统较难添加不同类型的机柜。广告系统也大多与管理系统分离,造成广告监管不便、收益查询不便等问题。
为此,本文介绍了一种重用底层逻辑的开发模式。该模式划分更多固定模块并集成配置模块,以便用户自定义配置内容。广告和收入系统也被集成在了管理平台上。由此,基于当前流行的开发模型SSH和SSM,研究了Spring、Spring MVC、Mybatis、Hibernate的优势以及适用于该系统的方案。本文采用SpringMVC设计模式和MyBatis框架,同时在端与端的通信上采用Redis,最终实现的系统满足了业务及性能需求,成功上线为广大用户提供服务。
从供给端和需求端去看待当前行业问题及对应需求。
(1) 供给端:快递企业。快递从业人员缺口大,未来几年,全国快递日均配送量将由1.14亿件上升至2亿件,按照目前的配送效率计算,几年后快递员的缺口预计将在100万人左右。
(2) 供给端:快递员。快递员工作时间长,配送压力大,已成高压职业。据估计,目前快递员日均配送量为60~100件。超过八成的快递员平均工作时长在8个小时以上,在电商促销旺季甚至会超过12个小时。
(3) 需求端:市场需求普遍。市场方面存在着需求持续增长的问题。根据国家邮政局统计数据,“十二五期间”,国内快递业务量连续5年保持50%左右的高速增长。2017年,业务总量达到400.6亿件,收入达到4 957亿元。据国家邮政局发布的《邮政业发展“十三五”规划》预计,2020年快递业务量将达到700亿,收入将接近8 000亿元。
针对以上问题,本文设计开发了一套高效的基于Web的快递柜后台管理系统,将广告商系统、快递员管理系统、机柜硬件自检系统等集成到统一管理平台,实现代码自检、广告流程审核优化、分布式业务开发等功能,提高了后台的覆盖业务面,简化了管理流程,同时减少了所需人力。
智能快递柜后台管理系统Web应用,主要功能有机柜管理、广告计划、快递员管理、快递员APP配置管理等模块。其整体框架如图1所示。
图1 系统核心模块设计
机柜管理模块:该模块显示机柜的基础信息详情,包括机柜编码、机柜名称、机柜别名、所在省份、详细地址、所属者等信息,也能添加机柜的基础信息。较复杂的模块有关联机柜的投资者,关联机柜的运营维护人员,关联机柜的初始化硬件,机柜整体布局等自定义模块。
机柜整体布局自定义模块:包含主柜的初始化操作和副柜的添加。实现按业务需求进行自定义格口,将不局限于传统快递柜的大、中、小固定模式。
机柜自检模块:该模块通过对机柜端信息的采集,解析到后台,实现了后台管理人员对机柜实时的智能监控以及相关运维人员的工单派发维护工作。
机柜编组模块:该模块将快递柜根据管理需求(广告下发、机柜报修、地域派发等)进行分组。
物料管理模块:进行物料的上传提交,审核成功的物料才可以在广告计划中进行编辑操作,与相应的机柜编组进行关联。
广告计划管理模块:该模块集成了广告计划,机柜编组,审核计划的操作。
快递员管理模块:可对快递员信息进行添加、审核、删除操作。
快递员APP配置管理模块:主要分为首页轮播图管理和系统消息管理。前者,后台管理者上传相应的轮播图图片,包括设置轮播顺序,以及启用禁用该轮播图。后者只有添加和删除功能,不可编辑。
数据库设计中涉及到比较复杂的关系有:机柜基础信息及机柜编组关系、机柜与运维者配置关系、广告计划及物料关系。
智能快递柜核心功能的数据库关系如图2、图3所示。
图2 机柜业务数据库关联设计
图3 人员配置样例数据库关联设计
其中,机柜基础信息表是整个数据结构设计的中心,相关联的广告编组、运维人员、机柜编组、副柜等信息都需要依靠中间表与机柜基础信息及机柜编组表做关联。
本文对目前较为流行两种开发MVC开源框架——SSH和SSM进行了研究。MVC交互过程如图4所示。
图4 MVC组织图
SSH 通常指的是 Struts2 做主控器,Spring 管理各层的组件,Hibernate 负责持久化层;SSM 则指的是 SpringMVC 做控制器,Spring 管理各层的组件,MyBatis 负责持久化层。它们的共同点是:
(1) 中间层都使用Spring注入DI来管理各层的组件。
(2) 整体都使用面向切面编程AOP管理事物、日志、权限等。
而二者的主要区别在于控制层与数据底层的差异,下文将详细比较其应用于本系统的优劣势。
3.2.1Struts2与SpringMVC的研究
Struts2和SpringMVC控制视图和模型的交互机制的不同。Struts2是Action类级别,如图5所示。SpringMVC是方法级别,如图6所示,它更容易实现RESTful风格。
图5 Struts2交互机制
图6 SpringMVC交互机制
从图5和图6中可以看出,Strusts2的类级操作更加耦合,操作一些详细的逻辑操作很不方便,因此有必要设计分类程序。添加服务层和DAO层,替换模型层,细化数据模型,这样当我们更改表时,只需要更改DAO层的实现,最大化减少代码的更改成本。
3.2.2Hibernate与MyBatis的研究
二者都支持JDBC和JTA事务处理,其实现逻辑如图7所示。
图7 数据事务处理逻辑
相对而言,MyBatis可以执行更详细的SQL优化,进而减少查询字段。但是,MyBatis只实现了SQL语句和对象的映射,需要为特定数据库编写SQL语句。此外,它具有很强的处理数据库更改的能力,优化SQL语句更方便。
3.2.3SSH与SSM的性能比较
在文献[2]中构建了简单的SSM和SSH框架,进行了数据操作,量化如表1所示。
表1 Mybatis与Hibernate执行效率对比
表1中执行时间为每条数据的平均执行时间,Insert测试数据为1 000条,每次测试均为随机选择、删除、更新一条数据,执行次数为100次。
本系统选用SSM框架进行高性能智能快递柜管理后台系统的开发。SSM 的轻量化特性更适合基于项目的研究,而且其灵活性更利于后期对高性能框架的研究。
使用MVC的目的是分离M和V的实现代码,以便相同的程序可以使用不同的形式。Model整体化结构与原子化分离结构分别如图8、图9所示。
图8 封装完整的Model层结构
图9 原子化的Model层替换结构
可以看出,在我们开发的高效后台管理系统中,模型层被移除并被更加雾化的DAO层取代。同时,Controller层的业务逻辑分为多个服务。因此当我们更改表时,只需要更改DAO层的实现,最大化减少代码更改的成本。这使得智能快递柜的独立系统功能共享底层服务,使框架真正实现高性能。
本文利用Redis订阅发布模式的特点,将机柜端设计一个订阅模块,订阅后台发布的指令,使用Redis主要是把耦合点单独抽离出来作为第三方,隔离易变化的发送方和接收方。发送方只负责向第三方发送消息,如店家把快递包裹交给快递公司,接收方被动接收消息。第三方作用是:存储订购产品的接收方,并在包裹过来时送给接收方。应用Redis进行通信的好处在于不仅可以将通信指令进行传达,同时可以在相应的键值内存储一些必要的信息。
4.3.1整体模块
主要系统模块包含:微信用户管理,机柜管理,快递员管理,运营管理员管理,订单管理,广告管理,内部消息,短信记录管理,柜口配置,充值套餐配置,第三方支付配置,快递员APP配置,合作商管理,地址管理,客服电话管理,程序版本管理及其相应子模块。
4.3.2核心功能
机柜管理下设的模块关联运营管理者管理、机柜硬件管理、地图选点功能以及可视化界面编辑,自定义个性化柜口配置可以根据长宽百分比进行相应柜口操作。
图10和图11展示了机柜管理的关联添加功能,机柜管理关联的相关组织有:运营管理员,投资者以及相关硬件。机柜柜口信息可视化模块可以对机柜进行自定义布局,左右移动副柜。柜口类型关联柜口配置模块可以横向纵向添加个性化配置,添加好的柜口可以上下移动交换位置。
图10 机柜管理添加信息界面
图11 机柜管理添加机柜个性化界面
本系统对服务器的内存、CPU及可靠性等方面都有很高的要求。测试结构如图12所示。
图12 系统测试拓扑图
模拟测试环境在我们忽略思考时间的前提下,运用Loadrunner录制脚本的功能进行单个用户调用微信用户管理模块以及查看、编辑、删除等操作的脚本录制。模拟参数化的200个用户进行访问网页,压力测试条件为200个用户同时启动,持续运行5分钟,200个用户同时结束。其测试结果监控图如图13-图18所示。
图13 访问用户数量变化图
图14 系统吞吐量变化图
图15 系统每秒点击数变化图
图16 系统事务概要图
图17 系统平均事务响应时间
图18 测试结果图
根据图14、图15可知,两图的大体趋势相同,说明系统的功能响应较好,吞吐量峰值可达12 000 000且每秒点击量峰值达到1 050。该数据反映了系统在同一时间内能处理业务的最大能力,数值越高,说明系统处理能力越强。
从图18中可以看出,系统在200个用户并发条件下,整体运行良好,事务处理TPS指数为7.5,并且错误的事务数量为0。
本文依据智能楼宇快递柜后台管理系统的特点以及业务需求对其进行快速开发。主要采用整合框架SSM的设计思想,剥离了Model层,细化Service和DAO层。并且结合了SSM的高性能框架实现了业务逻辑层、数据持久层与表示层的分离,使机柜管理的副柜信息个性化设置功能和柜口配置等功能进行最大效率的复用,大大降低了系统开发的耦合度。实验采用200个用户无思考期望的5分钟并发操作,证明了系统的可靠性和稳定性,实现了预期的功能。