没有合适的资源?快使用搜索试试~ 我知道了~
首页构建高性能的大型分布式Java应用
第一章 分布式Java 应用 1.1 基于消息方式实现系统间通讯 1.2 基于远程调用方式实现系统间通讯 第二章 大型分布式Java 应用 2.1 SCA 2.2 ESB 第三章 深入理解JVM 3.1 JVM 类加载机制 3.2 JVM 内存管理 3.3 JVM 线程机制 第四章 深入理解JDK 4.1 集合 4.2 并发 4.3 序列化/反序列化 第五章 性能调优 5.1 性能瓶颈分析 5.2 性能调优方法 第六章 构建可垂直伸缩的应用 6.1 多线程 6.2 并行计算 第七章 构建可水平伸缩的应用 7.1 SNA 7.2 分布式cache 7.3 分布式文件系统 7.4 分布式事务 第八章 保障系统高可用 8.1 负载均衡保障(软、硬) 8.2 架构层面保障(容错、监测、自愈、报警、保护措施(例如降级等)) 8.3 多机房容灾、分流保障
资源详情
资源评论
资源推荐

《构建高性能的大型分布式 Java 应用》
目录 & 试读样章
作者:bluedavy
本文档时间:2009-11-6
欢迎大家反馈试读意见,以尽可能的保证本
书的质量,先行表示感谢!
反馈地址:
www.blogjava.net/bluedavy
或
bluedavy@gmail.com

目 录
第一章 分布式 Java 应用
1.1 基于消息方式实现系统间通讯
1.2 基于远程调用方式实现系统间通讯
第二章 大型分布式 Java 应用
2.1 SCA
2.2 ESB
第三章 深入理解 JVM
3.1 JVM 类加载机制
3.2 JVM 内存管理
3.3 JVM 线程机制
第四章 深入理解 JDK
4.1 集合
4.2 并发
4.3 序列化/反序列化
第五章 性能调优
5.1 性能瓶颈分析
5.2 性能调优方法
第六章 构建可垂直伸缩的应用
6.1 多线程
6.2 并行计算
第七章 构建可水平伸缩的应用
7.1 SNA
7.2 分布式 cache
7.3 分布式文件系统
7.4 分布式事务
第八章 保障系统高可用
8.1 负载均衡保障(软、硬)
8.2 架构层面保障(容错、监测、自愈、报警、保护措施(例如降级等))
8.3 多机房容灾、分流保障

第一章 分布式 Java 应用
大型应用通常需要将应用拆分为多个子系统进行实现,这些子系统可能部署在同一台机
器的多个不同的 JVM 进程中,也有可能部署在不同的机器上,但这些子系统又不是完全独
立的,需要相互通讯来共同完成业务功能,对于此类 Java 应用,我们称为分布式 Java 应用。
Martin Fowler 在《企业应用架构模式》一书中,曾经说过:“能不用分布式的情况下就
不要用分布式”,可见当应用变为分布式 Java 应用后,会很大程度的增加应用实现的技术复
杂度,通常对于分布式 Java 应用,有两种典型的方法来进行实现:
1、基于消息方式实现系统间的通讯
当系统之间需要进行通讯时,系统向外发送消息,消息可以是字节流、字节数组,甚至
是 java 对象,其他系统接收到这个消息后则进行相应的业务处理。
要实现消息方式的系统间通讯,通常基于网络协议来进行实现,常用的用于实现系统间
通讯的网络协议有:TCP/IP 和 UDP/IP。
TCP/IP 是一种可靠的网络数据传输的协议,TCP/IP 要求通讯双方首先建立连接,之后
才能进行数据的传输,TCP/IP 协议负责保证数据传输的可靠性,包括数据的可到达、数据
到达的顺序等,但由于 TCP/IP 需要做到连接以及数据传输的可靠,因此在性能上稍有不足。
UDP/IP 是一种不保证数据一定到达的网络数据传输的协议,UDP/IP 对于通讯的双方并
不建立连接,而是直接发送到网络上进行传递,由于 UDP/IP 不建立连接,并且不保证数据
传输的可靠,因此性能上表现很好,但可能会出现丢数据以及数据乱序的现象。
TCP/IP 和 UDP/IP 可用于完成数据的传输,但要完成系统间的通讯,还需要对数据进行
处理,例如写入数据以及输出数据,在这些网络 IO 的操作上,有 BIO、NIO 和 AIO 三种方
式。
BIO 是指阻塞 IO 方式,即读和写必须为同步方式,NIO 是指异步读,同步写的方式,
AIO 是指异步读,异步写的方式。
在网络协议上 java 对于 TCP/IP 和 UDP/IP 均支持,在网络 IO 的操作上,目前 java 仅支
持 BIO 和 NIO 两种方式。
2、基于远程调用方式实现系统间的通讯
当系统之间需要进行通讯时,系统通过调用本地的一个 Java 接口的方法,透明的调用远
程的 java 实现,具体的细节则由 java 或框架来完成,这种方式在 Java 中主要为基于 RMI
和 webservice 来进行实现。

