`

读书笔记: 《分布式JAVA应用 基础与实践》 第一章 分布式JAVA应用

阅读更多

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

 

    使用分布式的要点就是尽量不要使用分布式。

 

    实现分布式系统通信,主要有两种方式:

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

     1.1    基于 JAVA 自身技术实现消息方式的系统间通信。

     1)        TCP/IP + BIO

     2)        UDP/IP + BIO

     3)        TCP/IP + NIO

     4)        UDP/IP + NIO

 

     JAVA7 开始,提供 AIO 方式,跟 NIO 一样是异步 IO ,较之 NIO AIO 一方面简化了程序的编写,流的读取和写入都同操作系统来代替完成 Klein 一方面省去 NIO 中程序要遍历事件通知队列( Selector )的代价。 Windows 基于 IOCP 实现了 AIO Linux 目前只有基于 epoll 模拟实现的 AIO

 

     1.2    基于开源框架实现消息方式的系统间通信。

   如 Apache Mina, Jboss Netty

 

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

    2.1    RMI 方式

    RMI Remote Method Invocation )是 JAVA 用于实现透明远程调用的重要机制。 JDK6 以前版本基于 TCP/IP + BIO 方式实现,以下是基于 RMI 的一次完整的远程通信过程:

    1 )客户端发起请求,请求转交至 RMI 客户端的 stub 类;
    2
stub 类将请求的接口、方法、参数等信息进行序列化;
    3
基于 socket 将序列化后的流传输至服务器端;
    4
服务器端接收到流后转发至相应的 skelton 类;
    5
skelton 类将请求的信息反序列化后调用实际的处理类;
    6
处理类处理完毕后将结果返回给 skelton 类;
    7
Skelton 类将结果序列化,通过 socket 将流传送给客户端的 stub
    8
stub 在接收到流后反序列化,将反序列化后的 Java Object 返回给调用者。

     Spring RMI 可以简单地实现 RMI 方式的 JAVA 远程调用

 

     2.2      WebService 方式

JDK6 集成了 WebService, 也可以使用 CXF AXIS 等开源项目

 

另外,JMS方式,也是应用非常广泛的一种方式,不知作者为何没题,这里稍为补充一下:

 

JMS Java 消息服务 Java Message Service 应用程序 接口是一个 Java 平台 中关于面向 消息中间件 MOM )的 API ,用于在两个应用程序之间,或 分布式系统 中发送消息,进行异步通信。
以下是 JMS 中的一次远程通信的过程:
     1
)客户端将请求转化为符合 JMS 规定的 Message
     2
)通过 JMS API Message 放入 JMS Queue Topic 中;
     3
)如为 JMS Queue ,则发送中相应的目标 Queue 中,如为 Topic ,则发送给订阅了此 Topic JMS Queue
     4
)处理端则通过轮循 JMS Queue ,来获取消息,接收到消息后根据 JMS 协议来解析 Message 并处理。

 

常用的消息中间件有 IBM MQSeries WebLogic JMS Active MQ JORAM OpenJMS 等。

分享到:
评论

相关推荐

    大型网站系统与Java中间件实践读书笔记(一)

    《大型网站系统与Java中间件实践》的第一章主要介绍了分布式系统的基础知识,包括其组成、线程与进程的执行模式、网络通信基础知识以及如何将应用扩展到分布式环境,并探讨了分布式系统中的一些难点。 1.1 初识...

    Java_se基础毕向东老师全程笔记

    ### 第一章:编程基础 #### 1. Java的特性和优势 - **简单性**:易于理解和使用。 - **面向对象**:支持封装、继承和多态等特性。 - **可移植性**:遵循“一次编写,到处运行”的原则。 - **高性能**:通过JIT...

    毕向东Java笔记

    #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - **可移植性**:“一次编写,到处...

    java从入门到精通全过程笔记.doc

    最后,EJB(Enterprise JavaBeans)是Java EE平台的一部分,用于构建分布式企业级应用。虽然现代应用更多地使用轻量级框架,但理解EJB的工作原理有助于开发者理解企业级服务的设计。 Java和设计模式部分探讨了如何...

    JavaEE企业级分布式高级架构师018期 94G

    │ │ 第一章第1节: 04-mybatis基础应用之mapper代理开发方式.mp4 │ │ 第一章第1节: 06-mybatis基础应用之全局配置文件.mp4 │ │ 第一章第1节: 08-mybatis基础应用之输入映射2.mp4 │ │ 第一章第1节...

    传智播客Java_SE基础毕向东老师全程笔记

    #### 第一章:编程基础 本章节详细介绍了Java的基础知识,强调了Java的特性与优势,包括简单性、面向对象、可移植性(write once,run anywhere)、高性能、分布式、动态性、多线程、安全性、健壮性等。通过解析...

    传智播客Java SE基础毕向东老师全程笔记

    #### 第一章:编程基础 **Java的特性和优势:** - **简单性:** Java的设计初衷是为了简化编程,减少编码负担。 - **面向对象:** Java是完全面向对象的语言,支持封装、继承、多态等特性。 - **可移植性:** Java...

    JAVA SE应用程序设计 1-19章代码、课件

    10. **Java SE应用实战**:在第19章,通常会结合前面学过的知识,进行一个综合项目,如编写一个简单的GUI应用或网络应用,让学生将理论知识付诸实践。 每个章节的课件和源代码都提供了学习和动手实践的机会。PDF...

    毕向东_Java基础课堂笔记.pdf

    #### 第一章 编程基础 - **Java的特性和优势** - **简单性**:Java的设计使得语法清晰、简洁,易于学习和理解。 - **面向对象**:支持封装、继承、多态等面向对象编程特性,有助于构建复杂的软件系统。 - **可...

    JAVA编程笔记

    第一章总结 - **基础知识**:掌握 Java 的基本概念和技术。 - **代码规范**:养成良好的编码习惯,使代码更具可读性和可维护性。 - **API 使用**:学会查阅 API 文档,提高编程效率。 - **注释的重要性**:合理...

    传智播客毕向东Java基础课堂笔记

    #### 第一章:编程基础 1. **Java的特性和优势** - **简单性**:Java的设计使得语法清晰、简洁,易于学习和理解。 - **面向对象**:支持封装、继承、多态等面向对象编程特性,有助于构建灵活且可扩展的软件系统。...

    JAVA_SE毕向东 笔记

    #### 第一章:编程基础 1. **Java的特性和优势**: - 简单性:Java的设计使得编程变得简单直观。 - 面向对象:Java支持封装、继承、多态等面向对象编程的核心特性。 - 可移植性(Write Once, Run Anywhere):...

    深入java虚拟机笔记

    #### 第一章 Java体系结构介绍 - **Java体系结构概述**:本章主要介绍了Java体系结构的基本概念及其组成部分。Java体系结构旨在为开发者提供一个统一、高效且跨平台的应用开发环境。 - **Java虚拟机(JVM)**:JVM是...

    毕向东Java SE视频教程整理笔记

    #### 第一章:编程基础 - **Java的特性和优势**:Java语言具有多种特性,包括简单性、面向对象、可移植性(一次编写,到处运行)、高性能、分布式、动态性、多线程、安全性以及健壮性。这些特点使得Java成为开发...

    大数据学习笔记

    #### 第一部分:Spark学习 ##### 第1章:Spark介绍 - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但在处理速度、易用性和灵活性方面...

    中山大学地理信息系统笔记第9-10章开始

    【中山大学地理信息系统笔记第9-10章开始】 地理信息系统(GIS)是现代信息技术与地理科学相结合的产物,主要用于处理、分析和展示地理空间数据。随着互联网的普及,万维网地理信息系统(WebGIS)应运而生,它极大...

    java私塾全部笔记

    ##### 第一章 Java入门 - **Java是什么** - Java是一种广泛使用的面向对象的编程语言。 - Java不仅是一门语言,还是一种软件开发平台,支持跨平台运行。 - Java运行环境(JRE)使得Java可以在不同操作系统上运行。 ...

    JavaWeb程序设计任务教程第2版课后题答案

    6. **EJB(Enterprise JavaBeans)**:在企业级Java应用中,EJB提供了组件化开发和分布式计算的能力,包括会话bean、实体bean和消息驱动bean。 7. **JPA(Java Persistence API)**:JPA是Java持久化标准,用于简化...

    Linux防护与群集笔记.zip

    第一章 系统安全及应用:这部分内容可能涵盖Linux系统的安全基础,包括用户权限管理、文件权限设置、防火墙规则、SSH安全配置、恶意软件防范以及日志审计等。理解并掌握这些知识点能够有效防止系统被攻击,保护数据...

Global site tag (gtag.js) - Google Analytics