基于分布式技术的临床医师模拟考试软件设计开发

2022-04-25 08:36苏海链沈雨丝谌祖滕张常斌赖光均
电子元器件与信息技术 2022年2期
关键词:调用管理员分布式

苏海链,沈雨丝,谌祖滕,张常斌,赖光均

(景德镇学院,江西 景德镇 333000)

0 引言

Dubbo+Zookeeper是近年来比较流行的分布式服务的解决方案之一。Dubbo是Alibaba开源的分布式服务框架,主要是为了解决如何在网络中安全地传递服务,也就是网络通信的安全问题,不是提供方提供服务,就是消费方消费服务。Zookeeper则是一个服务中心,提供服务发现和注册的功能,解决服务管理难的问题。它集成了分布式技术中的分布式服务,分布式服务顾名思义就是将服务分别存放在不同服务器上,根据服务占用资源的不同来分配服务器资源,通过网络进行连接。而本方案将考试的核心功能放置在高性能的云服务器上,将不需要占用太多资源的登陆注册、修改密码、数据管理等功能放置在本地电脑上,以达到提高软件响应速度和运行效率的目的。

1 需求分析

传统的医师自我检测考试往往采用笔试的方式,由于执业医师考试周期长,会导致物质成本和时间成本较大,医师模拟考试软件就可以解决这一问题,用户可以通过碎片化的时间检测学习成果,并且可以不限地点只需要有网络。只需要一套完整的题库,考试试卷就可以由计算机自动生成和批改,节约时间成本,让学习效率大幅度提高,用户只需要专注于对知识掌握程度的测验而不需要在考虑如何去获取合适试卷,一切都可以由软件自动完成。用户可以通过软件快速查看到考试的成绩,也可以随时随地的生成试卷进行考试,不需要固定的时间和地点,在有互联网的地方就可以进行考试。

2 软件框架

基于分布式技术的临床医师模拟考试软件使用Spring Boot框架进行开发。这一框架是近年来比较流行的微服务框架,在其中可以快捷地集成分布式技术,同时在Spring Boot框架中集成了SSM框架,而SSM框架则是非常流行的JavaEE企业级框架。本方案就是以Spring Boot框架集成的SSM框架搭建后端管理界面,然后集成分布式技术dubbo+zookeeper。这两个分布式技术是比较流行的技术,使用方便快速,其优点是开发效率高、运行速度快、软件负载高、开发成本低[1]。

3 总体功能设计

3.1 超级管理员功能

①登录注销功能:超级管理员进行登录,Shiro会接管账号密码并对账号密码进行核对,核对无误则进入软件后端。

②权限管理功能:超级管理员可以对管理员用户和普通用户进行降权和升权操作。

③题库管理功能:超级管理员可以对题库进行增删改查的操作,可以生成excel表格。

④试卷管理功能:超级管理员可以对试卷进行增删改查的操作,可以生成excel表格。

⑤用户管理功能:超级管理员可以对用户进行增删改查的操作,可以生成excel表格。

⑥历史考试记录管理功能:超级管理员可以对历史记录进行查看并且管理。

⑦修改密码功能:超级管理员可以对管理员和自身进行密码管理,可以对指定用户实施一键密码还原。

⑧发布公告功能:超级管理员可以发布公告,公告会显示在软件首页上。

3.2 管理员功能

①登录注销功能:与超级管理员相似进行登录,Shiro会接管账号密码并对账号密码进行核对,核对无误则进入软件后端。

②试卷管理功能:超级管理员可以对试卷进行增删改查的操作,可以查看试卷预生成,并生成excel表格。

③用户管理功能:超级管理员可以对用户进行增删改查的操作,可以生成excel表格。

④历史考试记录管理功能:超级管理员可以对历史记录进行查看并且管理。

⑤修改密码功能:管理员对自身进行密码管理,并可以对指定用户实施一键密码还原。

