APP下载

基于微服务架构的智慧泊车系统的设计与实现

2023-08-26李盈马国锋王杰张宇航田新志

电脑知识与技术 2023年19期
关键词:树莓派微服务微信小程序

李盈 马国锋 王杰 张宇航 田新志

关键词:微服务;智慧泊车;树莓派;微信小程序

0 引言

随着社会的发展,越来越多的家庭有了小轿车,开车方便了人们的出行,但是随着城市车辆的增多,城市拥堵、马路停车位杂乱、车位资源紧缺等现状日益严峻, 每次找停车位停车不但麻烦而且费时间,“停车难”问题日益凸显。传统的停车管理模式已经无法满足目前人们对生活品质的追求及汽车行业的发展。为缓解城市交通停车问题,科学合理地使用车位资源可以在一定程度上缓解人们出行对停车的焦虑。

因此,本文提出一款基于微服务架构的智慧泊车系统,利用网络通信技术、软件开发技术及微服务技术构建高效的预约停车系统,提升开车出行的便利性[1]。

1 智慧泊车系统建设需求

近年来,不少学者提出了智慧泊车的架构设计研究。桑博提出了“互联网+”模式下城市智慧停车诱导系统设计研究[2],设计了一套适用于城市智慧停车诱导信息系统。崔景超提出了基于移动物联网的智慧泊车系统设计[3],将系统分为用户界面层、功能层及支撑层。然而他们只提出了思路,没有做具体的架构设计。

智慧泊车系统在功能性方面应提供基本的停车场信息查询、停车场推荐、停车费缴纳、导航、停车位预约等功能。在其管理方面也应抛弃传统停车管理模式方式,走向更加智能化管理与服务的新停车时代[4]。

考虑到项目的开发效率及项目能以较长的服务周期来服务广大用户,开发出来的系统应具有可拓展,扩展的新功能不会对现有的系统产生冲击,同进系统应具备很好的技术兼容性。因此本文采用MSA 来设计智慧泊车系统[5]。

MSA是一种面向微服务架构的框架系统。目前, 较为热门的软件架构是面向服务框架(SOA) 和面向微服务架构(MSA) 。面向服务的架构(SOA) 是一个巨大的服务集合,其中服务之间相互沟通。这种框架设计一个软件系统,使用一个将所有组件视为服务的软件架构,SOA提供的通信通常用于数据传递,它可以与两个或多个服务进行通信,并完成一些活动。面向微服务架构(MSA) 将大量的服务分解成小的服务,也被称为单片机。其中所有的功能都被放置在一个单一的进程中,这种方法用于应用程序,一个应用程序中的不同服务可以互相交互,其每个服务都是一个独立的个体。基于MSA技术开发的智能泊车管理系统,不但能够适应行业需要,同时也能够简化开发周期,提高系统的设计质量和速度,从而减少了管理系统维修复杂性,大大降低了扩展或升级的成本,使智能泊车系统更加便捷、高效、实用[6]。

2 智慧泊车系统设计

2.1 基于微服务的架构设计

在此分析了智能泊车需求,并根据其微服务架构的特性,给出了智能泊车体系的三层架构设计:展现层、服务层和数据层,详细解说如下。

系统按照微服务架构梳理业务逻辑,抽象出公用的部分形成业务服务,包含邮件服务、定位服务、短信服务、车辆管理服务、数据导入导出服务、预约服务、支付服务、导航服务、用户管理服务、停车场管理服务、文件上传下载服务、订单管理服务。微服务,即在功能不变的情况下,将项目分解为多个可管理的微服务,使系统的业务逻辑更清晰,划分更明确。此系统的业务架构可分为三层:数据库、服务层、展现层。在展现层提供了前台功能,客户可以通过终端设备,或者进入微信通过小软件或后端系统发出请求给后台客服,在后台服务接收到请求之后,进行业务的处理并从数据库获取相关数据,最终将数据通过API网关返回给前台服务[7]。基于微服务的总体框架如图1所示。

