APP下载

基于人脸识别考勤系统并发研究

2020-12-28李泽辰张红祥党凯赵运鑫

电脑知识与技术 2020年33期
关键词:信息管理系统人脸识别

李泽辰 张红祥 党凯 赵运鑫

摘要:本文通过对考勤重要性的阐述以及新型考勤形式的展望,提出了利用人脸识别技术辅助局域网技术以及移动定位技术的考勤管理系统。本文分析了系统的工作方式与实现难点,并就对难点问题——高并发,进行了详细分析和解决方案的提出。

关键词:高校考勤;人脸识别;信息管理系统;Android;高并发

中图分类号:TP311文献标识码:A

文章编号:1009-3044(2020)33-0180-02

开放科学(资源服务)标识码( OSID):

0 引言

基于人脸识别技术[1]的移动考勤系统是基于阿里云人工智能面部识别技术[2]进一步定制开发的多功能考勤系统[3]。用户通过手机App采集实时面部信息发往后台进行比对,并辅助使用GPS定位技术确保用户是在正确的位置进行的考勤操作,从而完成记录考勤信息。

该系统在实际运行时必须解决一个技术难题:在考勤请求高并发的情况下,在有限的计算资源的条件下,系统如何实现稳定准确的完成考勤工作,如何解决这一难题,是本文的主要研究内容[4]。

1 人脸识别移动考勤系统技术分析

本系统分为Web端[5-7]与Android App端[8-10],两者之间相互独立,可分别部署与不同的服务器上,但两端公用同一数据库。Web端与Android App端通过RocketMQ消息队列进行一( Web)对多(Android App)通信与负载均衡处理。

Android App端的主要功能包括用户数据存储、人脸识别、人脸对比,考勤任务的发起。

用户使用App进行注册,大部分的用户数据会保存至用户终端本地,在闲时与web服务器的数据进行同步,从而减少服务器压力,用户在注册和考勤时需要调用设备的前置摄像仪器,这里需要用到Android的摄像设备接口[11]。人脸捕捉阶段需要调用阿里云“人脸检测定位”接口,从而快速锁定人脸区域,方便保存与后续比对。注册时,系统生成用户个人专属的人脸数据,并将其存放到阿里云OSS对象存储服务中,以待下次对比使用。使用OSS对象存储服务是因为人脸数据之后的服务中会频繁使用,OSS对象存储服务支持自动生成图像的URL路径,这样很方便阿里云人脸对比接口的图像导入,实现快速比对。在比对完成后,阿里云人脸对比接口会返回一个置信值,若高于80,视为人脸相符,App端将向web端发送用户考勤成功的请求,若低于80,则视为人脸不相符,App将询问用户是否再次完成进行验证考勤。

Web端仅供管理员用户使用,为了方便管理,管理员权限应当做分级处理,此功能将使用Apache Shiro框架实现,具体应达到的效果为,一个学校(学院)设置一名专门负责考勤的一级管理员,设置多名二级管理员即老师。一级管理员可以管理所属部门的所有二级管理员和户信息,并可修改学校所有的考勤记录。二级管理员可以发展群组即班级,班级的管理方式与App端方式相同,老师可以在班级范围内发布考勤任务,并查看班级成员对考勤任务的完成情况并进行修改或下载。

考勤往往会因网络状况不佳,学生设备故障等客觀因素导致考勤不能正常完成,所以管理员对考勤记录的修改的意义就在此体现,以保证考勤的公平性。

Web端也将承担考勤记录的统计功能,由于考勤任务发布是只有很短时间的时效性而保证考勤的真实性,所以所有App将会在同一时间点发布考勤请求,从而发生高并发的现象,解决方法是使用SpringBoot集成RocketMQ消息队列,多个App的考勤请求作为生产者,考勤请求将封装考勤发起的时间,消息队列的消费者会将考勤记录逐条写进数据库中,依次解决高并发对服务器带来的压力。

2 并发问题的解决

首先,系统主要需要实现两个功能,一个是处理好上课前几分钟考勤带来的高并发请求,另一个是将所有的考勤数据尽快录入系统,方便老师查看。

该系统需要解决的最大问题是如何在高并发请求下快速的处理完当前的请求任务。以西安文理学院举例,每周一的第一节课大约有五千人需要上课,假如每个教室均使用本系统进行考勤,在几分钟内系统的并发量就会剧增至上万,如何能快速、正确的解决这些请求是一件很麻烦的事情。面对这种高并发的请求,本系统将从两个方面进行优化,分为数据库优化、服务端优化。