本章节中我们来看看如何基于 Java 的包以及开源的产品来实现以上两种方式的系统间
通讯,这些知识是实现分布式 java 应用的基础和必备知识,本章节通过以下的例子来说明
基于 java 自身的包以及开源产品实现以上两种典型的系统间通讯的使用方法:
本章节中所需实现的示例程序由一个服务器端程序和一个客户端程序构成,为典型的请求---
响应机制,即客户端发送请求,服务端进行响应。客户端读取用户的输入,并将输入的字符
串信息发送给服务器端,服务器端接收到信息后进行响应,当客户端输入的为 quit 字符串
时,则停止客户端和服务器端的程序。
本章涉及的知识点有:Java TCP/IP+BIO(NIO)通讯、UDP/IP+BIO(NIO)通讯、多播通
讯、Mina、RMI、Webservice、Spring RMI 以及 Apache CXF。
1. 基于消息方式实现系统间的通讯
在网络协议上 java 支持 TCP/IP 和 UDP/IP,在网络 IO 操作上 java 支持 BIO 和 NIO,因此
在 java 中有四种方法可实现基于消息方式的系统间通讯。
1.1. 基于 Java 自身技术实现消息方式的系统间通讯
基于 java 自身包实现消息方式的系统间通讯的方式有:TCP/IP+BIO、TCP/IP+NIO、
UDP/IP+BIO 以及 UDP/IP+NIO,分别看看基于 java 自身包如何实现这四种方式的系统间通
讯。
TCP/IP+BIO
Java 对 TCP/IP 方式的网络数据传输提供了 socket 机制的抽象,这也是传统的 unix 网络通讯
的抽象机制,通过 socket 来进行消息的读取和输出。
TCP/IP 要求通讯的双方建立连接,因此只要连接建立就可以进行双向的通讯,对于
TCP/IP+BIO 方式,Java 提供了 Socket 和 ServerSocket 两个关键的类来实现,网络 IO 的操
作 则 通 过 java 中 的 流 对 象 来 进 行 , 流 对 象 通 过 Socket 提 供 的 getInputStream 和
getOutputStream 来获取。
暂定将发送消息的方称为客户端,接收消息的方为服务器端,在 Java 中可采用以下方法来
实现 TCP/IP+BIO 方式的通讯。
服务器端:

1、 new ServerSocket(int port)
通过 new ServerSocket(int port)来指定服务器端对什么端口建立监听,在 unix 系列的机器上,
如果对 1024 以下的端口进行监听,需要 root 权限。
2、 serverSocket.accept()
调用第一步产生的 ServerSocket 实例的 accept 方法,阻塞式的等待客户端的连接,当有客户
端的连接请求进入时,此方法才返回,返回的对象即为 Socket 对象。
3、 socket.getInputStream()
通过返回的 Socket 对象的 getInputStream()方法可获取客户端发过来的消息流,并相应的进
行处理。
4、 socket.getOutputStream()
通过返回的 Socket 对象的 getOutputStream()方法可获取输出流对象,从而写入数据返回给客
户端。
客户端:
Server ServerSocket Socket
1: new(int port)
3: getInputStream()
2: accept()
4: getOutputStream()
剩余94页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论1