基于Mule ESB的IOT系统集成平台

2020-02-02 03:37韩丽霞张占营
电子技术与软件工程 2020年16期
关键词:架构服务器用户

韩丽霞 张占营

(1.天津市西青区人民检察院 天津市 300380 2.天津师范大学计算机与信息工程学院 天津市 300387)

从“数字城市”到“平安城市”再到如今的“智慧城市”,以“绿色、智能、安全”为主题的“智慧城市”建设正如火如荼地进行,迅速在中国大地遍地开花[1]。“智慧消防”与智慧城市的建设可谓相辅相成,通过运用现代高新技术,智慧消防实现了无线报警网络服务。它解决了电信、建筑、供电、交通等公共设施建设协调发展的问题,消防指挥中心与用户单位联网,改变了过去传统、落后和被动的报警、接警、处警方式,实现了报警自动化、接警智能化、处警预案化和管理网络化,极大地提高了处警速度,使人民生命、财产的安全以及警员生命的安全得到最大限度的保护。

随着智慧消防信息化建设的不断推进,信息系统规模在不断扩大,各系统之间的关系变得越来越复杂。消防系统信息化是一个渐进的过程,各个应用系统之间互相独立并且存在较大差异性,所以形成了一个个的“信息孤岛”[2]。如何将众多的“信息孤岛”联系起来,实现对服务通信、硬件和数据等方面集成管理的系统平台,是智慧消防系统建设的重点也是难点。

在复杂系统建设的过程中,高性能框架的重要性不断凸显。2017年11月份,阿里发布了dubbo-2.5.7,这是继2017年9月份以来阿里重新推出dubbo 后的第三代更新版本,dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA 服务治理方案,它是面向服务的体系架构SOA 时代的产物,关注点主要在于服务的调用,流量分发、流量监控和熔断。在服务治理的开源框架中,Spring Cloud 框架也相当优秀,它诞生于微服务架构时代,关注微服务治理的生态,依托Spirng Boot 的优势,为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,考虑到微服务治理的方方面面。

Mule 是一个以Java 为核心的轻量级的消息框架和整合平台,技术上关注灵活性,高效性以及易开发性,具有服务中介、数据转换、消息路由、服务创建和托管的功能。本文以面向服务的体系架构SOA 为理念,基于Mule 提出了一个将硬件、数据和服务统一管理的集成系统平台,提供可插拔的Web 服务,扩展性强。该平台框架与dubbo 十分相似,实现了组织内部或跨组织边界的不同系统的连接,解决了数据源之间的数据和不同应用之间的服务互相交互的问题。本文实现的集成系统平台不仅是企业可用于服务的智能化管理中心,而且是企业内服务使用者与企业服务交互的统一接口,为智慧消防系统集成提出了新的解决办法。

1 SOA与ESB

1.1 SOA

图1:SOA 的基本体系结构

图2:总体业务架构

面向服务的体系架构(SOA),是在分布式的环境中,将各种功能都以服务的形式提供给最终用户或者其他服务,这些服务带有定义明确的可调用接口,可以以定义好的顺序调用这些服务来形成业务流程。SOA 是一种“抽象的、松散耦合的粒度软件架构”,其核心理念是“重用”和“互操作”,它将资源整合成可操作的、基于标准的服务,使其能被重新组合和应用。SOA 的基本体系结构如图1所示[3]。

1.2 企业服务总线ESB

ESB 全称为Enterprise Service Bus,即企业服务总线。它是传统中间件技术与XML、Web 服务等技术结合的产物,负责集成和智能化管理服务。应用程序通过调用ESB 向外暴露出来的服务接口获得数据,这些接口是标准统一的,然而具体实现则对上层应用程序隐藏,ESB 负责消息传输、服务接入、协议转换、数据格式转换,在ESB 内部通过注册、发现、调度服务实现数据集成[4]。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB 的出现改变了传统的软件架构,可以提供比传统中间件产品更为廉价的解决方案,同时它还可以消除不同应用之间的技术差异,让不同的应用服务器协调运作,实现了不同服务之间的通信与整合。从功能上看,ESB 提供了事件驱动和文档导向的处理模式,以及分布式的运行管理机制,它支持基于内容的路由和过滤,具备了复杂数据的传输能力,并可以提供一系列的标准接口。

