面向微服务的江苏农业行政执法系统研究

2018-05-14 08:59毛林成维莉余云飞
安徽农业科学 2018年29期
关键词:微服务关键技术

毛林 成维莉 余云飞

摘要 为了解决现有农业行政执法系统中存在的信息服务手段不足等问题,以及适应和满足日益扩展的执法业务需要,提出一种面向微服务的农业执法系统设计方案。构建服务于多部门分级管理、适应新业务扩展变化、信息共享沟通协作、个性化定制、安全隐私保护等特征的江苏省农业行政执法系统,构建中采用集群容错技术、异步通信策略、负载均衡、安全性配置等关键技术。系统具有较好的可伸缩扩展性、容错、自动化部署、配置灵活等特点,满足了农业主管部门当前及未来的需求。

关键词 农业行政执法;微服务;服务注册与发现;服务网关;反向代理;关键技术

中图分类号 S126;TP319 文献标识码 A 文章编号 0517-6611(2018)29-0183-04

Abstract In order to solve the problem of insufficient means of information service in existing agricultural administrative law enforcement system,and to meet the needs of the increasingly extended law enforcement business,a design scheme for the agricultural enforcement system for microservice was proposed.Agricultural administrative law enforcement system in Jiangsu Province was constructed,which served the characteristics of multisectoral hierarchical management,adaptation of new business expansion,information sharing and communication,personalized customization,security and privacy protection.Key technologies such as cluster fault tolerant technology,asynchronous communication strategy,load balance,security configuration and so on,were used in system construction.This system had good scalability,scalability,fault tolerance,automatic deployment,flexible configuration and other characteristics,which met current and future needs of agricultural authorities.

Key words Agricultural administrative law enforcement;Microservice;Service registration and discovery;Service gateway;Reverse proxy;Key technology

农业行政执法是依法治理农业的重要组成部分,在保障农产品和食品安全、维护农民利益和公民健康、推进“三农”发展、促进农业经济与社会进步等方面发挥显著作用。随着“互联网+”行动不断推进,在农业行政执法领域实现信息化、智能化管理的现实需求变得十分迫切。农业执法系统作为“互联网+”农业执法的具体典型应用,实现农业执法实时、动态、科学的管理,规范执法行为、提升执法效率,意义重大。

农业执法涉及农业委员会、农业行政执法、质量检测机构等部门,各部门实行省、市、县、镇多级行政管理,部门之间采用协同管理方式,管理范围覆盖种植业、畜禽养殖、水产养殖、农业投入品等行业的生产、加工、供销、流通、市场等多类企业与主体,呈现点多面广特点。当前,江苏农业执法深度及广度不断拓展,已有信息服务手段已不能适应和满足日益增长的业务需要,现实执法过程中仍难以完全摆脱传统方式。因此,在省农业执法系统(一期)建设成果应用基础上,根据实际业务拓展需求,兼顾与省内其他平台互联互通和资源共享,降低重复建设成本,迫切需要构建一种服务于多部门分级管理、适应新业务扩展变化、信息共享沟通协作、个性化定制、安全隐私保护等特征的江苏农业行政执法信息系统。

1 面向微服务的系统结构

1.1 微服务框架 微服务是构成应用系统的“小而自治的服务”。随着系统业务需求日益增加、業务数据快速增长、服务规模不断扩展,软件功能须频繁变化,现有服务框架(如SOA)面临各种困境,难以满足柔性、容错、高聚合低耦合、可伸缩性、数据扩展等方面的更高需求。微服务框架(MSA,microservice architecture)是一种新型软件设计模式,逐渐成为设计和构建细粒度、松耦合复杂系统解决方案的分布式系统架构方式,它将应用程序分割为多个独立、协同工作的微小服务,每个服务专注于单一业务功能并拥有独立运行的进程,服务之间界限清晰,通过轻量级通信实现完整的应用,满足用户业务扩展变化的需求[1]。

