APP下载

基于SpringBoot微服务架构的河长制信息管理系统设计与实现

2018-05-14舒德伟许后磊陈亚军周洪波

数字技术与应用 2018年2期
关键词:河长制

舒德伟 许后磊 陈亚军 周洪波

摘要:微服务架构模式(Microservices Architecture Pattern)目前越来越被大众所接受,其目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务独成体系单独发布,也可以整合发布,每个服务之间都可以得到很好的局部改良。目前微服务在大公司的应用也非常广泛,例如亚马逊、Google、Facebook,Alibaba等,伴随移动互联网信息化的飞速发展,不同系统之间的数据服务会越来越多,系统之间的封闭性造成了大量重复开发工作,采用微服务架构可以很好的解决这个问题。河长制信息管理系统是在党中央全面推行河长制的大背景下,服务于地方政府,用于管理各地河渠湖库的信息管理系统,基于此考虑,在构建河长制信息管理系统过程中采用Spring Boot微服务架构的设计与研究是有必要和参考意义的。

关键词:河长制;微服务架构;Spring Boot

中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2018)02-0144-03

随着计算机技术的快速发展,Web开发技术和体系发生了深刻的变化,从早期的HTML静态网页到CGI的引入,再从web编程的脚本语言PHP/ASP/JSP,到今天大家耳熟能详的J2EE/.Net,伴随着不同系统之间的数据服务的越来越多,使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难;许多企业在SOA投资中得到的回报有限,SOA可以通过标准化服务接口实现能力的重用,但对于快速变化的需求,受到整体式应用的限制,有时候显得力不从心;随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式,伴随着上述问题的不断凸出,微服务架构的思想应运而生,微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力,微服务架构的思考是从与整体应用对比而产生的。图1中很好的描述了整体应用和微服务之间的区别。

1 微服务架构

1.1 微服务架构综述

微服务架构(Microservice Architect)是一种架构模式,它提倡将单块架构的应用划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。

1.2 微服务架构的优点

(1)微服务通过分解巨大单体式应用为多个服务方法解决了复杂性问题。在功能不变的情况下,应用被分解为多个可管理的分支或服务。每个服务都有一个用RPC-或者消息驱动API定义清楚的边界。微服务架构模式给采用单体式编码方式很难实现的功能提供了模块化的解决方案,由此,单个服务很容易开发、理解和维护。

(2)这种架构使得每个服务都可以有专门开发团队来开发。开发者可以自由选择开发技术,提供API服務。当然,许多公司试图避免混乱,只提供某些技术选择。然后,这种自由意味着开发者不需要被迫使用某项目开始时采用的过时技术,他们可以选择现在的技术。甚至于,因为服务都是相对简单,即使用现在技术重写以前代码也不是很困难的事情。

(3)微服务架构模式是每个微服务独立的部署。开发者不再需要协调其它服务部署对本服务的影响。这种改变可以加快部署速度。UI团队可以采用AB测试,快速的部署变化。微服务架构模式使得持续化部署成为可能。

(4)微服务架构模式使得每个服务独立扩展。你可以根据每个服务的规模来部署满足需求的规模。甚至于,你可以使用更适合于服务资源需求的硬件。比如,你可以在EC2 Compute Optimized instances上部署CPU敏感的服务,而在EC2 memory-optimized instances上部署内存数据库。

1.3 微服务架构的缺点

(1)微服务应用是分布式系统,由此会带来固有的复杂性。开发者需要在RPC或者消息传递之间选择并完成进程间通讯机制。更甚于,他们必须写代码来处理消息传递中速度过慢或者不可用等局部失效问题。当然这并不是什么难事,但相对于单体式应用中通过语言层级的方法或者进程调用,微服务下这种技术显得更复杂一些。

(2)应用系统中同时给多个业务分主体更新消息很普遍。这种交易对于单体式应用来说很容易,因为只有一个数据库。在微服务架构应用中,需要更新不同服务所使用的不同的数据库。使用分布式交易并不一定是好的选择,不仅仅是因为CAP理论,还因为今天高扩展性的NoSQL数据库和消息传递中间件并不支持这一需求。最终你不得不使用一个最终一致性的方法,从而对开发者提出了更高的要求和挑战。

2 Spring Boot分析

Spring Boot是在Spring4.0的基础上产生的,其中“Boot”的意思就是“引导”,意在简化开发模式,使开发者快速开发出基于Spring的应用。Spring Boot并不是Spring官方的框架模式,而是由Pivotal团队二次开发并提供。它的设计目的就是为了简化Spring应用的初始搭建以及开发过程。Spring Boot的出现使得开发人员不再拘泥于繁琐的模板化的配置,可以快速搭建应用。该框架据有以下特点:

(1)自动配置Spring;不需要配置Spring的数据源、连接池、事务通知等类加载初始化等信息,Spring Boot会自动将这些信息配置完毕。配置过程如图2所示。

(2)Spring Boot将原有的XML配置改为Java配置,将bean注入改为使用注解注入的方式(@Autowire),并将多个xml、properties配置浓缩在一个appliaction.yml配置文件中。

(3)简化Maven配置,整合常用依赖;Spring Boot的依赖整合了常用的开发库,例如spring-webmvc、jackson-json、validation-api和tomcat等。当我们引入核心依赖时,Spring Boot会自引入其他依赖。开发人员不用手动添加web相关的jar包依赖,只需要引入Spring Boot为我们提供的核心依赖即可。

(4)可自动嵌入中间件插件;Spring Boot的核心依赖中包含了Server服务的基本jar,当我们需要什么中间件时,只需替换相关的Spring Boot中间件依赖即可,Spring Boot会帮我们识别中间件。