⑥发布公告功能:超级管理员可以发布公告,公告会显示在软件首页上

3.3 用户功能

①考试功能:用户登录后可以选择试卷进行测试。

②错题查看功能:软件会记录下考试对应的错题。并给出正确答案。

4 系统架构

本系统采用SOA思想搭建,即面向服务的架构,集成了分布式技术中的分布式服务,使用Spring Boot框架进行开发,以Spring Boot框架集成的SSM框架搭建后端管理界面,然后集成分布式技术dubbo+zookeeper,使用Shiro安全框架,以及Maven进行依赖的管理,进行数据库的设计,然后再使用逆向工程生成我们需要的代码[2]。总体分为三层架构,控制层、服务层和数据存储层。

控制层:服务的消费者,当相应的url请求过来,controller控制器就会去调用service公开的接口服务,使用SpringMVC框架实现,以Servlet为核心,负责接收前端数据并将处理好的数据传递给前端。

服务层:处理对应的业务逻辑,被消费者调用,消费者只知道暴露的接口,而不知道真正的实现类,实现类是真正业务逻辑的实现,对数据库进行相对应的操作。

数据存储层:采用主流的Mysql数据库,Mysql是关系型数据库管理系统,使用结构化查询语言也就是SQL语言进行数据库管理。持久化框架使用基于Java的Mybatis框架,其高度可定制化的SQL语句,高效的存储过程以及高级的对象关系映射使得代码编写更加简洁方便。

图1 系统架构

5 技术实现分析

软件采用Dubbo+zookeeper分布式架构管理,Dubbo主要使用RPC实现服务的调用,即客户端和服务端共用一个接口(将接口打成一个jar包,在客户端和服务端引入这个jar包),客户端调用这个接口,服务端实现这个端口的功能,中间的网络通信交给框架去实现,而Zookeeper作为服务注册中心,提供服务的发现和注册功能,监控各个服务之间的状态信息[3]。

通常情况下,D u b b o 节点主要有P r o v i d e r、Consumer、Registry、Monitor、Container等五种角色。Provider主要是服务的提供方,提供服务所需要公开的接口,通过注册服务实现多个服务进行负载均衡,提高服务的并发量,同时避免出现服务的单点故障的发生,提高服务器的容错率。Consumer主要是服务的调用方,调用服务公开的接口,本次技术上的调用采用的是最少活跃调用数负载均衡,相比于其他的负载均衡算法,该算法可以在服务机器上自动地实现性能低的机器所被调用的服务的次数更少,性能高的机器被调用的服务的次数就更高,从而实现整个集群整体性能的稳定。Registry主要是服务的注册中心,通过将多个服务注册到多个服务中心处,提高服务的容错,做到一台服务宕机,整体的服务依旧能继续运行,同时在服务中心处实现,该技术使用Zookeeper实现,通过Zookeeper的心跳检测机制,可以在自定义时间去检测该服务是否处于存活状态,同时在服务下线之后,通过服务的消费端的监测,实现自动的调整服务的负载均衡,避免出现服务的雪崩现象,导致整体的服务宕机,使用Zookeeper技术是为后续的大数据Hadoop框架使用Zookeeper做一致性。Monitor则是统计服务的调用次数和调用时间的监控中心,通过服务的调用次数,动态的进行性能优化,在服务调用次数较少的时间内,进行服务的更新,程序bug的修复。Container是服务运行容器,使用的是Spring容器,是运行服务的提供者,通过Spring容器,将服务动态地放入容器中,用于服务消费者进行调用服务[4]。

Spring Boot提供了特有的启动器机制,并与此同时使用Maven这一管理工具,简化了我们使用第三方jar包的流程。我们只需要通过Maven配置文件导入我们所需的启动器就可以直接在项目中使用而不需要配置。