微服务框架按业务拆分服务粒度,通过可伸缩接口控制服务边界,适应实际业务需求变化,使用微服务组合完成具体功能,使应用程序可自由扩展。服务发生变更时可实现自动化按需部署,无需修改,重新部署整个应用程序。它利用去中心化、轻量级交互、敏捷迭代、解耦、故障隔离、容器等机制,满足复杂系统结构变化需要,优化了IT复杂系统效率,同时也不失弹性、平稳和健壮性。面向微服务的系统设计支持多开发者协作开发,开发者独自完成各自的功能,技术选型和工具选择更加灵活,设计、开发和维护更敏捷,有效控制和降低因需求变化带来的成本上升,减小外界环境需求变化带来的风险。

1.2 农业执法系统结构分析 根据我国农业执法组织管理规定,在多级管理结构中,县级以上部门主要负责农业执法政策制度管理,县镇相关职能部门按照管辖区职责分工,履行农业执法具体工作。根据分级执法管理实际业务需求,面向微服务的农业执法系统在逻辑结构上分省、市、县、镇4层,纵向上从各层实际工作及业务流程中逐层提取业务需求,横向展开各层业务功能进行微服务组件化,构建功能模块。针对各级执法单位业务职能,设置用户使用业务组件和数据的权限,实现信息沟通交流、数据共享与交换。

以农业行政法规、网络信息安全为制度保障,系统结构上采用云环境部署,包括基础设施IaaS、软件平台PaaS、信息门户SaaS3层(图1)。IaaS为上层应用提供通信网络、数据存储、虚拟化配制等资源,PaaS上利用基于SSI的MVC软件分层结构提供一致的系统整体解决方案,设计、开发、部署应用项目,各部门用户共同使用一套系统。SaaS层采用多租戶模式针对各级不同部门需求进行单独定制,使用户获得所需个性化业务和数据服务,为执法管理部门提供信息采集、加工汇总、统计分析、数据挖掘、辅助决策等便利手段,为用户提供稳定可靠的身份认证与隐私安全服务,实现省、市、区(县)、乡镇各级部门之间协同联动,大幅降低开发、运维成本。

为方便农业执法管理,设计中农业执法信息门户包括两类系统:面向县级以上主管部门的办公工作系统、面向县级以下执法部门的移动终端系统。前者采用B/S架构方式,主要定位在业务指导、任务协调、检查监督等方面;后者采用C/S方式,通过手机、PDA、便携蓝牙打印机等智能设备实现现场移动执法,主要承担执法相关数据采集、处理和传输重点工作。两类系统对具体部门通过多租户方式租用功能相同、软件界面配置不同的系统环境。

2 面向微服务的系统设计与实现

2.1 设计思路 面向微服务框架的系统设计中,将系统功能分解到离散的微服务中,实现对应用系统解耦。设计中通过梳理业务流程、功能分析,运用基于Spring Boot的微服务组件开发、基于Docker容器的微服务封装以及基于Jenkins的集成部署,完成微服务划分、业务组件开发、微服务注册发现和部署,实现整个应用程序持续流水线交付[2],结合服务网关、前端Web UI及数据库DB的开发,完成面向多部门、多用户需求的功能实现(图2)。

2.2 微服务划分 从业务组件功能需求入手进行微服务的划分,划分原则是功能单一、原子化、细粒度、边界清晰,可独立部署、升级和扩容。采用水平划分和垂直划分的方式拆分系统,提取系统核心业务[2],在逻辑上主要解决政府主管部门分级执法管理的需求。水平方向上把复杂业务抽象出若干业务领域,包括监督检查、执法抽检、案件办理、投诉举报、案件处罚、任务调度等,并作为微服务中心对外提供服务,适应外部需求变化独立伸缩和扩展,与其他业务域解耦。垂直划分将业务域拆分成多个功能单一、独立的功能单元,确定各单元内外消费的微服务,按业务复杂度来确定服务粒度大小,不同微服务之间相互独立,服务进程相互隔离。

2.3 业务组件开发 开发组件时,根据业务需求确定所需功能单元,并确定功能单元内外消费的微服务,进一步给出服务描述信息,如服务类名、存储数据类型、交互协议、数据展现形式、服务契约[3],在此基础上定义微服务接口,包括持久化数据、请求参数、响应参数等,并实现微服务。在实际应用场景中,一项业务需要由多个不同微服务协作完成,业务组件通过契约定义来组合这些服务,实现业务功能。

