温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
SpringCloud
山羊
管理
系统
设计
实现
邵毅
本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)基于SpringCloud的微服务山羊孕测管理系统设计与实现邵毅,陈春,彭华(毕节职业技术学院,贵州 毕节 551700)摘要:应用架构从起初单体应用到分布式服务或者微服务应用,技术的不断进步。单体架构代码全部在同一个应用中,易于开发、测试、部署,但随着服务的功能增加使业务之间冗余增加。微服务和分布式服务没有本质的区别,微服务更强调服务的粒度要细,微服务技术具备单独的业务模块部署,它具有可扩展性,高可用存储分布、动态伸缩性。实际业务中,应从业务实际需求出发,选择合理方案。“基于SpringCloud的微服务山羊孕测管理系统”在Java生态中SpringCloud微服务架构开发采用SpringBoot框架,整合Sentinel、Gateway、openfeign、PolarisMesh等组件,依靠微服务各个业务模块之间接口调用与通信。本系统的设计和实现能够提高对孕山羊多方面数据的统一收集管理,降低劳动成本,实现孕山羊信息化管理,助力智慧畜牧。关键词:SpringCloud微服务;SpringBoot框架;山羊孕测中图分类号:TP311文献标识码:A文章编号:1009-3044(2023)04-0046-04开放科学(资源服务)标识码(OSID):随着社会对软件系统的需求逐渐扩增,增加对事物多样化以及提高便捷的管理方式,许多企业开放自身部分产品线独立出来允许开发者的调用或维护工作之中,使得软件开发效率的提升、软件开发生态不断完善。对孕山羊管理方面,项目组在毕节威宁山羊养殖场(艾家坪、卢虹养殖场)调研,了解到养殖场山羊信息管理相对落后,对孕山羊的管理更是处于人工管理的粗放模式,这增加了山羊养殖员工作的社会劳动必要时间。在数量大的山羊群管理上,对山羊的怀孕信息的人工管理显而易见不是完好解决方案。如今软件开发生态的不断完善,提高了各项业务功能的开发与整合,更多精细化程度的管理与流程化。鉴于以上情况,本文提出设计并实现一款基于SpringCloud的微服务山羊孕测管理系统,以保证对养殖场山羊群的孕山羊的数量和质量进行分析和管理,从而改变养殖场孕山羊信息的人工管理的粗放的状态,技术上增加一体化DevOps自动化部署的方式,实现保证系统的稳健与可动态升级维护性。1 山羊孕测管理信息化管理概况项目组调研5家以上毕节威宁养殖场,了解它们目前只能靠人工方式对孕山羊的数量、种类、体温、位置和事件记录进行粗放管理,无法便捷地将以往至现在的数据进行查找与分析,更不用说实现孕羊信息的智能化的报警和辅助决策。通过文献查阅,项目组发现畜牧业已开展了不少信息化管理模式的创新。项目组通过专家访谈等方式,针对试验地养殖场孕山羊的实际情况,整理试验地孕山羊管理的业务流程,以实现对孕羊关键数据统一收集和信息管理、智能报警为目的,根据孕山羊重要指标进行系统整体设计。本系统利用的技术知识领域有物联网、信息管理、大屏数据展示等。最终改善养殖场孕山羊粗放的人工管理,实现孕山羊的智慧养殖和管理。2 SpringCloud的微服务山羊孕测管理系统架构设计并实现基于SpringCloud的微服务山羊孕测管理系统,该系统采用服务器与浏览器(Server/Browser)模式开发方式1,通过maven对第三方jar包版本引入进行管理,将后端业务模块化后,开发出权限管理、山羊管理、大屏管理、文件管理、监控管理5个微服务功能模块与一个前端UI,各个模块之间通过Feign远程调用,在前端UI访问接口时候经过SpringCloudGatway网关中心处理与Oauth2进行路由管理与授权认证。前端采用Vuejs技术2配合ArcoDesign(字节跳动出品)企业级设计系统进行编程实现调用后端收稿日期:2022-08-30基金项目:毕节市科技局2019联合基金项目(名称:基于物联网技术的山羊怀孕检测系统研究;文件编号:毕科发【2020】2号;项目编号:毕科联合字zy(2019)4号)作者简介:邵毅(1982),男,通信作者,副教授,硕士,主要研究方向为计算机技术、软件工程、信息系统开发与项目管理、人工智能、智慧农业;陈春(1998),男,主要研究方向为跨平台应用开发、人工智能、微服务系统开发、云原生开发与运维;彭华(1967-),男,正高级畜牧师,硕士,主要研究方向为肉羊养殖。E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology电脑知识与技术Vol.19,No.4,February202346DOI:10.14004/ki.ckt.2023.0200软件技术本栏目责任编辑:谢媛媛Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)接口,后端采用 SpringBoot 编程实现接口的开发,因考虑高并发情况,将内置的 Tomcat 移除替换为 Undertow。系 统 数 据 库 使 用 开 源MySQL8.0.12利用MyBatisPlus的无侵入、损耗小特性一定程度保护操作各个模块数据的增删改查的安全性特点,通过MyBatisPlus对数据库数据的读写操作3。使用腾讯开源的服务治理平台北极星(简称PolarisMesh)将所有业务模块注册到PolarisMesh注册中心中统一进行服务的发现管理,并对单个微服务模块进行版本标识,通过请求头标识版本进行版本访问限流负载均衡等管理。将可变配置数据放到 PolarisMesh的配置管理功能进行管理在业务模块可动态加载配置内容变更。部署方案中使用 DevOps 自动化的部署,使用KubeSphere构建的面向云原生应用的分布式操作系统,可管理 Kubernetes 与内置的 DevOps(Development和Operations的组合词,是一组过程、方法与系统的统称)进行自动化开发与部署4,在KubeSphere 中监听Git仓库的代码提交后触发DevOps进行CI/CD(CI持续集成、CD持续交付)代码拉取、测试、构建和部署直至生产阶段。管理者可通过各类浏览器访问山羊孕测管理系统UI与后端所提供的功能进行交互,同时接入SpringBootAdmin在内部网络中查看各个微服务模块的运行情况。如图1所示。2.1 SpringBoot框架当前使用Java进行Web开发大部分采用Spring框架进行开发,由于起初Spring+SpirngMVC+MyBatis方案开发导致需要大量的配置,因此为了简化开发,山羊孕测管理系统选择Spring旗下发出SpringBoot框架自动装配,减少配置文件的建立,带来极大方便是对各类生态组件的接入便捷,更加便于开发者专注在业务功能开发和功能的调试。2.2 SpringCloud微服务微服务中每个业务模块都有一个清楚的功能边界,通常说微服务是一种架构模式或风格。每个服务都紧扣一个大业务主题来实施开发,每个服务都能够单独地部署安排到生产的实际环境,通过Gateway网关来统一管理接口的暴露。微服务可以选择独立部署方式和弹性的资源配置。每个子系统服务之间采用轻量的通信机制(HTTP)互相沟通,进行调用完成服务模块间的通信5。本山羊孕测管理系统正是使用了SpringCloud微服务技术。2.3 PolarisMesh治理平台山羊孕测管理系统用到了PolarisMesh治理平台,北极星(PolarisMesh治理平台)是腾讯开源的服务治理平台,内部协同共建的新一代服务发现和治理平台,已整合和替代 L5 等名字服务和负载均衡系统。截至2021年底,超过90%的业务部门使用北极星,接入节点数量超过千万。主要解决了分布式架构、微服务架构中的各项管理(服务、流量、配置、故障容错和可观测性等)的问题,针对不同的技术栈和环境提供服务治理的标准方案和最佳实践。3 基于SpringCloud的微服务山羊孕测管理系统设计3.1 系统需求分析基于调研分析,山羊孕测管理系统的主要业务包括5项“管理”(权限、山羊、文件、监控、大屏)。1)权限管理,可对用户信息、权限、角色等进行管理,主要涉及用户登录状态、角色配置、登录终端类型以及登录状态是否过期;2)山羊管理,对山羊的各项数据如体温、运动量、专家意见内容、位置、名称、编号、监控视频流以及事件记录进行管理;3)文件管理,通过OSS存储将所有以上传媒体资源进行单独存放管理;4)监控管理,通过对服务、缓存等数据进行监控查看服务的状态;5)大屏管理,调用部分系统公共开放接口获取到数据,统一展示到可视化大屏6。3.2 数据库设计数据库采用MySQL关系型数据库建立高可用的集群数据库并对每个服务模块进行建库建表,所有主键均采用分布式ID生成,有效避免不同节点上数据库图1“山羊孕测管理系统”技术架构47本栏目责任编辑:谢媛媛软件技术Computer Knowledge and Technology电脑知识与技术第19卷第4期(2023年2月)第19卷第4期(2023年2月)出现重复ID,为保障数据的可恢复性,所有数据均采用逻辑删除方式有效降低误操作带来数据不可逆。图2为部分代表性的E-R建模关系图。3.2.1 权限管理微服务数据库设计权限管理微服务中涉及的实体包括用户、部门、角色、日志、终端和Token令牌以及用户角色、角色权限关联表,其中E-R建模关系见图2(a)所示。3.2.2 山羊管理微服务数据库设计山羊管理微服务中涉及的实体包括山羊、专家意见、事件记录以及用户的E-R建模关系见图2(b)所示。3.2.3 文件管理微服务数据库设计文件管理微服务仅使用单表存储文件信息(信息主要包括:原文件名、创建时间、随机文件名称、文件格式、文件大小),这样做的目的是便于各个微服务调用。4 SpringCloud的微服务山羊孕测管理系统实现本山羊孕测管理系统,在权限管理、山羊管理、文件系统、大屏管理、监控管理都得到了实现,图3为部分具有代表性的用例和系统实现UI图。4.1 权限管理实现权限管理主要包含5项子管理(用户、角色、部门、终端、令牌),如图3(a)所示。1)用户管理:用户实体的属性主要有6种(名称、角色、昵称、性别、手机号、邮箱),可根据用户实体的属性新增以及修改已有的用户信息,相关代表性代码如下:GetMapping(/details/username)public R user(PathVariableString username)TocCustom condition=newTocCustom();condition.setUsername(username);return R.ok(userService.getOne(new QueryWrapper(condition);2)角色管理:针对每个微服务模块细粒度的功能进行权限的分配是否具备新增、编辑、修改及删除权限。实现效果如图3(d)所示。相关代表性代码如下:PostMappingPreAuthorize(pms.hasPermission(sys_role_add)public R save(Valid RequestBody SysRole sysRole)return R.ok(sysRoleService.save(sysRole);3)部门管理:可进行新增部门、修改已有的部门数据和逻辑删除,针对每个用户进行用户的划分。4)终端管理:使用设计方式中策略模式开发,增加不同终端类型,如App、Web、小程序等进行区分管理,控制终端设备是否支持密码模式、刷新模式、授权码模式、客户端模式、移动端模式以及刷新时效以及令牌时效。终端每次请求经过核心客户端处理逻辑校验后请求相应资源接口,相关终端请求处理代码如下:RequiredArgsConstructorpublic