`
raymond2006k
  • 浏览: 293862 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

NIO对SOA的启发

    博客分类:
  • SOA
阅读更多
     NIO 和 SOA 都有使用,最近重新看一些文章,结合自己的项目应验,发觉NIO的思想对SOA也很有参考价值。
   NIO 关键是采用了被动的 Observable 模式,或者说 listener 模式实现了 IO 的非阻塞通信,从而极大提高IO性能。 我所体会的,其中的妙处在于 requestor 变主动模式为被动模式,避免一个请求长时间独占资源,从而提高 IO 的效率。

    这让我想到在项目中,业务方法(Business Method)通常纳入一个Transaction事务中,而事务的过程通常比较消耗时间,即对资源占用较长时间;尤其在 SOA 环境下,如果一个 BM 需要调用其他一个或多个EJB,Web Service 或 CICS等服务接口,那么transaction 占用的时间更长。
    NIO 的启示是,改变设计模式就能带来神奇的效果。

    问题还是变主动调用为被动调用。 在 Client + MiddlWare + Service的三层建构下, 中间件对 Client 来说仍保持同步(Sync), 而中间件以 Listner 模式异步监听服务的调用回传结果,避免连接,Pipe等资源过长时间被堵塞,从而提高request的并发数,吞吐量,从而提高SOA下分布式调用的效率。

    [img]/upload/attachment/48657/84ef0b86-97a5-3c4d-be09-64a40f6fa45b.jpg" alt="[/img]
   像 Axis2 等 web service 框架都提供web service 调用级别的非阻塞调用。而在具体项目中, 如果 Service 是由 Axis2 集成封装,并且被集成的子服务都支持非阻塞调用,那么OK, 这样的目的可以达到; 而如果封装的 Facade 服务接口不支持 非阻塞,或者原子服务有其他协议,如 EJB,CICS,CORBA 等,那么可以考虑自己进行 NIO 式的改造,来提高系统的性能。

  • 大小: 24.6 KB
分享到:
评论
3 楼 fjlyxx 2008-12-01  
SOA传送机制,有意思讨论.
我觉得问题的关键不在于用什么技术好.而在于讨论用长连接还是短连接,还是混合使用.在什么情况下使用?有兴趣可以讨论下.这涉及到一个SOA网络传输的机制问题.我发个贴讨论下吧.
2 楼 raymond2006k 2008-11-10  
我理解应该是相似的。

我的体会和EDA是类似的,但它们应该又有很大不同。
EDA,我的理解,它更进一步将其由一种程序设计模式变为一种明确架构思想。

并且 event-driven 比单纯的 async,listener模式有更丰富的内涵。传统模式下 requestor 是主动,即便是异步调用,业务功能的执行也是由 请求者发起的; 而 EDA成了一种完全被动式的架构, 业务功能的执行 完全由其他某个相关的功能调用 或 数据变化引起 。
1 楼 upheart 2008-11-10  
SCA中好像规定了这种异步的回调机制,不知和你说的是否有些相似?
现在好多人除了soa之外有开始宣传EDA(event-driven architecure),我觉得和你说的也有关系,infoq上好像有不少soa和 eda直接争论的文章。

相关推荐

    Java NIO - The NIO Architecture

    综上所述,Java NIO不仅是一次技术革新,也是对整个Java平台的一次重大升级。它解决了传统I/O模型中的许多问题,提供了更高效、更灵活的数据处理方式。通过NIO,Java开发者能够在多任务并发环境中构建高性能的应用...

    java NIO.zip

    通过MappedByteBuffer类,可以直接在内存中对文件进行操作,提高大文件处理的性能。 7. **管道(Pipes)**: 管道用于在两个线程间创建单向数据通道,它们并不直接与任何外部资源关联,而是线程间的通信工具。 总...

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大...NIO API 是对 1.3 版 I/O 特性的补充而非取代,因此,何时使用新的 API,何时老的 1.3 版 I/O API 更适合特定应用,也是您将学习的内容。

    Java NIO英文高清原版

    以下是对这些核心概念的详细解释: 1. **通道(Channel)**:在NIO中,数据是通过通道进行传输的。通道是一种连接到I/O设备(如文件、套接字或网络接口)的途径,可以实现数据的读取和写入。与BIO中的流不同,通道...

    NIO 入门.chm,NIO 入门.chm

    **NIO(New Input/Output)是Java编程语言中用于替代标准I/O(BIO,Blocking I/O)的一组API,它提供了非阻塞式的I/O操作方式,极大地提升了Java在处理I/O密集型应用时的性能。NIO在Java 1.4版本中被引入,之后在...

    基于nio实现的多文件上传源码

    - 对大文件,可以考虑分块传输,每块单独处理,提高并发性。 - 添加错误处理和重试机制,确保文件上传的可靠性。 总的来说,基于NIO实现的多文件上传源码充分利用了NIO的非阻塞特性和并发能力,提高了文件传输效率...

    Java IO, NIO and NIO.2

    NIO.2还包含了许多其他的API扩展和改进,例如对符号链接的支持、文件属性访问、文件树遍历、WatchService等。 以上介绍了Java中的三种I/O机制。在实际开发中,它们各有适用场景。例如,Java IO适合进行传统的I/O...

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    javaNiO.doc

    ### Java NIO (New IO) 详解 #### 1. 引言 在Java的世界里,I/O(Input/Output)操作是程序与外部环境进行交互的重要方式之一。随着技术的发展,传统I/O模型逐渐显露出一些局限性,特别是在处理高并发场景下,其...

    nio demo for nio学习笔记(体系结构以及模块介绍)

    **NIO(Non-blocking Input/Output)**是Java在1.4版本引入的一种新的I/O模型,它提供了与...然而,NIO的学习曲线相对较陡峭,需要对操作系统级别的I/O模型有一定了解,但一旦掌握,将极大地提升系统的性能和可扩展性。

    基于nio的简易聊天室

    NIO的优势之一就是可以通过单个线程管理多个连接,但如果需要对每个连接进行复杂的业务处理,可能还需要创建工作线程池来处理读取到的数据。 6. **数据编码与解码**: 在网络通信中,数据需要经过编码才能在网络中...

    httpcore-nio-4.3.jar包

    HttpCore NIO 4.3版是对该框架的进一步优化和完善,增强了对HTTP/1.1协议的支持,同时保持了良好的兼容性和稳定性。 2. **Java NIO基础** Java NIO(New IO)是Java 1.4引入的一套新的I/O API,替代了传统的BIO...

    Java NIO系列教程(一) Java NIO 概述

    ### Java NIO 系列教程(一):Java NIO 概述 ...通过本文的学习,相信您已经对Java NIO的核心概念有了初步的了解。在未来的学习过程中,继续深入理解这些概念将有助于您更好地掌握Java NIO技术。

    java nio 包读取超大数据文件

    ### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...

    IO和NIO区别

    这种差异对数据的传输和处理方式产生了很大的影响。在标准 IO 中,数据是以流的形式读取和写入的,而 NIO 则将数据读取到一个缓冲区,然后再进行处理。 2. 同步和异步 标准 IO 流是线程堵塞和同步的,当一个线程...

    JAVA-NIO-DEMO

    2. **缓冲区(Buffers)**:缓冲区是数据操作的基本单位,所有对数据的操作都是通过缓冲区进行的。它们提供了一种在通道与应用程序之间存储数据的方式。 3. **选择器(Selectors)**:选择器允许单个线程监控多个...

    java NIO实例

    缓冲区是一个可以容纳特定类型数据(如字节、字符、整数等)的容器,它提供了对数据的高效访问和管理。 4. **FileChannel**:用于文件的读写,可以实现大文件的高效传输,支持内存映射(Mmap)技术,能直接将文件...

    java NIO技巧及原理

    Java NIO(New Input/...总之,Java NIO提供了强大的I/O能力,但同时也需要开发者对非阻塞I/O和多路复用有深入理解,才能充分发挥其优势,避免潜在的陷阱。学习和掌握NIO,对于提升Java应用的性能和扩展性至关重要。

Global site tag (gtag.js) - Google Analytics