SCI论文(www.lunwensci.com)
摘 要:实验室是实践教学的重要场所,科学研究的基地。仪器设备的正常运行是实践教学和科学研究开展的先决条件, 对于设备的故障能够做到及时发现及时处理好就变得至关重要。采用微服务的设计理论,先进的 Docker 容器和星际文件系统 (IPFS)技术,构建实验室设备故障报修平台,运用数字化的管理手段加强设备报修的管理,提高设备的正常运行时间,减少 故障等待时间,更好地赋能实践教学和科学研究,进一步提升人才培养的质量和科技发展的水平。
关键词:微服务架构,故障报修,实验设备,Docker,IPFS
Design and Implementation of Equipment Fault Reporting and Repair Platform Based on Micro-service +IPFS
MA Lilin1. LI Hong2
(1.Information Technology Center, Jiujiang University, Jiujiang Jiangxi 332005;
2.College of Science, Jiujiang University, Jiujiang Jiangxi 332005)
【Abstract】:Laboratory is an important place for practical teaching and a base for scientific research. The normal operation of instruments and equipment is a prerequisite for practical teaching and scientific research. It is very important to find and deal with the equipment faults in time. The design theory of micro-service, advanced Docker container and IPFS technology are adopted to build a failure reporting and repair platform for laboratory equipment. Digital management means are used to strengthen the management of equipment reporting and repair, improve the normal operation time of equipment, reduce the failure waiting time, and better enable practical teaching and scientific research. Further improve the quality of personnel training and the level of scientific and technological development.
【Key words】:micro-servicearchitecture;fault repair;laboratory equipment;Docker;IPFS
0 引言
实验室是实践教学的重要场所,科学研究的基地, 对人才的培养和科技的发展起着非常重要的作用。仪器 设备的正常运行是实践教学、科研活动开展的重要保 障,及时发现问题及时处理就变的至关重要。但当前大 部分实验室主要关注仪器设备的采购,往往忽略了对仪 器设备使用过程中遇到的问题以及仪器设备的故障报修 进行数字化管理,还停留在电话报修、口头报修,手工 管理报修问题的阶段,这给实验室的管理工作带来了诸 多痛点 :(1)同一故障多人或多次报修,导致故障信息 冗余 ;(2)处理问题或仪器设备维修的经验还是采用传 帮带的方式来传承,无法形成有价值的知识库 ;(3)有关仪器设备使用或维修的文档自己编写自己管理,没有 形成统一的标准化、规范化管理 ;(4)维修任务缺乏闭 环管理,既不能及时了解到维修进度,也不能及时将故 障的处理情况告诉报修人 ;(5)维修人员的工作量统 计费时费力,有时还不能及时且准确,导致维修人员的 数量只能根据设备的数量来确定,而不是根据工作量来 确定,同时,也不能很好地对维修人员进行业绩评价 ; (6) 由于报修需经多人或多个部门,或维修人和报修人沟 通不畅,这些因素都会导致维修的效率不高 ;(7)由于以 上的综合原因,导致师生报修意识不强,仪器设备损坏隐 瞒率高,管理部门无法及时获知设备故障信息,及时进 行维修,保障设备的正常运行。面对以上问题,亟需运用数字化的手段来加强实验室设备故障报修的管理。
文献 [1-3] 对设备故障报修做了简单、粗略的研 究,但缺乏整体性、完整性,以及受制于当时的技术条 件,平台所采用的系统架构不够先进,不能很好的满足 系统的伸缩性、扩展性。微服务架构具有独立部署、动 态扩展、快速迭代等优势,可以快速构建高可部署性、 高可扩展性的应用。因此,提出建立基于微服务架构和 IPFS 的实验室设备故障报修的信息化管理平台,对设 备故障报修进行数字化管理,促进实验室管理水平的提 升,赋能实践教学与科学研究,增强学生的创新能力和 产出更多科研成果,进一步提升学校的办学水平。
1 相关技术
1.1 微服务架构
微服务架构如图 1 所示,是一种新兴的软件架构模 式, 于 2012 年由James Lewis 和 Martin Fowler 提出 [4]。 采用微服务架构的应用程序以业务模块为界限,把应用 系统拆分成一个个小的独立组件,即微服务。每个微服 务可以根据自身的特点遵循高内聚、低耦合的原则,使用 不同的编程语言、框架、平台和数据库实现,并且可以单 独开发、部署。每个微服务运行在自己的进程中, 微服务 之间通过轻量级的 HTTP API 方式进行通讯 [5.6]。微服务 架构相比传统单体架构具有以下几个方面的优点 [7] :(1) 由于微服务一般是单独部署,针对微服务的修改或增加 新的功能不会涉及到应用程序其他功能的更新 ;(2)由 于微服务之间可使用不同的技术栈,可以根据微服务自 身的特点选择适合的技术,充分发挥技术的优势,提升 微服务的性能等技术指标 ;(3)由于微服务可以独立伸 缩,可以避免由于单个微服务面临高负载而不得不扩展 整个应用程序而造成的资源浪费 ;(4)由于微服务是单 独部署,每个微服务相互隔离,单个微服务出现的故障 不会对其他微服务的正常运行产生较大的影响,更可以 有效防止因级联失败导致整个系统崩溃。
1.2 Docker
Docker 是 dotCloud 开源的一个基于 LXC 的高级 应用容器引擎,可以把应用程序和其所有依赖项打包生 成一个具有可移植性的 Image 镜像文件,能够部署到任何流行的 Linux 或 Windows 机器上,并以相同的 方式运行打包好的应用。Docker 是一个标准的运行环 境,能够提供可持续交付的能力,通过一个镜像文件可 以创建多个 Docker 容器,可以实现应用的快速、集群 式部署,很好地解决传统应用部署方式在面对软件用户 多、规模大、复杂度高时而难以解决的软件部署与伸缩 问题。具有文件系统隔离、资源隔离、网络隔离等特 点。同时,与虚拟机相比,容器运行在宿主机操作系统 之上,不需要自己的操作系统,只是包装了一个直接与 内核进行交互的 UNIX 进程来请求使用资源,具有启动 时间短、占用空间少、性能开销少等优点。
1.3 IPFS
星际文件系统(InterPlanetary File System,IPFS) 是一个开源项目,融合了分布式哈希表(Distributed Hash Tables (DHTs))、BitTorrent、版本控制系统 Git、 自认证文件系统(Self-Certified Filesystems - SFS) 与 区块链等技术的文件存储和内容分发网络传输协议。同 时,它也是一个分布式文件系统协议,在分布式系统中 定义了文件如何存储、索引和传输。在 IPFS 的文件系 统中,每个文件根据内容生成一个哈希值,通过哈希值 来标识文件,而不是通过文件保存位置来标识,并根据 这个哈希值来进行文件索引,由“地址寻址”改为“内 容寻址”。在存储上,文件被分割成了多个片段,存储 在网络中各个节点上,相同内容的文件在系统中只会存 储一份,具有分布式、去中心化、快速存取、高吞吐 量、文件唯一性存储等显著特性。
2 系统平台架构及功能结构设计
2.1 系统平台架构设计
平台的整体架构基于多层架构体系,在应用系统的 功能实现上基于微服务的设计理念,对应用系统的功能 以业务边界为界线划分为多个微服务。同时为了加强对 微服务的统一管理,引入了注册中心、配置中心和监控 中心对微服务进行注册与查询,对相关应用配置信息 进行集中配置,实时监测微服务的运行情况,及时发 现问题及时处理。在数据处理方面,遵循数据与业务 分离的原则,对数据的存储与访问进行多层划分,分 为 DB Layer、Entity Layer、Dao Layer 和 Business Layer,分别负责数据的存储,数据实体关系的映射, 数据的访问,以及业务逻辑的处理。最后为了加强应用 程序客户端对微服务的访问,在应用程序客户端与微服 务之间增加了一个应用程序网关,负责处理各类访问。 整个系统平台的具体体系架构如图 2 所示。
(1)微服务层 :包括微服务的开发、管理、微服务
网关等功能。平台按照业务的边界来进行功能划分,遵 照微服务的开发原则,高内聚、低耦合,把平台的功能 划分为一个个小的微服务,比如权限服务、二维码服务、 知识管理服务和故障申报服务等。每个微服务选择契合 的技术路线,比如开发语言、框架、数据库等,独立设 计与开发。开发好的微服务采用 Docker 镜像技术把软 件包及其所有的依赖打包成 Image 镜像文件,然后在单 独的服务器上部署为 Docker 容器,或在一台服务器上 部署多个 Docker 容器。部署好的微服务在 Consul[8.9] 注册服务中心进行服务注册,提供微服务对外的访问地 址。平台内的微服务或平台外的应用需要调用微服务 时,先通过微服务网关进行访问的合法性校验和鉴权, 只有合法及有权限的访问才可以进行微服务的调用。当 访问量太大,或瞬间访问量激增时,会及时自动启用限 流或熔断策略来进行限流,或利用 Docker 的优点,快 速对有压力的微服务进行横向扩展,降低平台的访问压 力,保障平台的正常运行。
(2)数据层 :总的来说分为数据访问控制和数据存 取。数据访问控制按照 Entity Layer、Dao Layer 和 Business Layer 依次进行设计与开发。数据存取分为 传统的关系数据库及 IPFS。关系型数据库主要用来存 取像故障报修管理、巡检管理、备件管理等产生的一些 结构化的数据。对于在设备维护过程中产生的有价值的 技术文档(如 Word、PPT)或视频等文件则通过 IPFS 来管理,每个用户通过 IPFS 节点来上传技术文档或视频 文件, IPFS 服务会对每一个上传的文件生成一个哈希值,然后把文件分割成多个片段,分别存在不同的 IPFS 节点 上。并可根据生成的哈希值来进行文件重复性检测,保 障文件的唯一性存储,避免重复,从而节约空间。
2.2 系统的整体功能结构与功能模块设计
实验室设备故障报修平台是以设备故障维修任务为 驱动力的平台,平台所有的功能都围绕着故障维修展 开。主要考虑设备故障报修、设备巡检、工单处理的方 便性,以及方便管理人员对实验室设备的全局了解,掌 握第一手真实的数据,为科学决策提供坚实的数据支 撑。实验室设备故障报修平台具体包括报修管理、统计 分析、个性化统计、备件管理、巡检管理、二维码管 理、设备管理、用户管理等功能模块,如图 3 所示。
下面对平台的部分功能详细介绍如下 :
(1) 巡检管理 :对实验室和设备制定巡检计划, 定 时对实验室和设备进行巡检,检查实验室的环境状况, 设备的运行状态等,通过 App、微信小程序或扫设备上 的二维码等方式实时填写巡检报告并由巡检员签名,以 备后期实验室检查。同时也可以在巡检过程中及时发现 问题及时处理,保障实验室和设备的安全、稳定运行。 巡检可以分为设备巡检、区域巡检,根据不同的巡检对 象制定有针对性的巡检计划。
(2)知识库管理 :设备在使用和维修过程中会积累 大量的设备使用方式、方法,设备维修经验和疑难问题 解决方法等有价值的知识。鼓励技术人员针对每一个设 备的具体使用方法,维修经验等编写技术文档或制作相 关讲解视频,分类归纳整理,为每个技术资料设置检索关键词,对技术资料基本信息进行保存的同时,把原始 文件通过 IPFS 技术存储在 IPFS 集群中,通过内容检 索,也可以避免文件的重复存取。并根据技术资料编写 或制作的质量加以评价,并纳入考核体系,促进员工学 习的积极性,不断提高技术水平和服务能力。
(3) 二维码管理 :利用二维码技术, 以及基于移动 终端现在得到了普及使用的情况,制作包括设备基本信 息的二维码,故障申报二维码,设备巡检或区域巡检二 维码,并打印张贴到相关设备上,供设备使用人员或技 术人员扫码及时了解设备的基本信息,在线填写故障申 报单、巡检报告。
(4)报修管理 :设备故障报修平台是以维修任务为 驱动力的信息化平台,平台的功能都是围绕任务的处理 为出发点。设备使用人员发现故障后,及时填写故障维 修单并提交实验室管理员,实验室管理员派人确认设备 故障,根据系统制定的任务分配策略,采取人工分配任 务还是系统根据维修人员的技术水平、专业范围和忙碌 程度等因素进行自动分配。技术人员接单后,根据能力 水平直接维修,或采取更换配件维修,或转给维修公司 进行维修等处理方式完成设备的维修工作。如果是转给 维修公司,可以一次性转给多个维修公司,每个维修公 司根据设备故障情况提出维修报价单,部门领导从维修 报价单中选择一个合适的报价单,然后由该公司负责设 备的具体维修工作。具体包括报修申报、报修确认、人 工派单、自动派单、工单重新指派、工单接单、取消工 单、工单完工、工单报告等功能。
(5) 消息中心 :即平台的即时消息处理中心, 把平 台实时生成的工作任务通过消息中心及时发到技术人 员、管理人员和报修人员等人的微信、QQ、钉钉等大 众流行的即时工具上,以便相关人员及时了解到工作动 态,登录平台及时跟踪处理。
(6)统计分析 :分为总体的统计分析和个性化的统 计。总体的统计分析主要是对一些事关全局的信息进行 分类统计,以便管理人员从整体角度了解实验室设备的 运行情况,如报修率、报修变化趋势、工单数量等数 据,并根据真实的、具体的数据做出科学决策。具体包 括设备故障情况分析、故障处理情况分析、故障类型统 计、设备维保到期统计、按照今日、本周、本月和本年 的工单统计等功能。个性化统计主要是以用户为中心的 设计理念体现,方便技术人员、管理人员等及时了解有 关的工作任务动态,及时跟进处理。具体包括我参与的 工单、我未处理的工单、我已完成的工单、我待确认的 报修、我已确认的报修、我待巡检的计划和我已完成的 巡检计划等功能。
(7)权限管理 :平台采用基于 RABC 的权限控制模 型,分别对不同的人员分配不同的角色,不同的角色对 应不同的权限范围,每个角色功能互相独立。平台主要 包括部门领导、管理员、技术员、巡检员等角色。为了 便于用户在即时通讯工具上收到消息能够立即登录平台, 平台实现通过第三方平台账号验证登录的快捷方式。
3 系统平台关键功能实现
根据微服务实现原理,以及对微服务框架和相关技术研究的基础上,平台的实现基于 Spring 框架。在 微服务的实现上采用 Spring Cloud[10-13]、Spring Boot、 Spring Cloud Consul 等系列组件,数据的访问、存储 采用 MyBatis[14.15], 微服务的注册与查询采用 Consul。 下面对平台的关键功能实现进行详细阐述,主要包括微 服务的实现方法、故障报修单的处理流程等。
3.1 报修单处理流程
设备故障报修单的处理是设备故障报修平台中的核 心功能,是驱动整个平台运转的内在动力,贯穿于整个 平台,平台其他功能都围绕报修单而进行设计。实验设 备使用人员在日常的使用过程中,发现设备故障,通过 扫描设备上张贴的故障报修二维码,填写故障信息及拍 照,并及时提交报修单。设备管理人员在收到故障报修 单消息时,派出技术人进行故障核实。如果故障属实, 技术人员根据自己的能力情况决定是自己处理,还是转 交给第三方维修公司。对于技术人员自己处理的故障, 如果需要更换备件,则提出备件申请。备件管理人员根 据实际情况审批备件申请,并根据备件库存情况,及时 提出备件采购申请,经部门领导同意后进行采购。技术 人员拿到备件后进行维修处理,处理完结后,修改报修 单的状态。平台给报修人员发送消息,提醒故障已处理 完毕。对于需要第三方维修公司处理的报修单,第三方 公司先提出维修报价单,经部门领导选中维修公司后, 交由维修公司处理,同时修改报修单的状态信息。整个报修单的处理流程如图 4 所示。
3.2 文件资料存储设计
在设备的日常维护过程中,技术人员会遇到各种各 样的问题,并针对遇到的问题采取具体问题具体分析的 方法,找到适合的解决方案。在相关激励措施、考核要 求以及方便将来工作的需要等多种因素的影响下,技术 人员把解决问题的方法,经验的总结等一一记录下来, 形成一系列的文档、视频等技术资料,并加以保存。经 过长时间的记录,积累了大量有价值的知识文件资料。 为了发挥这些资料的最大作用,本文采用 IPFS 技术对 知识文件资料进行存取,以解决传统方式在上传、下载 速度、长久保存、文件去重等方面的不足。文件在上传 到 IPFS 平台上时,首先会将文件切片,切割成 256KB 大小的文件。切片之后的文件进行 SHA-256 运算,选取运算结果的 0 ~ 31 位,根据 BASE58 对选取结果编码, 然后在运算结果前追加 Qm,最后形成 46 位 HASH 值,作为文件的指纹信息,具有唯一性。之后循环调用 (MerkleDAG.Add) 方法构建文件 MerkleDAG, 用来 存储文件。对于文件的修改,则采用 GIT 技术来管理文 件不同版本之间的连接,以达到节约空间的目的。IPFS 平台上的文件存储结构图如图 5 所示。文件在 IPFS 平 台中以 IPFS 对象(IPFS OBJECT) 的形式存在, 对象 包含两部分, DATA 和 LINK。DATA 表示对象的数据部 分, LINK 表示对象的分片连接。当一个文件大小超过 256K 时,就会分为多个片段来存储。
3.3 微服务实现方法
本文以故障报修单为例详细阐述微服务的实现 方法,主要包括微服务创建、微服务注册和微服务调 用等过程。微服务的实现基于 MVC 的设计理念,采 用 MyBatis 数据持久性框架,通过定义 POJO 对象 MaintenanceForm 建立与数据库实体 的联 系, 创建 MaintenanceFormDao 类实现数据库数据访问的接口, 创建 MaintenanceFormService 类完成仪器设备服务所 涉业务的逻辑处理, 并通过 MaintenanceFormDao 类提 供的数据访问接口实现相关数据的持久化操作及相关数 据检索。最后通过创建 MaintenanceFormController 类来提供服务,服务对外提供的接口基于 HTTP 协议, 采用 RESTFUL 式风格。
3.3.1 创建微服务
微服务的创建主要通过创建 Controller 类来实现。在 Controller 类中类名的前面添加注解 @RestController, 实现 @Controller+@ResponseBody 组合的功能, 标注该类 能够对外提供 RESTFUL WEB 服务,并且服务接口返回 的对象数据直接以JSON 或 XML 形式,写入 HTTP 响应 (Response) 中。在 Controller 类的类体中添加各类方法, 同时,在每个方法的前面添加 @RequestMapping 注解, 实现和请求的映射,具体实现如图 6 所示。
3.3.2 注册微服务
微服务注册主要是指把与微服务相关的信息存储在 一个服务注册中心,由服务注册中心对所有的微服务进 行集中统一管理,对外提供统一的服务名称供外部应用 程序查询,然后调用,尤其是一个微服务多个实例部署 情况下的微服务调用。平台采用 Consul 作为服务注册 中心,在微服务启动的时候,主动向服务注册中心报告 自己的 IP 和端口。首先在微服务工程项目中创建系统 配置文件,在配置文件中填写微服务的名称及端口号, 同时填写微服务注册中心的服务器 IP 地址及端口号, 如 spring.cloud.consul.host 和 spring.cloud.consul. port, 并注明微服务在服务注册中心对外提供服务的服 务名称, 如 fault-repair-service。然后再创建一个启动类 FaultRepairServiceProviderApplication, 在 Fault RepairServiceProviderApplication 类 的前面增加 @ SpringBootApplication 和 @EnableDiscoveryClient 注解,用于标识该类是一个启动类和支持服务发现。具 体实现如图 7 所示。
3.3.3 微服务调用
微服务注册的目的是为了平台更好地对外提供服务, 微服务调用则是根据服务名称在服务注册中心找到提供服 务的微服务,并返回具体的接口地址,尤其是一个服务多 个实例部署的情况。平台基于 Spring 系列技术进行开 发, 在服务调用过程中主要用到 LoadBalancerClien和 RestTemplate 两个类。LoadBalancerClien 类完成 负载均衡,通过 Choose 方法,根据传入的服务名称, 找到服务的一个实例,然后通过服务的实例获得服务所 在服务器的 IP 地址及端口号, 再通过 RestTemplate 的 GetForObject 方法调用服务提供的接口,接口的地 址由服务所在服务器的 IP 地址和端口号加服务地址构 成。具体实现如图 8 所示。
4 结语
本文采用微服务的设计理念改进系统的架构体 系,实现了以微服务框架作为平台的系统框架 ;利用 Docker 容器化的方式对微服务进行部署,实现了微服 务的快速部署 ;运用 IPFS 对技术文档、视频进行分布 式存储,实现了技术资源的分发及快速获取,同时大大 节省了存储空间。当有新的需求来临时,能够通过修改 某个服务或是增加新的服务来快速交付。当某个服务遇 到高并发而要求横向扩展时,能够快速通过部署多个该 服务实例来解决,而不需要对整个软件系统进行多部 署,从而可以节省资源,加快响应需求的速度。基于微 服务信息平台的实现可以增强平台的适应性,改善用户 体验,提高设备正常运行的保障能力,提升管理效能 ; 赋能实践教学与科研,提高实践教学质量与科研产出, 为在新时代实验室的信息化建设提供了一种新的思路。
参考文献
[1] 罗文煜,孙逊,陆侃.基于微信平台的实训室故障报修系统开 发与应用[J].苏州市职业大学学报,2019.30(1):21-26.
[2] 李增本.基于微信小程序的多媒体设备故障报修系统的设计 [J].信息技术与信息化,2018(9):56-59.
[3] 连钦兴,盘炜生,蔡文伟.基于微信小程序的校园网故障报修 系统设计[J].河南科技,2021.40(32):13-15.
[4] FOWLER M,LEWIS J.Microservices a Definition of this New Architectural Term[M].O'Reilly Media,Inc.2018.
[5] 于曼,黄凯,张翔.基于微服务架构的ETC系统设计[J].计算机 科学,2020.47(A1):643-647.
[6] 宋海云.基于微服务的交互式应用服务端设计与实现[D].北 京:北京邮电大学,2018.
[7] 李鹏,程建远.基于微服务的地质保障系统架构与应用[J].煤 田地质与勘探,2022.50(1):118-127.
[8] 张宁溪,朱晓民.基于Docker、Swarm、Consul与Nginx 构建高可用和可扩展Web服务框架的方法[J].电信技术,2016 (11):21-25.
[9] 冯志勇,徐砚伟,薛霄,等.微服务技术发展的现状与展望[J]. 计算机研究与发展,2020.57(5):1103-1122.
[10] 王晨.基于微服务架构的电商平台的设计与实现[D].西安: 西安电子科技大学,2021.
[11] 王浩键.基于微服务的运营商设备管理系统设计与实现 [D].西安:西安电子科技大学,2021.
[12] 刘罡.基于微服务架构的汽车经销商管理系统[J].计算机应 用,2018.38(A2):243-249.
[13] 卢德鹏.基于微服务架构的智慧园区管理平台设计与实现 [D].北京:北京邮电大学,2021.
[14] 叶茂林,余发江.SDBatis:基于MyBatis和CBAC的数据库 应用访问控制[J].武汉大学学报(理学版),2022.68(1):57-64. [15] 颜士博.基于微服务架构的银行信息动态系统的设计与实 现[D].西安:西安电子科技大学,2021.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/55883.html