论坛首页 Java企业应用论坛

NIO对SOA的启发

浏览 2175 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-10   最后修改:2008-11-10
     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
   发表时间:2008-11-10  
SCA中好像规定了这种异步的回调机制,不知和你说的是否有些相似?
现在好多人除了soa之外有开始宣传EDA(event-driven architecure),我觉得和你说的也有关系,infoq上好像有不少soa和 eda直接争论的文章。
0 请登录后投票
   发表时间:2008-11-10   最后修改:2008-11-10
我理解应该是相似的。

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

并且 event-driven 比单纯的 async,listener模式有更丰富的内涵。传统模式下 requestor 是主动,即便是异步调用,业务功能的执行也是由 请求者发起的; 而 EDA成了一种完全被动式的架构, 业务功能的执行 完全由其他某个相关的功能调用 或 数据变化引起 。
0 请登录后投票
   发表时间:2008-12-01  
SOA传送机制,有意思讨论.
我觉得问题的关键不在于用什么技术好.而在于讨论用长连接还是短连接,还是混合使用.在什么情况下使用?有兴趣可以讨论下.这涉及到一个SOA网络传输的机制问题.我发个贴讨论下吧.
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics