java分布式应用之初:实现系统间通信方式简介
我们知道大型的应用通常都会将整个系统拆分成多个子系统来实现,这些系统往往都会部署在不同的服务器上,对于java来说也可能是在不同的JVM上,但是这些子系统并不是独立的,他们需要通过互相通信来实现既定的业务功能,对于这样的java应用我们可以称之为java分布式应用。
因此在谈分布式之初,我们需要简单的介绍下,如何实现系统间的通信,一般来说,对于java分布式应用目前系统间的通信主要有两种典型的方式。1,基于消息方式实现系统间的通信,2,基于远程调用方式实现系统间的通信。
(1)消息方式的系统间通信:当系统接收到的某一条消息时则会根据该消息进行相应业务的处理。其主要基于网络协议来实现,常用的网络通信协议有:TCP/IP和UDP/IP两种,至于TCP和UDP之间的区别在此就不再鳌诉。另外一个方面,网络数据的读入,和写出方式又分为同步和异步两种。同步是我们最常用的BIO-阻塞式IO方式,即当发起IO的读或写操作时,均为阻塞式的,直到有数据读取或者写出时才会释放资源。相反的NIO是异步IO方式,当发起IO的读或写操作时是非阻塞式的,当有数据流读入或者写出时操作系统会提示相应的程序进行处理。
因此基于消息方式的系统间通信主要有四种:TCP/IP+BIOTCP/IO+NIOUDP/IP+BIOUDP/IP+NIO
(2)基于远程调用方式实现系统间通信,远程调用的就是尽可能的使系统间的通信和系统内一样,让使用者感觉在使用一个完整的系统,但这其中也存在着一定的问题,因为系统间的调用都是要依靠网络来通信,因此如何将对象间的调用在网络之间来实现也是相当复杂的。对于java来说,目前实现远程调用的方式主要有RMI(RemoteMethodInvocation)和WebService两种。RMI是java用于实现透明远程调用的重要机制。在远程调用中,客户端仅有服务器端提供的借口。通过此借口实现对远程服务器端的调用。WebService是一种跨语言的系统间交互标准,在这个标准中,对外提供功能的一方以HTTP方式提供服务,该服务采用WSDL(WebServiceDescriptionLanguage)描述,在这个文件中描述服务所使用的协议,所期望的参数,返回参数格式等。调用端和服务端通过SOAP(SimpleObjectAccessProtocol)方式来进行交互。
连接地址:http://lavasoft.blog.51cto.com/62575/91679/