首页 > 其他分享 >企业集成模式-引言

企业集成模式-引言

时间:2023-10-22 20:37:14浏览次数:24  
标签:集成 接收者 模式 发送者 消息 应用 消息传递 引言

书名:企业集成模式

副标题:设计、构建及部署消息传递解决方案

作者:Gregor Hohpe ; Boddy Woolf

译者:荆涛 王宇 杜枝秀

书号:ISBN 7-5083-4114-7

版次:2006.3 北京第一版 3006.3 第一次印刷

前言

这是一本有关使用消息传递进行企业集成的书。我们选择异步消息传递作为本书的重点,还是一本有关各种消息传递或中间件技术的指南。

顾名思义,本书主要收集了各种模式。人们已经普遍认为,模式能把专家在不同领域中缺乏固定答案的知识捕获下来,这些领域包括应用体系结构、面向对象的设计或基于异步消息传递结构的集成解决方案。

每种模式都引出一个特殊的设计问题,通过介绍与问题相关的具体环境,提出一种能平衡各种矛盾或动因的解决方案。在大多数情况下,解决方案并不是一下就能想到的,而要经过多次实践不断提炼。因此,每种模式都融合了高级集成开发人员和架构师从反复构建的解决方案和挫折中总结出的经验。也就是说,本书并没有“发明”什么模式;模式是无法发明的,而是从相关领域的实践中发现和观察到的。

引言

让人们感兴趣的应用很少是独立存在的。销售应用必须要与库存应用打交道,采购应用必须与某个拍卖站点连接,或者你的个人数字助理 (PDA) 上的日历必须与公司的日历服务器同步,似乎所有的应用通过与其他应用集成后都会变得更好。

所有的集成解决方案必须应对以下几个基本挑战:

  • 网络是不可靠的
  • 网络速度慢
  • 任何两个应用都是不同的
  • 改变是难免的。应用会随着时间改变

随着时间的推移,开发人员使用以下四种主要方法克服了上述挑战:

  1. 文件传输
  2. 共享数据库
  3. 远程过程调用
  4. 消息传递:一个应用向公共消息通道中发布一个消息,其他应用可以在之后某个时间从通道中获得这个消息。应用之间必须协商建立通道以及消息的格式。

尽管上述四种方法从本质上解决的是相同的问题,但每种方法均有其独特的优点和不足。实际上,应用之间可通过多种方法集成,使得每个集成点都能充分利用最合适的方法。

什么是消息传递?

电话呼叫:同步通信

语音邮件:异步通信,把电话呼叫转换成消息和队列,以便事后使用,这就是消息传递的基本原理。

