hilight

敏捷开发、持续交付、虚拟化、分布式

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

大型应用通常会拆分为多个子系统实现,对于java来说,这些子系统可能部署在同一台机器的多个不同的JVM中,也可能部署在不同的机器上,但这些子系统又不是完全独立的,要相互通信来共同实现业务功能,对于此类java应用,我们称之为分布式java应用。

分布式java应用的两种实现方法:

1、基于消息方式实现系统间的通信

2、基于远程调用方式实现系统间的通信

1、基于消息方式实现系统间的通信
当系统之间要通信时,就向外发送消息,消息可以是字节流,字节数组,甚至是Java对象,其他系统接收到消息后则进行相应的业务处理。
消息方式的系统间通信,通常基于网络协议来实现,常用的实现系统间通信的协议有:TCP/IP和UDP/IP。要完成系统间通信,还需要对数据进行处理,读取和写入数据。按照POSIX分为同步IO和异步IO两种,同步IO中最常用的是BIO(Blocking IO)和NIO(Non-Blocking IO)。在java 7中出现异步IO方式——AIO。
相关概念:
TCP/IP:
UDP/IP:
BIO:
NIO:
AIO:
分别介绍组合后的4种方式:
TCP/IP+BIO
TCP/IP+NIO
UDP/IP+BIO
UDP/IP+NIO
相关的框架技术:
Mina
2、基于远程调用方式实现系统间的通信
当系统之间要通信时,还可以通过调用本地的一个Java接口的方法,透明地调用远程的Java实现。这种方式在Java中主要用来实现基于RMI和WebService的应用。
相关概念:
RMI
WebService
java 6以前rmi实现均是基于TCP/IP+BIO方式。较之基于TCP/IP+NIO等实现的客户端和服务端面简单很多,代码可维护性也高很多。

无论是RMI还是WebService,都封装了网络通信的细节,因此使用起来会较为简单,但如果想对通信细节做一些调优或控制,也会比较麻烦。
相关的框架技术:
Spring RMI
apache CXF


===============
其他的系统间通信的技术
JMS、EJB等
===============

posted on 2012-04-09 22:52  andy0805  阅读(3243)  评论(0编辑  收藏  举报