首先,所有的考勤数据都需要存储到数据库以备后期查看,如果直接将考勤数据写入数据库,庞大的数据请求容易使得服务器宕机。本系统使用了Redis[12]进行缓存需要频繁读取的数据,避免了多次请求数据库而给服务器带来巨大的压力,从而加快了热点数据的访问速度;在数据库方面,本系统将使用读写分离的办法来解决数据库请求量剧增的问题。建立专门用于读取数据的数据库,以及存储数据的数据库,高并发发生时,降低数据库读操作和写操作混杂而导致数据库崩溃的可能性。本系统还建立了对应数据表的索引,以此来增加查询效率,对于复杂的数据存储,系统将直接调用存储过程进行存储,达到减少soL编译时间、降低网络通信量的目的,进而加快数据存储所需要的时间。

对于服务器,采用Nginx进行反向代理,负载均衡。反向代理机制可以帮助经常被请求的页面缓解服务器的压力,将客户端的请求转发到目标服务器上;负载均衡具有转发、故障移除的功能,ngmx可以通过一定的算法,如轮询、权重的算法来将不同的客户端请求转发到不同的服务器上,减轻单个服务器的压力,以此来增加系统的并发量,利用心跳检测机制,来判断集群中的某台服务器是否正常工作。同时使用RocketMQ消息队列进行削峰处理,将请求数据先存人消息中间件中,消费处理系统逐渐拉取消费,将消费过的数据异步写入数据库,降低服务器压力。对于部分静态文件,本系统使用了CDN即内容分发网络来存储,当客户端请求时,将请求分发到距离客户端最近的缓存服务器上,由缓存服务器响应客户端的请求。

在阿里云服务器下进行测试,测试工具是Apache组织开发的基于Java的压力测试工具,它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。测试环境软件环境如表1软件环境所示:

对请求接口进行测试,线程数设置为1000,Ram-UP Period(启动所有线程的时间)设置为lOs,循环次数设置为10次,即在10秒内将会有10000次请求访问系统。

测试结果汇总图如图l所示,每次请求状态图如图2所示。

测试过程中请求1000次请求中error为0.00%,是可以接受的比例。Throughput(吞吐量)达到了103.4sec,理论上1秒内可以解决103次请求。对于小规模的高并发请求足够使用,当请求次数达到10000以上时需要升级服务器配置。

综上所述,本系统数据库采用了读写分离、Redis热缓存降低数据库压力;服务器采用了Nginx进行负载均衡和反向代理机制来增加请求响应速度;使用RocketMQ消息队列进行削峰处理,降低服务器压力;静态资源使用CDN来加速资源的获取。

同时,使用了行业内认可的压力测试工具Apache JMeter进行测试,测试结果良好,能够在合理的时间内完成系统的请求。

参考文献:

[1]张旭,谢鉴.基于深度学习的人脸大数据系统应用[J].电子技术与软件工程,2019(3):161.

[2]吴文华.人脸识别技术的发展与功能[J].电子技术与软件工程,2019(2):76.

[3]耿倩.基于人脸识别的高校考勤系统研究[J].陕西教育(高教),2019(8):45-46.

[4]周春杰.基于人臉识别及行人重识别技术的考勤系统[J].工业控制计算机,2019,32(8):152-153.

[5]苏畅.基于JAVA的公司考勤系统的设计与实现[J].科技广场,2013(5):58-60.

[6]王昌建.高校学生考勤信息管理系统设计与开发[J].科技信息,2010(33):91,112.

[7]何晓昀.基于校园网的学生考勤系统的设计[J].长江大学学报(自然科学版)理工卷,2010,7(3):285-286.

[8]薛云飞.基于Android平台的校园移动考勤系统的研究与应用[J].中国新通信,2018,20(2):82.

[9]张波,赵双明.基于Android平台的百度地图开发研究[J].软件导刊。2015,14(7):96-99.

[10]郑杰辉.基于手机定位的考勤管理系统的设计与实现[J].武汉职业技术学院学报,2016,15 (5):72-74.

[11]徐旭东.网络视频监控系统Android客户端的开发[D].上海:上海交通大学,2017.

[12]王琳.基于Nginx和Redis集群架构的互联网线上触点商城解决策略[J].产业与科技论坛,2019,18(12):47-49.

【通联编辑:闻翔军】

猜你喜欢

信息管理系统人脸识别
三维可视化信息管理系统在选煤生产中的应用
人脸识别 等
信息管理系统在工程项目管理的应用
揭开人脸识别的神秘面纱
基于三维TGIS的高速公路综合信息管理系统
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别