Spring Boot内置了SpringMVC框架,SpringMVC是一个严格遵循MVC模式的框架,以Servlet为核心,负责接收前端数据并将处理好的数据传递给前端。同时,Spring Boot还集成了Tomcat服务器,开发者在使用时就无需再外部导入服务器软件,所以,Spring Boot是目前开发的首选框架。

该技术全部部署于Linux系统下,通过使用Linux命令和shell脚本语言来实现项目的自动化部署,同时自动收集日志文件,并定期删除日志文件,防止日志文件过多导致服务器的内存溢出,造成服务器的崩溃。

6 数据服务应用

用户在登录框中输入用户名、密码和验证码点击登录,验证码功能使用JS实现,采用前端拦截的措施,使用正则表达式进行用户名和密码的格式限制,验证码无误。前端通过Ajax方式使用post请求向后端传输登录信息。后端的登陆验证则是由shiro框架实现的。后端取到用户名和密码,使用如下代码执行登录验证[5]。

控制层核心代码:

7 数据库设计

数据库采取云端存储的形式,使用WEB架构的、以PHP语言为基础的、对于MySQL的管理工具。它借由Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于,由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,可以在任何地方使用这些程式产生的网页,也就是于远端管理MySQL数据库,方便建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的PHP语法,方便编写网页时所需要的SQL语法正确性。将单一用户表分成用户和管理员表的原因是为了方便节约性能。当进行简单权限管理时,超级管理员管理普通管理员而不会对用户进行权限管理,对于普通用户来说只需要使用功能即可。而用户管理也不需要对用户的权限进行更改,并且唯一具有权限管理的功能的角色只有超级管理员这一角色。其他表的设计都是为了实现对应的功能,也是为了体现数据约束的完整性[6]。

本方案使用MySQL数据库作为唯一数据库,设计8张数据表,分别是章节表(chapter:存放章节信息)、班级表(examclass:存放班级信息)、考卷类型表(examtype:存放试卷类型信息)、用户表(examuser:存放用户的账户信息)、考卷信息表(library:存放试卷信息的数据)、管理员表(manager:记录管理员的各项数据)、试题表(question:存放试题信息)、考试记录表(record:存放考试记录)。

8 结语

至此,本方案的功能基本完善,普通用户和管理员用户的功能也基本完成。它使用的Spring Boot框架,开发便捷,软件功能也相对完善。它在设计之初还有许多不完善的地方,开发过程中遇到的难点重点主要有:①前期layui框架和Spring Boot使用的默认模板引擎的资源冲突问题,它会导致前端页面显示时出现显示错误,使用静态资源过滤解决了这个问题;②显示的渲染问题,由于使用动态的渲染,导致使用编辑信息的功能时会使后端获取的数据无法显示或者显示不完全,解决方法是在渲染表格和弹窗时添加数据,然后等所有数据加载完成后,重载表格和弹窗;③文件上传功能也是重难点之一,复杂文件的上传并且是在同一页面上使用两个并行的表单上传文件,并返回对应路径,遇到的问题是使用Ajax方式上传文件会遇到文件上传失败或者文件获取不到的问题。解决方法就是使用Ajax时严格限制上传格式,并且在后端获取时使用复杂文件对象接收,使用IO流的形式将文件存放到磁盘的固定位置。

开发过程中,本方案的创新点有:①使用Spring Boot框架集成dubbo+zookeeper分布式技术的应用;②使用文件上传功能,使题库丰富且多样化;③使用前端框架layui搭建后端管理模块,页面美观且响应速度快。

猜你喜欢
调用管理员分布式
基于RTDS的分布式光伏并网建模研究
我是小小午餐管理员
我是图书管理员
我是图书管理员
可疑的管理员
核电项目物项调用管理的应用研究
系统虚拟化环境下客户机系统调用信息捕获与分析①
基于预处理MUSIC算法的分布式阵列DOA估计
分布式并联逆变器解耦电流下垂控制技术
家庭分布式储能的发展前景