浏览 2175 次
锁定老帖子 主题:NIO对SOA的启发
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-10
最后修改:2008-11-10
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 式的改造,来提高系统的性能。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-10
SCA中好像规定了这种异步的回调机制,不知和你说的是否有些相似?
现在好多人除了soa之外有开始宣传EDA(event-driven architecure),我觉得和你说的也有关系,infoq上好像有不少soa和 eda直接争论的文章。 |
|
返回顶楼 | |
发表时间:2008-11-10
最后修改:2008-11-10
我理解应该是相似的。
我的体会和EDA是类似的,但它们应该又有很大不同。 EDA,我的理解,它更进一步将其由一种程序设计模式变为一种明确架构思想。 并且 event-driven 比单纯的 async,listener模式有更丰富的内涵。传统模式下 requestor 是主动,即便是异步调用,业务功能的执行也是由 请求者发起的; 而 EDA成了一种完全被动式的架构, 业务功能的执行 完全由其他某个相关的功能调用 或 数据变化引起 。 |
|
返回顶楼 | |
发表时间:2008-12-01
SOA传送机制,有意思讨论.
我觉得问题的关键不在于用什么技术好.而在于讨论用长连接还是短连接,还是混合使用.在什么情况下使用?有兴趣可以讨论下.这涉及到一个SOA网络传输的机制问题.我发个贴讨论下吧. |
|
返回顶楼 | |