基于SOA架构模式的煤矿业务应用集成实现.docx
- 文档编号:4413247
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:15
- 大小:631.95KB
基于SOA架构模式的煤矿业务应用集成实现.docx
《基于SOA架构模式的煤矿业务应用集成实现.docx》由会员分享,可在线阅读,更多相关《基于SOA架构模式的煤矿业务应用集成实现.docx(15页珍藏版)》请在冰点文库上搜索。
基于SOA架构模式的煤矿业务应用集成实现
基于SOA架构模式的煤矿业务应用集成实现
杨林刘坤
(兖矿集团信息技术中心)
摘要:
煤矿信息系统整体应用深度不足、融合性差,生产、安全监控系统大多是分布式、异构系统,开放性差。
如何构建基于不同平台、不同方案建立的异构应用集成,是煤矿企业亟待解决的问题。
本文提出基于SOA面向服务的架构模型,构建松散耦合、可重用的服务和服务接口设计管理的消息服务总线,实现按需定制的BPM业务流程,并在煤矿应急指挥管理信息系统中进行了实践。
关键词:
SOA(面向服务架构);WCF;EAI(企业应用集成);BPM(业务流程管理);AMQP(高级消息队列协议)
1引言
随着煤矿信息化的迅猛发展,煤矿各生产经营管理部门间的应用协作与信息共享日益广泛,迫切需要将安全生产六大系统、综合自动化系统、工业电视系统及上层经营管理系统进行整合,实现业务流和数据流运作的自动化,从而达到业务的实时响应与高效,使煤矿集成应用系统更适应于经常变化的业务管理。
但是,由于历史原因,煤矿内、外部的应用系统建设通常是独立成系统的,封闭和异构的,大大增加了应用系统集成的难度,传统的基于请求/应答的点对点、同步通信已无法满足当前大规模动态分布式应用环境。
本文针对目前煤矿信息系统应用集成的实际需求,提出了一种基于SOA架构的煤矿系统应用集成设计方法。
该方法提供了一种构建IT组织的标准和方法,通过建立可组合、可重用的服务体系来减少IT业务冗余,并加快项目开发的进程。
此种架构负责在企业应用系统的主要业务模块(服务)之间担任通信中介,通过BPM业务事件驱动企业核心业务处理数据、流程的共享与业务协作。
该方法具有异步、松耦合和多点通信的特点,使得系统设计者可以方便、灵活、可靠地依据煤矿应用业务流,轻松地把煤矿六大系统、综合自动化、经营管理等子系统中各种数据有机的联系起来,实现通信与业务逻辑的分离,以构建多维松散耦合的、良好可操作性和可集成的异构分布式应用系统。
2平台建设背景、现状及建设意义
2.1平台建设背景及现状
兖矿集团近年来加快推进生产安全信息化建设,本部矿井六大系统建设完备,矿井综合自动化、生产计量系统、工业电视系统建设完成,建立了覆盖采矿、选矿、机运、通防等工作范围的安全监测、设备驱动和生产过程控制的数字化系统,实现了生产过程自动化和智能化,提高了矿井集约生产能力和本质安全水平。
煤矿监测监控、人员定位、通讯联络、紧急避险、压风自救、供水施救安全避险六大系统及矿井综合自动化、生产计量、工业电视等系统是独立的异构系统,建成时间不一,厂商不同,管理所有者各异,提供的接口数据各异。
现阶段针对这些系统的相关应用集成都是开发部署独立的访问接口。
长期以来,形成了如图2-1所示的网状接口调用的应用架构。
图2-1传统应用集成模式图
面对越来越多的企业业务应用需求,一个成熟的系统架构在IT构建上需要解决以下问题:
(1)如何实现应用系统的快速构建,迁移和伸缩;
(2)如何能够让已有的多种应用系统无缝的集成起来;
(3)如何设计现代IT架构,使系统不仅功能强大和可靠,而且还有强大的灵活性和可扩展性,以满足不断增长的新需求。
在企业应用集成建设过程中,也面临如下难题:
(1)协调由不同系统实现的、不兼容的业务流程
(2)协调不同系统所使用的数据的差别
(3)协调用以实现不同系统的、不兼容的技术
(4)协调不同系统所采用的时间刻度
(5)协调不同系统所使用的交互模式
集成的过程中除了克服上述难题外,理想的集成方案还必须满足下列要求:
(1)低成本,具有较快的投资回报
(2)易于掌握和管理
(3)不会影响现有系统
(4)具有可伸缩性、可靠性、高可用率、容错性及安全性等等
2.2平台建设意义
通过SOA面向服务应用架构的建设,将煤矿需要共享的各种系统资源统一以服务的形式进行封装和接入,让它们在物理上保持分布自治的同时实现以“虚拟信息中心”为基础的逻辑上的一体化管理,以透明的方式进行资源的优化选取、按需中介和有效访问,并能够支持用户主动参与应用配置。
最终实现以松耦合的煤矿元数据服务为基础业务应用随需扩展,达到煤矿信息系统由以技术驱动的建设模式向以业务驱动的转变。
3SOA架构平台及相关技术
3.1SOA及相关技术
3.1.1SOA简介
SOA(ServiceOrientedArchitecture)是一种软件体系结构范型,可以组织和使用处于不同所有者控制下的分布式功能。
对SOA的理解多种多样,从技术角度看,SOA就是一种体系架构,它描述了一种IT基础设施,使得不同的业务服务可以相互交换数据,参与业务流程,通过灵活的互相协作方式来完成具体的业务操作。
这些业务服务独立于编程语言,独立于实现方法,独立于运行环境。
3.1.2SOA特点
●重点关注服务
SOA支持面向服务的开发方法,是对前续的面向过程、面向消息、面向数据库和面向对象开发方法的补充。
●松耦合
SOA强调服务间的松耦合,包括接口松耦合、技术松耦合、流程松耦合。
●重构的灵活性
在SOA系统建设中,基本的单位是实现业务功能的服务,而不是实现业务逻辑的对象、过程、函数等较小的技术单位。
●对标准的支持
为了强调互操作性,在SOA系统中,服务需要尽量符合开放标准。
3.1.3AMQP高级消息队列协议的MOM(消息集成)
消息队列(MQ)是一种应用程序对应用程序的通信方法。
应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需用专用连接来链接它们。
AMQP(AdvancedMessageQueuingProtocol)高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全性要求很严格。
RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统。
遵循MozillaPublicLicense开源协议,采用Erlang实现的工业级的消息队列(MQ)服务器,具有高性能、健壮、高并发效率、高可靠性的特性。
支持多种客户端,如:
Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。
●基本原理
RabbitMQ的两大核心组件是Exchange和Queue,以下是它的运行原理图:
图3-1RabbitMQ通信原理
消息队列是一个具名缓冲区,它们代表一组消费者应用程序保存的消息。
应用程序在其权限范围之内可以自由的创建、共享、使用和消费消息队列。
RabbitMQ列队能以WCF服务的方式进行发布。
3.4WCF技术
WindowsCommunicationFoundation(WCF)是由微软发展的一组数据通信应用程序开发接口,是.NET框架的一部分,是SOA面向服务架构的技术产品。
在WCF通信中,双方的沟通方式由合约来定义。
通信双方所遵循的通信方法,由协议绑定来定义。
通信期间的安全性,由双方约定的安全性层次来定义。
3.5数据适配器
煤矿各系统由不同厂商建设,基础元数据多种多样,包括文本、数据库数据、告警消息、多媒体等;接口类型也种类繁多,有的系统提供交换文件接口,如人员定位系统、监测监控系统;有的系统提供工业OPC接口,还有的系统提供实时数据库接口、SDK开发接口,这就要求平台集成消息服务层能实现不同协议、不同接口、不同类型的底层元数据接入,适配器就是数据接入的接口转换组件,实现了数据信息按照标准进行编码和序列化的传输。
4基于SOA的煤矿业务集成平台架构及实现
4.1煤矿业务集成平台架构
基于SOA的煤矿业务集成平台架构主要分为三层结构,如图4-1所示:
图4-1煤矿业务集成平台架构
4.2数据采集层
平台架构第一层是数据采集层,数据采集层通过适配器解决已有资源面向SOA的服务封装,实现已有资源的可重用性。
通过适配器,已有资源仅需要与SOA基础技术平台中的连通服务相连接,而不需要与每个服务直接相连,实现了服务之间的互操作。
图4-2适配器与已有资源和SOA基础技术平台之间的关系图
4.3数据服务层
平台架构第二层是数据服务层,数据服务层主要功能是服务管理和业务流程化服务定义。
数据服务层负责管理各数据服务程序之间的联系,保证各个应用能实时了解到数据的变化,而无需知道变化的原因。
使用数据服务作为业务应用层下面的基础服务提高了可重用性和敏捷性,并缩短了新服务的开发和部署所需的时间。
构架良好的数据服务层依赖于使用标准的API接口的有高度兼容性的高性能数据存取中间件。
同时,作为业务服务和底层的元数据之间的桥梁;业务用户无需担心他们所用的数据到底来自数据库、某个子系统、某文件系统或者任何地方。
流程化服务是按业务需求定义的一组服务集合,可以按照特定的顺序并使用一组特定的规则进行调用。
业务流程化服务可以由不同粒度的服务组成,其本身可视为服务,通过流程工具定义,由基本服务组合形成。
按新业务需求开发服务均可使用已有的服务。
服务描述信息通过资源管理服务进行存储和管理,服务运行信息由运行管理服务进行存储和管理。
4.4业务应用层
第三层为业务应用层,数据服务层通过科学合理地组织各类底层数据资源及自定义的流程化服务数据,将海量异质的矿山工业化数据信息进行全面、高效和有序的管理和整合。
包括对井下生产、安全监察、物料移动、事务处理等业务过程数字化,构建面向煤矿安全生产经营管理的各种业务应用,进而实现矿井的高度信息化、智能化与高效、安全生产。
5煤矿应急指挥管理信息系统的业务应用集成实现
5.1系统概述
煤矿应急指挥管理信息系统是满足矿井调度工作及处置突发事件需要,围绕安全生产监控、指挥、调度、会议、通讯等各种功能合一的调度平台。
系统实现生产安全事故、突发事件和应急响应程序的规范管理。
日常工作中能实现矿井人员、产量等信息监控及安全监测监控系统报警联动;应急发生时,可实现现场及全矿安全生产的实时监控,并通过现代化的通讯技术提高应急救援能力,保证及时有效地实施应急调度救援工作。
5.2系统的业务构建
5.2.1业务需求
煤矿调度室在日常工作中监测矿井人员、安全监测监控、主要生产状况、产量、辅助运输、工业电视等系统的数据及实时状态,如果矿井安全监测监控系统出现告警,可实现告警提示,并联动短信、视频;在应急发生时,按照应急处置程序工作流程,实现处置过程的快速查询、辅助提示,结合工业及安防视频系统、综合自动化组态、工业实时数据、安全监测系统、大屏显示以及短信、电话,实现处置过程中大屏场景一键切换、现场实时视频数据监控、井上下一键短信电话通知,辅助调度指挥人员实施快速、科学、高效的救灾指挥。
图5-1煤矿应急指挥管理业务流程图
图5-2业务数据总体需求图5-3应急系统与矿井子系统的需求关系
5.2.2业务需求建模
应急指挥管理信息系统业务数据来源于不同业务域,有基础服务数据,也有流程化服务数据,我们对这些业务活动采取自底向上的方法进行分解、归纳、汇总去重抽象后,最终形成不可再分的基本数据服务,也就是说所有的业务活动数据来源均由这些基础服务演绎和组合形成。
表5-1应急指挥管理信息系统主要业务活动及基本服务分解目录
序号
业务类别
基础数据服务
序号
业务类别
基础数据服务
1
实时监测
井下人员
13
应急处置
应急预案
2
安全监测
14
救援物资
3
生产计量
15
工业视频
4
主要生产设备
16
实时数据
5
通风
17
大屏显示控制
6
压风
18
短信
7
供水
19
通信联络
8
报警联动
监测监控告警
20
案例库
9
短信
10
工业视频
11
通信联络
12
调度广播
针对主要业务活动的分析,构建基于基础服务的流程化服务活动模型如下:
●实时监测
图5-4实时数据BPM服务模型图
●报警联动
图5-5告警联动BPM服务模型图
●应急处置
图5-6应急处置BPM服务模型图
5.3系统开发及实现
本项目基于微软.NET框架开发,平台采用轻量级的SOA架构——消息队列系统RabbitMQ搭建,目前该开源项目已非常成熟,并应用于工业、金融系统等领域,可提供电信级的服务,具有高并发效率,高可靠性等特点,并提供了相应的.net客户端实现。
5.3.1消息队列的实现
面向消息的中间件系统用来为不同类型的系统提供消息通道。
RabbitMQ为应用提供了一种公共的、可靠的方式,使这些应用能够轻松地创建、交换和处理消息,而无需考虑消息传递客户机的实现细节。
●消息结构
消息包括消息头,消息属性,消息体三部分。
消息头:
所有的消息使用相同的消息头属性集合,主要用来标示消息ID,路由信息等
消息属性:
对消息头信息的补充,因为消息头是固定的一些属性,而消息属性可以自己定义的。
消息体:
RabbitMQ支持主要的一些消息类型,数据流消息、图形消息、文本消息、告警信息、流媒体消息、字节消息、Json格式消息等。
系统定义了StreamMessage,GraphMessage,TextMessage,AlarmMessage,ObjectMessage,VideoStreamMessage、BytesMessage等消息实体模型,用以支持不同的数据源。
●消息生产者(数据适配器)
通过对矿井安全生产监测各子系统的元数据进行实体建模抽象,不同实体模型按照接口协定进行编码和序列化,通过RabbitMQ客户端API开发的数据适配器构造消息实体对象并将消息发布到发布到MOM(集中式消息服务中间件)RabbitMQ队列。
代码实现:
//定义要链接的rabbitmq-server地址(基于amqp协议)
Uriuri=newUri("amqp:
//192.168.0.100:
5672/");
//定义交换方式
//abbitmq交换方式分为三种:
DirectExchange-处理路由键,FanoutExchange-不处理路由键,TopicExchange-将路由键和某模式进行匹配。
stringexchange="exAlarm";
stringexchangeType="direct";
stringroutingKey="mAlarm";
//是否对消息队列持久化保存
boolpersistMode=true;
//使用ConnectionFactory创建连接
ConnectionFactorycf=newConnectionFactory();
//配置环境信息
cf.UserName="alarm";
cf.Password="*****";
cf.VirtualHost="alarm_mq";
cf.RequestedHeartbeat=0;
cf.Endpoint=newAmqpTcpEndpoint(uri);
//实例化IConnection对象,并设置交换方式
IModelch=conn.CreateModel())
ch.ExchangeDeclare(exchange,exchangeType);
ch.QueueDeclare("qAlarm",true);
ch.QueueBind("qAlarm","exAlarm","mAlarm",false,null);
....
//构造消息实体对象并发布到消息队列上
IMapMessageBuilderb=newMapMessageBuilder(ch);
IDictionarytarget=b.Headers;
target["header"]="alarmMessage";
IDictionarytargetBody=b.Body;
targetBody["body"]="*****";
if(persistMode)
{
((IBasicProperties)b.GetContentHeader()).DeliveryMode=2;
}
//简单发布方式
ch.BasicPublish(exchange,routingKey,
(IBasicProperties)b.GetContentHeader(),
b.GetContentBody());
这样就实现了单条消息的发布。
●消息消费者
消费者客户端采用RabbitMQAPI开发,可通过虚拟主机(virtualhost),交换机(exchange),队列(queue)和绑定(binding)实现消息的接收。
获取消息可以使用两种方式,一种是主动获取BasicGet模式,另一种是基于订阅(QueueingBasicConsumer)模式,即让当前获取消息的线程阻塞,用于绑定到指定的队列上,当有新的消息入队之后,该阻塞线程会被运行,从队列中获取新入队的消息。
●业务服务WCF发布
消息队列建立后,以WCF服务的方式进行发布。
这包括所有的基础服务,如各子系统实时数据服务、短信服务、通信服务、视频流服务等,也可通过业务需求按需定制各种BPM流程服务。
5.4系统功能
系统实现功能模块如图所示:
图5-7应急指挥管理信息系统功能模块图
6总结及展望
本文提出了一种基于SOA的企业应用集成系统设计实现的方法,并在煤矿应急指挥管理信息系统的开发中作了研究和实践。
实践证明,使用该设计方法可以方便、灵活地将煤矿安全生产经营各子系统实现业务级别的应用集成,从而实现了业务流和数据流的共享,将生产过程的自动化与生产管理的信息化进行融合,满足了煤矿业务管理协作的需要,实现了安全生产过程的精细化、集约化管理。
在以后的研究和应用过程中,将针对SOA架构下云计算及物联网的应用方面做进一步的工作。
【参考文献】
[1](美)乔苏蒂斯(Josuttis,N.M.),SOA实践指南,电子工业出版社,2008
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SOA 架构 模式 煤矿 业务 应用 集成 实现