第一章 引言
(1) 集成解决方案必须应对以下几个基本挑战:
网络不可靠,速度慢。应用的平台技术不一样,应用会随时变化。
(2) 开发人员采用四个方式客服以上挑战
文件传输,共享数据库,远程过程调用(实时同步),消息传递(异步)。
术语:
消息传递:支持高速,异步,程序到程序间可靠通信的技术。
消息:程序之间通过发送数据包进行通信。
通道:也称为队列,连接程序并传递消息的逻辑路径。
发送者:发送消息的应用,它把消息写到通道中。
接收者:从通道中读取消息的应用。
消息由两部分组成:消息首部(消息传递系统使用)和消息体(应用使用)。
消息传递系统的主要任务是为了把消息从发送者的计算机以可靠的方式传递给接收者的计算机。
消息传递的五个步骤:创建,发送,传递,接收,处理。
其实消息传递系统类似一个代理模式:本来应用A打算发送消息给应用B,这时候应用A先把消息发送给消息传递系统C,然后C在B准备好的时候将存储转发消息到应用B。(其实消息传递系统也类似于支付平台,客户将钱给支付平台,支付平台在客户收到物品后将钱划拨给商家)。
优点:消息传递比文件传输更直接,对数据的封装比共享数据库更好,传输可靠性比远程过程调用高。
解决问题:
远程通信,跨平台、跨语言,
异步通信(1)发送者发完消息可做别的事情消息由消息传递系统传送,接受者发送应答消息通过另一个消息完成的;(2)同步通信时,调用者调用的速度由接受者的执行速度决定的,必须等待接受者完成调用处理才能接受到结果并继续运行。异步通信发送者可以按照自己的速度把请求批量发送给接受者,接受者也可以按照自己的速度处理请求。使得所有应用均以最大吞吐量运行(3)远程过程调用最大的缺点是单个接受者需要同时处理过多的调用时,可能负载过大,这会导致性能的下降,甚至让接受者崩溃。(即发送者很多,接受者很少的时候,接受者会崩溃)
可靠通信
当网络连接的时候再与服务器完成同步。
仲裁;消息传递系统在所有能够发送与接受消息的应用中扮演了仲裁者的角色。消息传递系统可以为共享资源(如数据库)提供大量分布式连接。
挑战:
实现复杂。一个简单的方法调用变成请求消息,请求通道,应答消息,应答通道,关联标识符和一个非法消息队列的组合。应用罗杰被分解到多个事件处理方法中。
序列问题:消息无序到达接受者。当消息之间互相关联时,重建消息序列比较重要。
同步问题:不是所有应用都需要异步方式,如果用户要查询机票,希望立即看到价格,而不是等待时间不确定。
性能:会增加通信的开销,因为他们把应用数据封装到消息中并发送,还要接受消息并处理消息。如果要传递大块数据(把消息划分成小块不明智)
有限的平台支持:有些平台或许不支持消息传递系统。
开发商锁定。
在决定哪些问题是用消息传递来解决时,请记住他们可能带来的后果。
分布式应用与应用集成的区别
分布式应用:一个企业应用通常有n层体系结构(属于更加复杂的客户/服务器体系结构),所以它能分布在多台不同的计算机上。即使这种结构会导致不同机器上的进程互相通信,但它仍然是属于分布式应用。因为它的通信部件是紧耦合的,之间互相直接依赖,任何一层离开其他层都会失去作用。其次层间一般采用同步通信。应用的用户一般只接受快速的系统响应。
集成的应用都是独立应用,能各自运行,还能采用松耦合的方式互相配合。每个应用集中完成一部分具体的功能,并将相关的功能委托给其他应用来完成。所以集成的应用一般采用异步通信方式,不需要等待响应就能继续执行,或者并发地执行其他任务,直到应答返回。集成的应用对时限的要求更宽松,使它们能够处理其他任务直到有调用结果返回,因此要比很多实时等待结果的用户更有耐心。
模式是描述问题,描述解决问题的方法以及解决问题的具体步骤。