本文集成系统平台的实现中,通过Mule ESB 把消防业务系统集成起来,通过企业系统就可以利用Mule ESB 访问各个子系统,解决了传统被动报警的局限性,极大地提高了处警速度,实现真正的“智慧”消防。

2 关键问题

2.1 快速原型模型

在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作即快速原型模型,它是增量模型的另一种形式。快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。

2.2 增量模型

增量模型融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。客户对每一个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程在每一个增量发布后不断重复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。

2.3 可插拔的Web服务

所谓可插拔,意味着给系统添加新功能的时候(或者将原来功能的实现替换成新的实现而保持接口不变),不改变系统已有功能。这样的可插拔的功能模块被称为插件。插件(plugin)的出现可以很好地支持系统的可扩展性(Extensibility),一个扩展性好的系统意味着很容易替换或者增加某些功能。本文的集成平台实现可插拔的Web 服务,最大化的降低变化带来的复杂性,具有强大的扩展能力,尤其针对像 “智慧消防”这样的系统,系统功能随着城市发展在不断变化,可插拔的Web 服务打破了传统的对象复用技术、组件复用技术的静态性,实现动态地增、删业务功能,为程序维护带来便利,用户也具有良好体验。

3 总体设计

3.1 架构体系

总体架构分为三个主要部分:软件集成中心、数据集成中心、硬件集成中心。三个主要部分相辅相成,利用外围中间件、基础支持框架、数据中心,最终实现系统集成的目的,为智慧城市各子系统建设提供基础保障。总体业务架构如图2所示。

3.2 系统原理

整个系统可划分成数据集成中心、软件集成中心、硬件集成中心、系统集成这几部分。其中,数据集成中心主要负责数据的转换、整合、处理等工作;软件集成中心负责ESB 服务器的监视和控制、权限数据的设置以及应用的构建和发布,所有权限控制和数据流转由ESB 服务器实现;硬件集成中心负责集成物联网数据,数据由ESB 应用中的服务流程接入;系统集成由应用中的服务流程完成。系统原理如图3所示。

3.3 系统结构

图3:系统原理

图4:部署图

图5:用户组操作模块结构

图6:服务器管理模块结构

图7:构建数据集成器模块结构

SIP 系统由以下部分组成:

(1)SIP 服务器/集群(多台);

(2)SIP-CONSOLE 服务器(单一);

(3)数据库(单一);

部署图如图4所示。

4 系统功能

该集成系统平台主要有以下几个功能:平台管理、ESB 服务器管理与监控、应用管理、服务管理以及数据源管理。

4.1 平台管理

平台管理主要实现用户及用户组的增、删、改、查功能。通过接口即用户或者用户组管理页面,将所有参数、权限输入到页面上,页面通过控制层,最终与用户或用户组业务层取得联系,从而实现对数据库的操作。以用户组的操作为例,其模块结构如图5所示。

4.2 ESB服务器管理与监控

ESB 服务器管理包括两大方面,第一,对服务器进行增加、展示、移除以及操作,控制某服务器是否加入集群。通过服务器管理页面,用户只需要对所有功能进行可视化操作,方便快捷,无需了解具体实现步骤,达到了很好地用户体验。第二,对服务器的监控功能,该平台实现了对服务器统一管理的功能,在服务器管理页面上,可以获得各个服务器的状态信息、图表项、服务器所在虚拟机各项状态信息以及系统各项状态信息。其模块结构如图6所示。

4.3 应用管理和服务管理

应用管理功能实现了软件的集成管理,在应用包管理界面,实现对应用的发布、卸载、展示等功能。

