分布式Java应用---实现系统间的通信

   首先,说明什么是分布式Java应用?    大型应用通常会拆分为多个系统来实现,对于Java来说,这些子系统可能部署在 同一台机器的多个不同的JVM中,也可能部署在 不同的机器上,但这些子系统又不是完全独立的,而且要相互通信来实现共同的业务功能,对于此类应用,我们称之为分布式Java应用。
   有两种方式可实现系统间的通信,1是:基于消息方式实现系统间的通信,2是:基于远程调用方式实现系统间的通信。

  一、基于消息方式   系统之间要通信是,就向外发送信息,消息可以是字节流、字节数组、甚至是Java对象(经序列化的对象),其它系统接收到消息后则进行相应的业务逻辑。
    消息方式的系统间通信,通常是基于网络协议来实现的,常用的通信的协议:TCP/IP和UDP/IP。
    简要说明TCP、UDP的区别,TCP:可靠的,需先建立连接,保证数据到达的顺序,性能低一些;UDP:不可靠,无需先建立连接,不保证数据传输的可靠性,可能会出现数据丢失或数据乱序的现象,性能高于一些。
    TCP/IP和UDP/IP用于完成数据的传输,但要完成系统间的通信,还需对数据进行处理,例如IO操作。可把IO分为同步IO和异步IO,其中同步IO最常用的是BIO和NIO,异步IO包括AIO,均基于事件驱动思想-------(对于网路IO,事件有三种:连接建立、流读取、流写入)。


-------
   基于Java自身技术实现消息方式的系统间通信有如下四种,TCP/IP+BIO,TCP/IP+NIO,
UDP/IP+BIO,UDP/NIO.
   基于开源框架实现信息方式的系统间通信,如Mina框架,基于Java NIO构建,同时支持TCP/IP,UDP/IP.

    二、基于远程调用方式    系统之间要通信时,可通过调用本地的一个Java接口的方法,透明地调用远程的Java实现。具体的细节由Java或框架完成,这种方式在Java中主要用来实现基于RMI、WebService的应用。
     远程调用,就是尽可能地使系统之间的通信和系统内一样,让使用者感觉到调用远程同调用本地一样,


-------
    基于Java自身技术实现远程调用方式的系统间通信,技术主要有RMI(轻量级)和WebService两种。
     基于开源框架实现远程调用方式的系统间通信,如Spring RMI--实现RMI、CXF--实现WebService。


     总结:本文只是简单的讲解了Jaba中实现系统间的相关技术、基本原理及使用方法,本文并未提到Java中可用来实现系统间通信的技术,如JMS、EJB等。

  
##本文摘自《分布式Java应用基础与实践》林昊 著。

猜你喜欢

转载自haiors.iteye.com/blog/1597368