以执法抽检业务组件开发为例进行说明,该组件主要实现县、镇基层执法人员使用PC电脑、智能手机、PAD及网络,生成抽检计划、登记上报抽检信息、制作和打印执法文书、查询检查结果等功能。功能单元包括:①抽检计划生成。根据指标、权重自定义条件设置,从农产品、农资企业数据库中随机抽取抽检对象生成抽检计划,由省级主管部门向各市下达。②抽检任务管理。依据年度抽检计划按指标及权重生成抽检任务表,形成所辖管区县基层执法单位可执行的具体巡查任务。③执法文书制作。对执法过程中各类信息进行登记,生成各类文书,套打并上传。④执法档案管理。对执法办案、产品抽检过程中形成的各种执法文书进行归档,便于实时查询和统计分析。⑤抽检数据统计。实现对日常检查、抽检等各类数据汇总统计管理,实时了解执法动态,预测执法重点、难点,为决策提供依据。如为“抽检计划生成”功能单元设计微服务,创建微服务InspectionService.java,设计并实现微服务接口List planGeneration(Map conditions),用于形成抽检计划,输出符合自定义条件的抽检企业列表,其他服务接口与之类似。设计完成后,使用Spring Boot开发该微服务及其接口,并利用IDEA、Maven对外发布。

46卷29期 毛 林等 面向微服务的江苏农业行政执法系统研究2.4 微服务注册与发现 服务注册与发现是微服务框架的核心模式,采用去中心化的分布式服务注册表Service Register,对微服务进行注册。设计中首先定义服务注册表接口,然后使用ZooKeeper来实现服务注册功能。在发布微服务时,通过启动微服务将其服务地址IP、服务端口Port等配置信息写入服务注册表中,微服务注册表会通过心跳检测来定期更新已订阅发布的服务,消除失效的服务,确保分布式数据一致性、可用性。当用户执行某个业务操作时,系统前端利用统一网关接口程序查找服务注册表中相应服务,调用具体的服务接口进行服务消费。用户完成一项业务通常需要组合多个微服务加以实现。

2.5 微服务网关 微服务网关(ervice gateway)建立客户端与服务端连接,用以接收系统用户的客户端访问请求,对外提供统一服务发现方式。当用户登录移动执法终端或办公系统后,发送客户端HTTP请求时,微服务网关通过解析请求信息中的路由路径、服务名称、方法、参数等相关内容,在服务节点中查询对应注册服务的配置信息,定位到指定服务地址及端口、调用所需服务。为了增强高并发服务消费请求时服务节点高的可用性,一个服务通常注册为多个实例并实现多节点存储,需要一套服务发现机制,使服务调用端可以获取正确的服务地址。设计中,采用Node.js搭建微服务网关,连接ZooKeeper注册服务节点查询已订阅发布服务,节点包含多个地址时,采用Node.js反向代理服务发现,通过轮询、随机等方法选取最近节点并调用服务,为用户呈现结果[2](图3)。

3 关键技术

3.1 集群容错技术 针对复杂系统所具有的数量众多的微服务,需要在基础设施上部署虚拟化资源环境。设计中基于IaaS采用去中心化的分布式ZooKeeper集群技术来横向扩展服务节点,取代单一服务注册中心部署微服务,确保服务注册表的高可用性。通过Docker容器的可伸缩性配置实现对等集群,使一个节点存储多个服务实例且无主从之分;单点失效时仍可自动路由切换到其他节点实现服务注册及发现,确保高并发访问时的服务调用[4]。此外,针对负载过重等因素引起的节点故障失效问题,通过监听、周期性检测、失效节点自动重启恢复、故障隔离,使系统具有高可用性、容错性、健壮性,满足多用户、多业务需要。

3.2 异步通信策略 对于系统复杂业务的实现,需要调用多个分布在不同节点的微服务,并通过良好服务进程通讯机制来支撑跨域访问。该设计中采用REST轻量级异步通信协议实现微服务之间通信,取代SOAP、WSDL等传统方式,以解决异步方式处理客户端并发请求时的服务调用拥塞问题,提升通讯效率。REST协议格式中网络资源被抽象成为一个地址,功能的实现通过对HTTP资源请求操作来完成,充分实现异构数据Web服务共享。同时消除了微服务通信受制于语言、平台的差异和限制,系统内外通信兼容性、灵活性、简单性更好。

