大型应用,通常会拆分为多个子系统来实现。
对Java来说,这些子系统可能部署在同一台机器的多个不同的JVM中,也可能部署在不同的机器上,但这些子系统又不是完全独立的,要相互通信来共同实现业务功能。
对于此类Java应用,我们称之为分布式Java应用。
对于分布式Java应用,通常有2种方法来实现:
1. 基于消息方式实现系统间的通信
系统间通信,就要向外发送消息,消息可以是字节流、字节数组、甚至是Java对象。
消息方式的系统间通信,通常是基于网络协议来实现的。常用的协议有:TCP/IP、UDP/IP。
TCP/IP是一种可靠的网络数据传输协议。TCP/IP要求通信双方首先建立连接,之后再进行数据的传输。TCP/IP负责保证数据传输的可靠性。
UDP/IP是一种不保证数据一定到达的网络数据传输协议。由于UDP不能保证数据传输的可靠,因此性能会好一些。
TCP/IP和UDP/IP可用于完成数据传输,但要完成系统间通信,还需要对数据进行处理。例如:读取和写入数据,按照POSIX标准,分为:同步IO、异步IO。同步IO中最常用的是BIO(Blocking IO)和NIO(Non-Blocking IO).
BIO:从程序角度而言,BIO就是当发起IO的读或写操作时,均为阻塞方式,只有当程序读到了流或将流写入操作系统后,才会释放资源。
NIO:从程序角度而言,当发起IO的读或写操作时,是非阻塞的;当Socket有流可读或可写入Socket时,操作系统会通知相应的应用程序进行处理,应用再将流读取到缓冲区或写入操作系统。
AIO:为异步IO方式。从程序角度而言,当进行读写操作时,只须直接调用API的read或write方法即可。 这两种方法均为异步的。对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将write方法传递传递的流写入完毕时,操作系统主动通知应用程序。
较之NIO而言,AIO简化了程序的编写,流的读取和写入都由操作系统来代替完成。
2. 基于远程调用方式实现系统间的通信
当系统间通信时,可通过调用本地的一个Java接口的方法,透明地调用远程的Java实现。其细节由Java或框架来完成。
使用Java包来实现基于消息方式的系统间通信还是比较麻烦的。
为了让开发人员能更加专注对数据进行业务处理,而不是过多关注纯技术细节,开源业界诞生了很多优秀的基于以上各种协议的系统间通信的框架,Mina。
Mina是Apache的顶级项目,基于Java NIO构建,同时支持TCP/IP和UDP/IP两种协议。Mina对外屏蔽了Java NIO使用的复杂性,并在性能上做了不少的优化。
远程调用方式就是尽可能地使系统间的通信和系统内一样,让使用者感觉调用远程通调用本地一样。
基于Java自身技术实现远程调用方式的系统间通信
在Java中实现远程调用方式的技术主要有RMI和WebService两种:
RMI:是java用于实现透明远程调用的重要机制。在远程调用中,客户端仅有服务器端提供的接口。
JDK 6.0以前的版本,RMI实现均是基于TCP/IP + BIO方式的,RMI服务器端通过启动RMI注册对象在一个端口上监听对外提供的接口,其实现实例以字符串的方式绑定到RMI注册对象上。RMI客户端通过proxy的方式代理了对服务器端接口的访问,RMI客户端将要访问的服务器端对象字符串、方法和参数封装成一个对象,序列化成流后,通过TCP/IP+BIO传输到RMI服务器端。RMI服务器端接收到客户端的请求对象后,解析其中的对象字符串、方法及参数,通过对象字符串从RMI注册对象上找到提供业务功能的实例,之后结合要访问的方法来反射获取到方法实例对象,传入参数完成对服务器端对象实例的调用,返回的结果,则序列化为流以TCP/IP+BIO方式返回给客户端,客户端在接收到此流后反序列化为对象,并返回给调用者。
相关推荐
本书介绍了编写分布式Java应用涉及的众多知识点,分为了基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,七章内容来进行介绍,在这一本不算厚的...
分布式Java应用基础与实践是Java开发领域中的一个重要主题,它涉及到如何通过网络将多个独立的计算机节点连接起来,协同处理任务,以实现系统的高可用性、高性能和可伸缩性。在Java中,分布式系统主要依赖于一些核心...
《分布式Java应用基础与实践》pdf电子版,
《分布式Java应用 完整版》是一本深入探讨如何利用Java技术构建分布式系统的权威指南。全书分为四个主要部分,全面覆盖了从基础的网络通信到复杂的系统架构设计的各个环节,旨在帮助读者掌握构建高性能、高可用和可...
本书介绍了编写分布式Java应用涉及的众多知识点,分为了基于Java实现网络通信、RPC;基于SOA实现大型分布式Java应用;编写高性能Java应用;构建高可用、可伸缩的系统四个部分,七章内容来进行介绍,在这一本不算厚的...
由于提供的【部分内容】链接均指向同一网址,且无法从中提取具体信息,因此无法直接分析这些链接所包含的分布式Java应用的具体知识点。但是,我可以基于分布式Java应用的主题提供丰富的知识点。 分布式Java应用指的...
分布式Java应用是现代企业级软件开发中的重要组成部分,它涉及到多台计算机之间的协作,以处理大规模数据和提供高可用性服务。在这个主题中,我们主要关注的是如何利用Java技术来构建分布式系统,以及相关的理论与...
分布式Java应用基础与实践是Java开发领域中的一个重要话题,它涉及到如何在多个计算机节点上协同工作,以提高系统的可扩展性、可靠性和性能。在这个完整版的资源中,包括了一本名为“分布式JAVA应用 基础与实践.pdf...
分布式Java应用基础与实践源码分析 在当前的互联网时代,分布式系统已经成为企业级应用的主流架构。Java作为广泛使用的编程语言,其在分布式领域的应用非常广泛。本篇将深入探讨分布式Java应用的基础知识和实践要点...
分布式Java应用是现代互联网行业中广泛讨论的话题,尤其在大型企业级系统中,为了处理高并发、海量数据等问题,采用分布式架构成为了必要的选择。林昊,作为知名的Java技术专家,他的著作《分布式Java应用》深入浅出...
### 实现分布式Java应用的挑战与解决方案 尽管Java提供了丰富的库和技术栈来支持分布式应用的开发,但在实际应用中仍面临许多挑战,例如: - **一致性问题**:在分布式系统中保持数据的一致性是一项复杂任务,需要...
分布式JAVA应用基础与实践是Java开发领域中一个重要的主题,主要涵盖了如何在大规模网络环境中设计、部署和管理Java应用程序。本书由林昊编著,旨在帮助开发者深入理解分布式系统的基本概念,掌握Java在分布式环境中...
分布式Java应用是计算机科学中的一个重要领域,它利用了Java语言的网络友好性,为实现大型、高并发、高性能的系统提供了可能。分布式计算技术有着悠久的历史,它从早期的C/S架构,到P2P模型,再到现在的云计算,始终...
分布式Java应用基础与实践是Java开发中的重要领域,它涵盖了多台计算机之间的协作,通过网络进行数据交换和服务调用,以实现大规模系统的高效运行。在Java世界中,分布式技术广泛应用于构建可扩展、高可用的互联网...
分布式Java应用:基础与实践
分布式Java应用基础与实践.pdf 林昊 著 中文 电子工业出版社
分布式JAVA应用+基础与实践是Java开发者在面对大型、高并发、高可用系统时不可或缺的知识领域。本资源提供了全面的理论知识与实践经验,旨在帮助Java程序员深入理解和掌握分布式系统的设计与实现。以下将对其中涉及...
分布式Java应用知识点全景图,很全面,值得一读
在构建高性能的大型分布式Java应用时,我们面临的是复杂的技术挑战和优化目标。要实现这样的系统,我们需要深入了解Java平台的特点,以及如何利用其优势来处理大规模数据和高并发请求。以下是一些关键的知识点: 1....