企业集成对公司管理提出显著转变的需要,致力于 一体化的努力通常对业务产生深远的影响,但是如果缺乏标准的集成方案,导致概念和技术学习难度增加。
集成定义:将不同的计算机系统,公司或个人连接起来, 企业集成是使不同的应用程序协同工作,产生一个统一的功能集的任务。
集成类型
信息门户
数据复制
共享业务功能
面向服务的体系结构
分布式业务流程
企业对企业集成
企业集成模式:
基于消息的EAI:
消息集成分以下步骤实施:
construction消息构建
Channels 通道
Endpoints 端点
Routing 路由
Transformation 转换
Management 管理
Messaging Models 消息模型
Transactions 事务
目前有Spring Integration, Mule ESB 和 Apache Camel. 三种开源集成框架,它们都遵循企业集成模式EIP(EIP, http://www.eaipatterns.com),各有细微的区别。
Construction 消息构建
消息是一个数据单元格式, 一个消息由一个头,属性和主体的组成 发送方转换数据输出构造消息 接收方重新从消息恢复成自己的数据模型 。
(1). Spring集成的消息模型如下:
特点:
(2). JBI(Java业务集成)的模型如下:
特点:支持附件和XML 以及安全。
(3). Apache Camel的消息模型:
消息交换模式(基于WSDL 2.0 message exchange patterns EXP):消息被封装到消息交换Exchange中。
Channels 消息通道
信道是用于从发送者发送消息到接收器的网关, 发送者和接收者不知道对方,实现最大化松耦合,也 可以被称为管pipe
(1). Spring Integration的通道是一个纯POJO模型:
(2). Java Business Integration JBI是一个创建消息交换的工厂,支持同步或异步。
Endpoints 消息端点
一个端点是一个消息传递应用程序,它能够发送和接收消息的客户端, 消息端点封装了消息系统,并与应用程序分离,也是其一部分,自定义了为特定的应用程序和任务的一般消息处理API
(1). Spring Integration实现:
代码实现如下:
消息通道最大的问题是:通道容纳消息总会有一个容量,如果有大量消息发送到,而接受者并没有来得及消费,那么需要很大的容量保留这些消息,这是因为传统通道是一个顺序处理的模型,使用SEDA: Staged Event-Driven Architecture 阶段EDA能够解决这个问题。通过引入线程池立即响应消息处理。
事件队列接受传入的事件, 事件处理器EventHanlder处理传入的事件, 线程池提供了线程功能的事件处理程序, 该控制器调节资源分配和调度动态。
Routing 消息路由
消息路由器会从一个消息通道消费消息,并根据一组条件将其重新发布到不同的消息渠道.
Spring集成框架实现路由代码如下:
消息转换Transformation
消息转换是转换一个数据格式到另一种的过滤器。在消息处理前可以使用各种过滤器:
系统管理
下图中Control bus控制总线使用由应用程序使用的数据相同的消息传递机制,参考工作流设计,分离不同的管道进行传递消息。
消息模型
区分为Publish/Subscribe 发布者/订阅者 或点对点 Point-to-Point Model,也就是1:N或1:1的模型。
存储消息
保证一次且仅一次的消息传递,使用 透明的消息客户端。
消息的事务性
生产者将在事务上下文中发送一个或多个消息, 生产者提交事务; 消费者收到的所有消息, 消费者提交事务。
本文作者:小松 来源:www.jdon.com
CIO之家 www.ciozj.com 微信公众号:imciow