基础设施层:数据层包括MySQL和本地缓存,主要目的是存储数据。其中MySQL为一种开源的数据库技术,存储的是持久化数据,其次本地缓冲存储的缓冲数据,可以加快数据的存储与取出。

服务层:服务层根据微服务架构思想,将整个服务分为各个微服务,缓解了某个服务因访问量过大而崩溃的压力,技术方面主要使用Spring Boot 和Vue。服务层又可细分为持久层、业务逻辑层、微服务层及控制层等。1) 持久层:系统使用MyBatis持久化框架访问数据库,提升了数据访问的性能和稳定性;2) 业务逻辑层:将核心业务需求拆分为简单具体的业务逻辑服务,如邮件服务、短信服务、车辆管理服务等。同时,这些服务可以使用Dubbo框架形成微服务层,并把这些服务注入微服务层的服务注册中心;3) 服务层: 已注册部署微服务,并使用Dubbo微业务框架,将系统各个服务注册到ZooKeeper注册中心,并在dubbo管理控制台管理各个微服务;4) 制层:负责读取展现层的数据,控制用户的输入,并调用业务逻辑层的方法。

展现层:系统的前端主要分为微信小程序和后台管理系统,主要基于Vue和Element UI等先进技术开发。Vue是一套构建用户界面的渐进式框架,采用自底向上的设计,简便易上手。Element UI是一个Vue2.0的桌面端软件库,了解产品设计指导,并协助设计师打造逻辑简洁清晰、架构科学合理且有效易用的产品。

2.2 基于树莓派的嵌入式系统设计

嵌入式系统的用途主要是为了实现线下停车功能,用户根据小程序导航到停车目的地之后,系统通过识别用户的停车二维码获取到用户的停车信息并将信息发送给后台,后台进行校验并返回结果,从而实现用户线下停车。当用户在小程序完成订单获取到停车二维码并通过导航到达指定停车位后,将二维码展示出来,树莓派进行识别二维码,获取到二维码中的信息后,再将二维码中的信息发送给后台API接口,由后台进行解析返回结果,达到对车位档杆的控制,最终用户可在微信小程序端查看停车信息(包含具体停车时刻、停车时长、收费情况等)。

1) 环境搭建

利用树莓派3B+opencv+pyzbar进行二维码识别,树莓派3B搭载Debain 10(Buster) 系统,首先需在树莓派上安装OpenCV计算机视觉领域视频和图像处理库,并安装Python3的pyzbar,然后通过USB接口,将树莓派3B与摄像头连接好,最后利用Python编写脚本(Camera.py) 实现实时顯示视频。

2) 二维码识别

采用视频采集模块对二维码进行捕捉,然后将捕捉到的图像,传输树莓派3B中,通过算法与pyzbar的结合对采集到二维码图像信息进行解码与转换。即使用pyzbar对摄像头捕获到的二维码进行解析,并将解析的数据结果通过HTTP协议返回给后台服务,后台系统进行校验并返回结果,以达到对车位档杆的控制。线下用户可使用二维码进行停车位的验证与使用。

2.3 智慧泊车系统功能设计

基于微服务架构的智慧泊车系统,线上采用微信小程序作为服务入口,以移动端和PC端浏览器作为服务的后台管理系统,线下采用百度AI的二维码解析以及车牌识别技术,通过小程序预约将数据上传至数据库,嵌入式系统通过接口获取信息进行检验,以达到对车位档杆的控制。其次为避免某个服务因访问量过大而崩溃的情况,此系统采用微服务架构思想,将项目拆分为各个服务,服务之间通过HTTP协议通信,整个系统对用户数据进行加密存储和传输,安全可靠。具体功能设计如图2所示。

3 智慧泊车系统的实现

3.1 基于移动终端的微信小程序系统