(5)提供应用状态;Spring Boot还提供了应用的指标,健康检查和外部配置等运行状态,便于开发人员观察项目目前运行的情况。

3 微服务架构在河长制信息系统中的应用

3.1 河长制信息系统应用背景

为认真贯彻落实《中共中央办公厅 国务院办公厅<关于全面推行河长制的意见>的通知》,按照云南省委、省政府全面推行河长制的安排部署,结合昆明市亟待全面深化河长制的实际需求,2017年4月21日,昆明市制定了《昆明市全面深化河长制工作实施方案》(以下简称“方案”),全面深化河长制。《方案》提出要建立四级河长五级治理体系和三级督察督导制度,并提出了全面深化河长制的六大工作要求:一要推动河长制工作内涵由单纯治河治水向整体优化生产生活方式转变;二要推动河长制工作理念由管理向治理升华;三要推动河长制工作范围由河道单线作战向区域联合作战拓展;四要推动河长制工作方式由事后末端处理向事前源头控制延伸;五要推动河长制工作监督由单一监督向多重监督改进;六要推动河(渠)湖库保护治理由政府为主向社会共治转化。同时,《方案》制定了六大主要工作任务,即:加强水资源保护,加强河湖库水域岸线管理保护,加强水污染防治,加强水环境治理,加强水生态修复,加强执法监管。最后,《方案》明确提出了要“建立完善信息管理系统”:结合智慧昆明建设,2017年12月底前,基本建成全市河(渠)湖库管理大数据信息平台。建立河(渠)湖库管理信息系统,逐步实现信息上传、任务派遣、督办考核、应急指挥数字化管理。建立河(渠)湖库管理地理信息系统平台,加强水域环境动态监测,实现基础数据、涉河工程、水域岸线、水质监测等信息化、系统化。建立实时、公开、高效的河长即时通信平台,将日常巡查、问题督办、情况通报、责任落实、信息公开等纳入信息一体化管理。

3.2 河长制信息系统微服务架构设计

河长制信息管理系统从总体架构上分为五层结构,即用户层、应用服务层、支撑层、资源层、信息采集层,架构图如图3所示。

用户层主要针对的是系统的使用人群设定,包括各级河长、督察督导,各级河长办公室,各有关责任单位以及社会公众。

应用服务层是系统的核心业务实现层。主要包含内外网门户网站的建设,由各业务相关的应用系统服务组成,包含河长制信息管理平台和河湖监管移动平台。

支撑层为上层应用服务层提供各种支撑服务,应用支撑层包含了统一身份认证、统一数据接收、统一数据服务、服务管理平台、大数据分析平台、数据汇集共享平台、GIS平台及系统管理平台。

资源层主要包括基础信息、地理信息、水质监测信息、巡查管护信息、水资源信息、采砂信息、水源地信息、生态信息、污染应急信息、执法信息等,是系统数据存储的资源平台。

信息采集層主要包括原有系统数据的导入、已建监测站点的数据接入和录入、新建监测站点的数据接入和录入、移动端上传数据的接收处理。

结合以上功能描述,基于微服务的架构思路,将以上的整体应用可分解为不同子系统数据服务的集合,其中包括系统权限设置数据服务、河湖渠泊(段)及其他基础信息数据服务、制度创新(文件上传)数据服务、考核评价数据服务、督导督察数据服务、监测网络数据服务、办公管理数据服务。河长制信息管理系统微服务功能图如图4所示,数据服务提供固定的REST风格的接口,为整个平台搭建提供基础数据支撑。

(1)系统权限设置数据服务:提供了用户、角色、资源、行政区划、部门、菜单项的基础信息管理。并提供灵活的权限配置,不同用户拥有不同的菜单和资源。

(2)河湖渠泊(段)及其他基础信息数据服务:提供了河流、渠道、湖泊、水库、河段、渠段、湖段、库段、取水口、监测站、河长公示信息、河长公示牌、保护区、保留区、限制开发区、开发利用区、灌区、水文监测站、水质监测站等相关基础设施的基本信息管理。

(3)制度创新(文件上传)数据服务:提供了不同类型文件的上传下载查看打印等文件通用功能。

(4)考核评价数据服务:提供了对不同角色不同部门的考核目标定义和目标考核,实现了自定义考核评价不同项分值设定与自动化打分流程。

由此可见,上述功能相对独立,适合引用基于SpringBoot的微服务框架,每个服务之间都开放给其他服务接口,微服务和微服务之间通过Rest API接口进行通信。基于此微服务架构我们构建了昆明市河长制智慧服务平台,并在云南省各地州成功复制推广,实践证明,微服务架构设计是可行的,有效的。

4 结语

本文系统的介绍了微服务架构的发展背景和概念,并结合传统架构和微服务之间进行了对比,分别阐述了微服务的优势和劣势,然后对SpringBoot从概念和优缺点进行了介绍,最合介绍了昆明市河长制开发背景,结合实际系统应用详细了介绍了河长制智慧服务平台的设计理念。

目前在微服务的架构实践中,处于起步阶段,还有很大的发展空间,我们将在后期的河长制系统建设中不断摸索并完善。

参考文献

[1]王磊.微服务架构与实践[M].电子工业出版社,2016.

[2]纽曼.微服务设计[M].人民邮电出版社,2016.

[3]王晓龙,关毅.计算机自然语言处理[M].清华大学出版社,2005.

[4]张峰.应用SpringBoot改变web应用开发模式[J].科技创新与应用,2017,(23):193-194.

[5]温晓丽,苏浩伟,陈欢,邹大毕.基于SpringBoot微服务架构的城市一卡通手机充值支撑系统研究[J].电子产品世界,2017,(10):59-62.

猜你喜欢

河长制
一张图读懂推行河长制的“ 山西步伐”