首先,说明什么是分布式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。
总结:本文只是简单的讲解了Java中实现系统间的相关技术、基本原理及使用方法,本文并未提到Java中可用来实现系统间通信的技术,如JMS、EJB等。
有两种方式可实现系统间的通信,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。
总结:本文只是简单的讲解了Java中实现系统间的相关技术、基本原理及使用方法,本文并未提到Java中可用来实现系统间通信的技术,如JMS、EJB等。