用户是此系统的最终使用者,程序操作是否便捷与用户的体验紧密相关。按照相关设计,为用户设计一款易操作的智慧泊车微信小程序,其优点为:内存小、运行快、操作便利快捷。基本功能为:用户在小程序输入需停车的目的地后,后台系统会实时推送目的地附近的停车场及车位信息并展示在小程序页面,其次根据实时停车位情况,用户可以预约空闲的停车位并填写预约信息,预约结束后,可通过导航前往目的地停车场,扫码或对车牌校验后进入停车,最后用户可在小程序支付停车费用。

移动终端系统采用微信开发者工具进行小程序的开发,运用WXML、WXSS、JavaScript实现对小程序基本页面的开发,其次微信小程序通过调用API来获取后台提供的数据,数据格式为Json,后台采用高级语言Java 并由Spring Boot 整合Spring Framework、Spring MVC、MyBatis、Redis搭建。

根据用户、业务及功能需求对微信小程序客户端的主要功能模块做了详细设计并制作页面设计,包括主界面、订单页面、个人中心页面、导航订单页面。

1) 主界面(首页),图3所示为客户端的首页面,包含微信小程序基本的功能模块。用户打开智慧泊车小程序进入首页,在首页用户可以进行车辆信息的查看、停车场车位的预约、停车缴费、目的地的导航等。

2) 订单,图4展示的为订单页面,用户提交的订单均可在此查看。

3) 个人中心(我的)页面,图5为个人中心界面,包含用户的基本信息预约历史和账单。

4) 导航界面,如图6,用户在首页点击导航并通过输入目的地,获取目的地附件停车场信息,根据导航开往停车位置。

3.2 停车场PC 管理客户端

停车场管理员为此后台管理客户端的最终使用者,在此后台管理系统中主要包含停车场管理、订单管理、系统管理以及统计分析。

1) 停车场管理,包含车位管理与信息管理。在此管理员可以查看各个停车场的信息,以及车位状态信息。车位状态(是否空闲),即对硬件返回的数据及时处理,并实时更新车位状态。

2) 订单管理,包含预约订单管理和预约订单审批。即实现各车位的预订单的查询、删除、驳回等功能和实现预约订单的自动审批功能(可更改为手动审批)。

3) 系统管理,包括菜单管理、日志管理、用户管理、公告管理、数据流监控。即在此管理员可以查看停车用户的信息、日志及公告。

4) 统计分析,系统使用算法对数据库中存储的停车信息进行分析,并制作出直观的分析结果。管理员可根据系统所分析的结果,判断当前停车场在哪些方面是否需要改进。

后台管理系统的开发后台由Spring Boot 整合Spring Framework、Spring MVC、MyBatis、Redis 搭建,前台由ElementUI和Vue.js搭建,数据库使用MySQL,二维码解析使用百度AI二维码解析技术。

从后台用户、服务器以及数据库方面对后台管理系统架构做了分析设计,根据用户需求及业务逻辑对后台管理系统中的主要功能做了详细设计及页面设计,PC端主要页面包括后台管理系统登录页面和后台管理系统主界面,主要功能在页面中显示出来如图7所示的主界面。

4 结束语

该系统设计的宗旨是如何使现有的停车场优化使用,以此达到减轻城市负担的目的,缓解居民因找不到停车场,而随处停车等现象。设计的基于微服务架构的智慧泊车系统,线上采用微信小程序作为服务入口,以移动端和PC端浏览器作为服务的后台管理系统,线下采用百度AI的二维码解析以及车牌识别技术。针对此系统,本文首先介绍了智能泊车系统建设背景、需求特征,并剖析了SOA(面向服务架构)和MSA (面向微服务架构)的设计差异与优点,同时阐述了微服务架构的设计理念以及引用到智能泊车系统中可能产生的优势,然后又详尽阐述了基于微服务架构的智能泊车系统详细设计过程與实现。

猜你喜欢

树莓派微服务微信小程序
当图书馆遇上微信小程序
微信公众平台在医院图书馆的应用现状调查
智能安全防盗探测小车
从单一模式系统架构往微服务架构迁移转化技术研究
基于嵌入式技术的农村医疗系统设计