服务管理功能通过参数和脚本、pattern lib 快速构建服务,提供服务报文的快捷转换。还可以在服务管理页面中展示接口,并控制该服务和服务中接口的启动和停止。除此之外,还特别设计了服务安全管理,即对用户的权限进行设定,当用户满足条件时,为用户生成CA 证书并且下载证书包。

4.4 数据源管理

基于Mule 技术,简化了不同数据源之间的数据交互。除此之外,该平台还实现了数据抽取与预处理功能,在数据模型管理页面上,将抽象的数据模型展示给用户,或者进行新增、编辑、删除、构建等操作。在数据集成器管理页面,通过展示数据集成器,可以发现是否存在数据转换脚本异常、数据来源连接异常或者系统运行异常等。下面以构建数据集成器为例,其模块结构如图7所示。

5 系统接口

系统接口的实现将使平台可以达到跨语言,跨硬件,跨网络环境等特性,大大提高系统的可用性和扩展性。

本系统统一采用JSON 作为数据传输格式。它是一种轻量级的数据交换格式。JSON 采用完全独立于语言的文本格式,但是也使用了类似于C 语言家族的习惯。这些特性使JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。

本系统使用CXF Webservice 开源框架,发布RESTful 风格的Webservice。REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求之间的任何时间点重启,客户端不会得到通知。此外,无状态请求可以由任何可用服务器回答,这十分适合云计算之类的环境。客户端可以缓存数据以改进性能。

在服务器端,应用程序状态和功能可以分为各种资源。资源是一个有趣的概念实体,它向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等等。每个资源都使用 URI (Universal Resource Identifier) 得到一个唯一的地址。所有资源都共享统一的接口,以便在客户端和服务器之间传输状态。使用的是标准的 HTTP方法,比如 GET、PUT、POST 和 DELETE。Hypermedia 是应用程序状态的引擎,资源表示通过超链接互联。

Mule 开发用的是Anypoint Studio,它是一个功能强大、用户界面友好的基于Eclipse 的开发工具。使用统一工具设计和实施 API,以图形或 XML 形式构建、编辑、记录和调试集成,简化数据映射和转换,完全支持从构建到部署的整个过程,使用预构建组件快速启动集成。

groovy 是一种类似java 的语言,也是用eclipse 开发,该平台利用groovy 编写,把数据转接适配模板化,系统扩展时只需要针对具体数据结构创建新的javabean 并编写新的groovy 文件,即可以扩展新的数据源。

下列是系统中用的groovy 模板之一。

import com.sip.transformer.util.BeanConvertor;

import com.sip.transformer.bean.DBParamForInsertion;

import org.mule.module.xml.transformer.XmlToObject;

import com.sip.di.datamodel.DataTable;

def XmlToObject=new XmlToObject();

XmlToObject.addAlias("DataTable",DataTable.class);

XmlToObject.getXStream().omitField(Object.class,"xs:schema")

XmlToObject.getXStream().autodetectAnnotations(true);

return XmlToObject.transformMessage(message,"utf-8");

6 结束语

在复杂系统平台如智能消防系统的设计过程中,发布服务和注册服务都是很重要的,通过把服务注册到Mule ESB 中,隐藏了底层服务的实现细节,上层应用只需调用Mule ESB 中暴露的接口就可以了。Mule ESB 负责协议转换、数据格式转换、服务路由等一系列繁琐的事情。

通过使用Mule ESB 实现消防系统的系统集成,采用面向服务的架构,将易变的业务流程(业务)与相对稳定的业务职能(服务)分开,通过服务将系统与业务系统之间进行解耦,同时也实现了业务系统之间形成松散结构,所以即便是未来消防业务的某些方面发生了变化,该平台也能够很好地适应,达到快速响应的目的。

猜你喜欢
架构服务器用户
基于FPGA的RNN硬件加速架构
功能架构在电子电气架构开发中的应用和实践
通信控制服务器(CCS)维护终端的设计与实现
LSN DCI EVPN VxLAN组网架构研究及实现
中国服务器市场份额出炉
关注用户
得形忘意的服务器标准
关注用户
计算机网络安全服务器入侵与防御
关注用户