3.3 负载均衡策略 IaaS环境下分布式集群部署使系统横向扩展性得到大幅提升,但集群节点规模及其服务的增长也带来了系统负载增加、系统整体性能、服务质量降低等问题。针对此问题,设计中采用全局资源配置管理器Resource Mananger提高资源利用率,启动任务调度时按需创建和分配资源[3],减轻节点负载,同时降低资源占用、减轻系统开销。在资源管理功能失效时利用ZooKeeper工具进行恢复,确保系统高可用性、可靠性。

3.4 安全性配置 分布式微服务的系统安全性问题主要包含客户端访问合法性、数据访问合法性两类。设计中针对用户合法性,采用认证服务器网关配置IP校验、发送授权代码许可、凭据许可、刷新令牌等多重加固方式,实现客户端及用户身份安全认证[5-6]。数据安全性针对服务注册信息的访问控制,配置授权用户对服务及数据使用权限,降低非法用户盗取数据的风险。

4 系统应用

在江苏农业执法系统(一期)应用成果基础上,通过继承吸收前期系统开发技术[7],针对目前及未来业务扩展的需求,研究构建了面向微服务的江苏省农业行政执法信息系统(图4)。运用Spring Boot服务组件开发、Docker封装、Jenkins集成、分布式集群等技術并结合大数据分析,进一步拓展和丰富了原有系统功能,涵盖基础数据、执法检查目录、执法检查、执法抽检、督办协办、投诉举报、处罚案件、法律法规、统计报表、公告管理、执法动态等模块。丰富扩展了管理品种对象,将管理范围从农药、肥料、种子等主要农资逐步扩展到饲料添加剂、兽药、转基因等品类。优化了双随机执法检查计划生成、任务管理及行政案件办理程序,为现场执法带来便利。增设了案件一般程序管理模块,通过电子档案“时间戳”技术,严格规范了督办协办、通报登记、处罚等案件管理程序。进一步扩充管理对象、执法机构、产品、法律法规四类数据库,同时针对执法数据分析的不足,优化各类执法数据统计报表功能,直观展现精细化统计数据,服务于任务调度、绩效考核评价、预测决策等执法工作管理。

农业行政执法信息系统作为近2年江苏省农业委员会重点建设工作,通过推进建设和优化完善,使农业执法规范化、标准化、信息化提升到了新高度。系统应用覆盖了全省农业行政执法领域现有业务范围,在省、市、县、镇4级全部农业执法机构、质量检测机构中得到了应用普及,成为全省100余家各级农业执法部门、600余家质检单位及800余名执法人员应用于日常工作实时、动态和科学的管理手段,实现了真正意义上的江苏省农业行政执法业务数字化、移动化和智能化,受到省内外同行、国内知名专家的高度评价。

参考文献

[1] NEWMAN S.Building microservices[M].Sebastopol:OReilly Media,Inc.,2015.

[2] 黄勇.轻量级微服务架构:上册[M].北京:电子工业出版社,2016.

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

[4] 李林锋.分布式服务框架原理与实践[M].北京:电子工业出版社,2016.

[5] REN ENRQUEZ,ANDRS,SALAZAR S.RESTful Java Web Services Security[M].Birmingham:Packt Publishing,2014.

[6] SHARMA S.Mastering Microservices with Java[M].Birmingham:Packt Publishing,2016.

[7] 闵玉涓.农业行政执法信息系统的设计与开发[D].扬州:扬州大学,2017.

猜你喜欢
微服务关键技术
小麦春季化控要掌握关键技术
棉花追肥关键技术
成功育雏的关键技术
老苹果园更新改造的关键技术
跨座式单轨与中低速磁浮信号系统的关键技术
杉木萌芽更新关键技术
微信公众平台在医院图书馆的应用现状调查
从单一模式系统架构往微服务架构迁移转化技术研究