消息传递是一种能支持高速、异步、程序到程序间可靠通信的技术。程序之间通过发送数据包进行通信,这种数据包即称为消息 (message)。通道 (channel),也称为队列,是连接程序并传递消息的逻辑路径。通道的行为类似于消息集合或消息数组,但是它能在多台计算机之间神奇地共享,同时被多个应用使用。发送消息的应用被称为发送者(sender.或生产者 (producer),它把消息写到通道中。从通道中读取(和删除)消息的应用称为接收者(receiver)或消费者 (consumer)

消息本身是一种简单的数据结构一一如字符串、字节数组、记录或对象。可以把它看作是数据、接收方所调用的命令,或者是发送方所发生事件的描述。消息实际上是由两部分组成的:消息首部和消息体。消息首部包含消息的元信息一一谁发送的消息、其目标是哪里等等。

什么是消息传递系统?

消息传递能力是由一种单独的称为消息传递系统或面向消息中间件(Message-OrientedMiddleware,MOM)的软件系统提供的。

从本质上讲,消息传递会经过5个步骤:
image

  1. 创建
  2. 发送:发送者把消息添加到通道中
  3. 传送:消息传递系统把消息从发送者的计算机转移到接收者的计算机,使接收者能获得这个消息
  4. 接收
  5. 处理

这个图还表达了两个重要的消息传递概念:

  1. 发送并忽略:在第二步,发送方应用把消息发送到消息通道中。一旦发送完毕发送者就可以继续其他工作,而让消息传递系统在后台传递消息。发送者可以肯定接收者最终能够获得消息,因此它不必等待
  2. 存储并转发:在第二步,当发送方应用把消息发送到通道中后,消息传递系统把消息存储在发送者的计算机内存或磁盘中。在第3步,消息传递系统把消息从发送者的计算机转发给接收者的计算机,然后再次把消息存储在接收者的计算机中。当消息从一台计算机转移到另一台计算机上时,这一存储转发过程会重复多次,直到消息到达接收者的计算机

为何使用消息传递?

  • 远程通信
  • 平台/语言的集成:计算机系统可能使用不同的语言、技术或平台,集成这样的异构应用需要通过一个中间件中性区进行协商
  • 异步通信
  • 可变的定时机制:异步通信让发送者可以按照自己的速度把请求批量发送给接收者,接收者也可按照自己的速度处理请求
  • 节流:RPC最大的缺点是当单个接收者需要同时处理过多的调用时,可能负载过大。
  • 可靠的通信:当发送者发送一个消息时,消息传递系统把消息保存起来,然后把消息转发给接收者所在的计算机,并在此保存。此外还有重传机制。
  • 无连接运行
  • 中介者:如果一个应用与其他应用断开了连接,它只需与消息传递系统重建连接,而不必与其他所有进行消息传递的应用建立连接
  • 线程管理。异步通信意味着,一个应用在等待其他应用完成任务时,除非有必要,自己不必阻塞。

异步消息传递带来的挑战

  • 复杂的编程模式:难于开发与调试
  • 序列问题:顺序性
  • 同步问题
  • 性能:消息传递更适合用于初始数据复制完成后的系统同步
  • 有限的平台支持
  • 开发商锁定

商业消息传递系统

  1. 操作系统:微软-MSMQ,Oracle-Oracle AQ
  2. 应用服务器:Sun-JMS
  3. EAI套件
  4. web服务工具集

模式的描述形式

本书介绍的是一种模式语言,它是由一组模式组成的。每种模式代表了一种决定,以及做出这一决定需要考虑的相关事项。模式语言将相关的模式编织成网,使每种模式均能与其他模式相关,帮助读者做出决策。采用这种方式可以将专家的经验记录下来,让其他人能方便地理解和应用这些经验。

如果只在书中列出模式的描述,这显然还不能让读者获得丰富的知识。简单地说“当你面对这个问题时使用这个解决方案”是远远不够的。对真正想掌握模式的读者来说,必须说明解决问题的难点在哪里,要介绍各种在实际应用中可能不是很好的解决方案,解释为什么这里提出的解决方案是最好的。同样地,还要把模式之间的关系讲清楚,帮助读者从一个问题深入到下一个问题。用这种方法,模式的描述形式不但能用于教会读者如何选择已有的解决方案,更重要的是还提供了方法,你可以拿这些方法来解决作者尚未遇到的新问题。这些就是我们创作本书的目的。

模式应该是规范的,即它们应该能告诉你做什么。模式不但要描述问题,描述解决问题的方法,还要告诉你具体的解决步骤。每种模式代表了一种你要做出的决定:“我应该使用消息传递吗?”“采用命令消息能给我提供帮助吗?”。模式和模式语言的关键是帮助你做出解决特定问题的适当决定,即使作者并不了解这些特殊的问题是什么,即使你还不具备自己开发解决方案的知识和经验,也能从中获益。
image

标签:集成,接收者,模式,发送者,消息,应用,消息传递,引言
From: https://www.cnblogs.com/lhxBlogs/p/17781014.html

相关文章

  • 策略模式
    策略模式考虑一个场景,顾客买东西计算商品的总金额。如果活动的计算方式不同,应该如何写?比如打折,满减,积分活动。思路一:简单工厂模式,把打折的模式进行分类抽象。满减,打折等等传参不同归为不同的计算模式,然后工厂类去根据参数生产对应的实例。 实例返回的参数可以用多态思想例如......
  • go中介模式
    Go设计模式--中介者,最后的模式!原创 _卡尔文 网管叨bi叨 2023-05-2208:45 发表于北京收录于合集#用Go学设计模式24个大家好,这里是每周都在陪你一起进步的网管~!今天继续学习设计模式,也是我们要学习的最后一个设计模式—中介者模式,对这个模式有一点了解后会觉得它跟我们......
  • 【C#9.0篇】Switch匹配模式新特性
    概述C#9.0中的switch匹配模式引入了许多新特性,其中一些特性是C#8.0中不存在的,比如以下特性:关系模式:可以使用关系运算符模式匹配+逻辑模式:可以使用模式匹配+逻辑模式(如and、or)来组合多个模式模式匹配+关系模式:可以使用模式匹配+关系运算符(如<、>、<=、>=、==、!=)默认的匹配......
  • 设计模式05 —— 模板模式
    设计模式05——模板模式本教程参考:菜鸟教程-学的不仅是技术,更是梦想!(runoob.com)参考书:《图解设计模式》本系列为本人学习笔记,和课程学习笔记,资料和参考均源自互联网,希望各位大佬多多指点!介绍在模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模......
  • 设计模式-建造者模式
    建造者模式建造者模式(BuilderPattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个Builder类会一步一步构造最终的对象。该Builder类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相......
  • 【计算机视觉】计算机视觉与模式识别关于图像分割的学术速递[10.20]
    分割|语义相关(8篇)【1】PuttingtheObjectBackintoVideoObjectSegmentation标题:将对象放回视频对象分割中https://arxiv.org/abs/2310.12982我们提出了Cutie,一个具有对象级内存读取的视频对象分割(VOS)网络,它将内存中的对象表示放回视频对象分割结果中。最近的VOS工作采用自......
  • C#与MQL集成
    MetaTrader5MQLIntegrationExampleExampleofhowtocallC++/C#functionsfromMetaTrader5MQLExpertAdvisors,Indicators,etcSUPERIMPORTANT:Buildbothprojectsinx64orMT5won'tseetheexportedfunctions!CSharpCreateregular classl......
  • Jmeter集成到jenkins
    Jmeter集成到JenkinsJmeter集成到Jenkins.1软件下载...4一:环境配置...41.JDK安装:...4配置JDK环境变量...52.Jmeter安装:...5配置jmeter环境变量...63.安装Ant7配置Ant环境变量...74.Git安装:...8配置git环境变量...95.Github设置...11创建github账号...11创建组织...1......
  • 模拟集成电路设计系列博客——3.2.2 改进恒定跨导电路
    3.2.2改进恒定跨导电路可以将宽摆幅电流镜结合到上小节所述的恒定跨导偏置电路中。这种修改可以显著降低由于晶体管有限输出阻抗导致的二阶效应,同时并不过于影响信号摆幅。完整电路如下图所示[McLaren,2001]。这个电路是前面介绍过的固定跨导电路的改进版本,引入了宽摆幅电流镜......
  • 单例模式
    目录单例模式饿汉式懒汉式工厂模式简单工厂模式工厂方法模式工厂模式应用抽象工厂策略模式责任链模式应用单例模式属于创建者模式,提供了一种创建对象的方式单例有两种设计形式饿汉式--类加载的时候,这个对象就会被创建懒汉式--只有首次使用的时候,才会创建对象饿汉式想要......