Java领域中的分布式框架比较的多,分析一个已有的远程调用框架无论是对于打算采用已有成果还是自己做分布式框架,都是很必要的事情,JBoss Remoting是其中很好很强大的一个框架,在此来对JBoss Remoting进行深入的分析,看看JBoss Remoting是如何基于java.net提供的包去解决这些问题的,本文所分析的JBoss Remoting源码的版本为2.2.2_SP2,本来以为会是篇不怎么长的文档,没想到还没写的详细和深入的时候就已经有三十多页了,也不好在这里直接贴出来,就把文档目录和最后的总结部分贴在这了,感兴趣的同学们可以从这个地址下载PDF版本的文档:
http://www.riawork.org/opendoc/JBoss.Remoting.Opendoc.pdf
目录:
1 分布式应用概述
2 分析JBoss Remoting
2.1 Socket方式远程调用
2.2 多种调用方式的支持
2.3 远程加载class的支持
2.4 高并发下的稳定性
2.5 异常处理
2.6 提高性能
2.7 集群的支持
3 学到了什么
4 总结
总结
从对JBoss Remoting的分析中,分布式应用带来的需要深入学习的知识体系较之集中式的应用多了很多,最基础也最明显的涉及到的知识体系有:网络通讯(涉及到的有协议、网络I/O等)、java网络编程(java.net包、NIO等)、序列化机制、并发编程、池技术等,就这些知识点每个拓展开来讲都可以讲成大篇甚至一本书的范畴,对于大型分布式应用而言,涉及的知识体系就更多了,例如还需要掌握cluster环境下的处理(很多东西到了集群环境下复杂程度绝对是需要以翻倍来计算的,而且很多现在的处理方式都会变得不可用)、load balance策略等,本文也只是对JBoss Remoting的一些基本以及关键的特点进行了分析(最开始的时候打算叫深入分析JBoss Remoting的,不过写到最后发现其实还有很多细节和深入的部分并没有写,因此还是改名叫分析JBoss Remoting了),其中其实还有很多细节是值得研究和学习的,希望有研究的同仁们贡献出其他方面的研究或指出本文错误的地方,非常感谢。
大型的分布式应用中不可能要求每个开发人员都去掌握这些知识体系,因此对于大型分布式应用而言,提供一个分布式的框架是非常有必要的,做到将分布式应用涉及的相关知识点尽量的剥离,就像Erlang,做到将并发的基础知识分离。
JBoss Remoting解决了很多分布式应用所需面对的问题,是目前可选的开源分布式框架中一个很不错的选择,并且其在保证高并发场景下的稳定性和性能提升上也做了很多的工作,但还是有很多可提升的空间,例如统一的远程调用的API上(还可以进一步加强透明化的oneway、异步的调用)、NIO的支持、异步调用的提升(或者可以考虑提供结合MQ实现的异步调用)等等,而如果要成为大型分布式应用的支撑平台,无论是性能上还是功能上,JBoss Remoting还有不少需要改进和提升的地方。
分布式应用较之集中式应用在对象的接口的设计和使用上也有了更高的要求,例如不要出现依靠参数引用传递来隐性的填充一些值、远程对象应是线程安全的、尽量不要出现频繁调用远程对象的现象、尽量减少往返传输大对象的现象等等细节。
分布式应用对比集中式应用而言,无论是开发还是支撑框架上都复杂了很多,因此尽管分布式应用相对集中式应用而言,能够带来机器配置要求降低、系统结构更加清晰和松耦合、降低维护的复杂度等等优点,但还是应该做到能不分布式就尽量不要分布式。
本文首发于:http://www.blogjava.net/BlueDavy/archive/2008/05/04/198271.html
分享到:
相关推荐
Java领域中的分布式框架比较的多,分析一个已有的远程调用框架无论是对于打算采用已有成果还是自己做分布式框架,都是很必要的事情,JBoss Remoting是其中很好很强大的一个框架,在此来对JBoss Remoting进行深入的分析
### JBoss Remoting框架解析 #### 一、分布式应用概览及挑战 在Java领域内,随着业务需求的不断扩展和技术的进步,分布式应用已经成为解决大规模系统设计中的常见方案。相较于集中式应用,分布式应用最核心的挑战...
【标题】"jbossas7_seamremoting_jpa_小例子" 涉及的知识点主要集中在Java企业级开发的几个核心组件上,包括JBoss Application Server 7(JBoss AS7)、Seam Remoting以及Java Persistence API(JPA)和Hibernate。...
JBoss EAP 6.4 是一款广泛应用的企业级应用服务器,尤其适合部署Web应用程序。本文主要介绍了如何配置和管理JBoss EAP 6.4,包括安装和部署FineReport、修改服务器端口、调整内存设置以及改变Web工程的根目录。 ...
7. **remoting**: JBoss Remoting是JBoss提供的远程调用框架,支持多种协议,如HTTP、RMI、IIOP等,使得应用程序能够跨网络透明地调用远程对象。 8. **messaging**: JBoss Messaging是JBoss中的消息中间件,实现了...
理解这个启动顺序有助于我们分析启动时遇到的问题,例如,如果某个服务未启动,可能是因为配置错误或依赖项缺失。 **JBoss占用的端口** JBoss在运行时会占用多个端口,用于不同的服务和通信: 1. **HTTP/HTTPS...
它通过 JBoss Remoting 与服务器控制器通信,数据交换采用自定义协议。在 standalone 模式下,控制器是单个的 host controller;在 domain 模式下,则是 domain controller。 4. **CLI 的特性** - **交互式模式**...
这通常涉及开启JMX Remoting接口,并配置必要的安全设置。 2. **客户端设置**:在客户端,我们需要导入必要的JMX和RMI库,然后创建一个`MBeanServerConnection`实例。这通常通过`JMXConnectorFactory`完成,它会...
jboss as 7.1.1版本中remoting模块存在内存泄漏问题,使用zip包中内容进行替换,可以修改该问题
该漏洞主要影响JBoss AS 7.x和EAP 6.x版本,这些版本中包含了`org.jboss.remoting3.protocol.ser`包,该包处理反序列化时存在缺陷。攻击者可以通过发送特制的序列化对象到服务器的RMI注册表,触发恶意代码执行。RMI...
JBoss Remoting被更新到稳定版本2.2.x,JBoss MQ在JBoss 4.0中被默认使用,但是可以被JBoss Messaging替换。另外,log4j和commons-logging的版本也有所更新。 综上所述,手册中的内容详细记录了JBoss应用服务器的...
【标题】"jbosssas7_seamremoting_jpa_小例子简"涉及的知识点主要集中在Java企业级开发的几个关键组件上:JBoss Application Server 7 (JBoss AS 7)、Seam Remoting以及Java Persistence API (JPA)。让我们详细探讨...
`jboss-remoting.jar`是JBoss的远程通信库,它负责处理客户端和服务器之间的通信,包括序列化、网络传输和协议处理。这对于EJB的远程调用至关重要,因为它允许EJB方法被分布在不同网络上的客户端调用。 `jboss-all-...
- **案例分析**:提供实际应用中的案例来帮助理解状态管理的重要性。 - **第四章:对话(Conversations)** - **对话模式**:解释 Seam 中对话的概念及其工作原理。 - **实现细节**:详细介绍如何在应用程序中...
JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...
* JBoss Modules、JBoss MSC、JBoss logging、JBoss Web、JBoss EJB、Weld、HornetQ、Undertow、Arquillian、Ironjacamar (JCA)、JBoss XNIO、JBoss Remoting、Resteasy、Infinispan、JBoss Forge等组件。...
2. **jboss-remoting.jar**:这个文件是JBoss Remoting框架的一部分,用于远程方法调用(RMI)和跨网络通信。它支持多种传输协议,如HTTP、NIO和JMS,为分布式系统提供高效、灵活的通信机制。 3. **mysql-connector...
9. **Application Server Libraries**:具体取决于你使用的应用服务器,例如,如果你使用的是JBoss,可能包含`jboss-all-client.jar`或其他特定于服务器的库。 10. **其他辅助库**:比如日志框架(如`log4j.jar`)...
.NET Remoting是.NET Framework的一个特性,允许对象在不同的应用程序域(AppDomain)之间进行通信,无论是位于同一台机器还是跨网络的不同机器。在ESB中,Remoting可以作为服务总线的一部分,提供跨进程、跨网络的...