中间件(转)

中间件分为远程过程调用中间件、数据访问中间件、消息中间件、事务(交易)处理中间件、分布式对象中间件。

远程过程调用中间件(RPC, Remote Procedure Call)

    我们一个一个来学习,首先来学习的是远程过程调用中间件,远程过程调用就是程序和程序之间的通信,就是客户端应用程序调用位于远端服务器上的过程,它的基本思想是保持客户端(调用者)和服务器(被调用的)程序的语法一样,好像它们是在同一台机器上.程序员就像调用本地过程一样在程序中调用远程过程,启动远程过程的运行,然后将运行结果返回给本地程序.
远程调用的实现一共有两种,分别是SUN的RPC和微软的RPC,

    SUN RPC(Solaris上实现)
    DCE(DistributedComputing Environment) RPC(UNIX,Windows)

    远程调用拥有灵活性,体现在它的跨平台性上面,它不仅可以调用远端的子程序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考虑这些细节。
    RPC也有一些缺点,主要是因为RPC一般用于应用程序之间的通信,而且采用的是同步通信方式,因此对于比较小型的简单应用还是比较适合的,因为这些应用 通常不要求异步通信方式。但是对于一些大型的应用,这种方式就不是很适合了,因为此时程序员需要考虑网络或者系统故障,处理并发操作、缓冲、流量控制以及 进程同步等一系列复杂问题。


数据访问中间件(DM,Database Middleware)

odbc
 

消息中间件(MOM,Message Oriented Middleware)
 

 由于RPC是同步调用的,不可以进行异步调用,消息中间件在应用间通过传递消息来进行协作,是一种异步通信模式,所以它的动机就是RPC调用的缺点。

    消息中间件为应用程序提供发送和接收异步消息支持的中间件。基于消息的交互方式提供了基本的异步编程模式,即客户端可以通过发送消息来请求某种服务,在服 务端处理请求期间,客户端不必等待对方完成,可以执行其它操作,服务端完成后会以消息的形式通知客户端。在消息中间件的支持下,应用程序可以很容易地实现 消息的发送和接收,而不必关心消息交换过程中的具体细节。

    主要功能是在不同的网络协议、不同的操作系统和不同的应用程序之间提供可靠的和可恢复的(若发生意外)消息传送。这时应用并不需要消息即时即刻传递到达对方。就是客户端将消息放入队列,服务器端在方便的时候取出处理,如果需要,将结果放到传送给客户端的队列。
 

消息中间件工作原理是:

    1.应用之间以一系列消息的方式进行通信。

    2.在消息传递过程中,为了避免消息被丢失,消息被保存在消息队列中。

    3.应用把消息发送到与接收者有关的队列中。消息传递机制保证将消息传送到目的地且只传送一次。

    4.在消息传递过程中,应用之间不必建立联系,发送者仅需将消息放入到与接收者有关的队列中,而不必关心接收者是否在线。

    5.接收者仅需从自己的队列中提取消息即可。

    消息中间件的优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的 原因。另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相比,消息中间件 不支持程序控制的传递,不过这种功能和它的优势比起来却是无关紧要的。

    消息中间件可适用于需要在多个进程之间进行可靠的数据传送的分布式环境。
    消息中间件可用来屏蔽掉各种平台及协议之间的特性,进行相互通信,实现应用程序之间的协同.
    消息中间件使分布式处理可以在脱机、事件驱动等的方式下运行,适合与电子商务、移动用户、工作流或其它的环境中。
    由于消息中间件是异步的,所以不适合实时的处理。


事务(交易)处理中间件(Transaction Processing Middleware,TPM)

    事务(交易)处理中间件是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台。
    事务(交易)处理中间件是提供事务控制机制的中间件, 专门针对联机交易处理系统而设计。联机交易处理系统一般都需要处理大量的分布式事务。分布式事务一般都会涉及到多个数据库,且允许这些数据库异构,如在不 同的银行间进行资金转账。所以分布式事务需要处理大量并发进程,涉及到操作系统、文件系统、编程语言、数据通讯、数据库系统、系统管理及应用软件,是一个 相当艰巨的任务.这种情况下通过事务处理中间件简化应用开发。由它来负责处理联机交易过程中分布式交易的完整性、并发控制、负载均衡以及出错恢复等。可把 自己的事务管理功能和数据库已有的事务管理能力有机结合在一起,实现对分布式事务处理的全局管理。

    一般来说事务(交易)处理中间件给程序员提供了一个事务处理的API,程序员可以使用这个程序接口编写高速而且可靠的分布式应用程序。
    分布式事务涉及到多个结点的数据的更新,任何一个结点或结点间通信的失效都可能导致分布式事务的失败。因此,为了保证事务的完整性,分布式事务通常采用两阶段提交协议(TwoPhase Commitment Protocol,简称2PC)来提交。
    阶段1(准备阶段)
        TM询问所有的RM是否已准备提交。
    阶段2(提交阶段)
       TM检查所有RM的回答,只要有一个RM给出否定的回答,TM指示所有的RM进行回滚。否则, TM指示所有的RM进行提交

    在两阶段提交中,一个主节点被指派为事务协调者(Coordiantor),其他节点称为事务参与者(Participants)。协调者掌握提交或撤消 事务的决定权,而其它参与者则各自负责本地数据的更新,并向协调者提出撤消或提交子事务的意向。一般一个结点对应一个子事务。

posted on 2015-11-26 19:03  hi_rain  阅读(953)  评论(0)    收藏  举报