hession、burlap和http invoker远程调用方案的使用和比较

java远程调用接口、URL的方式 阅读详情

    本文转自:http://nenty.javaeye.com/blog/518782


 

    几种通讯协议的比较 
    一、综述 
    本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。 
    RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。 
    Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。 
    Httpinvoker是SpringFramework提供的远程通讯协议,只能用于JAVA程序间的通讯,且服务端和客户端必须使用SpringFramework。 
    Web service是连接异构系统或异构语言的首选协议,它使用SOAP形式通讯,可以用于任何语言,目前的许多开发工具对其的支持也很好。 

    测试结果显示,几种协议的通讯效率依次为: 
    RMI > Httpinvoker >= Hessian >> Burlap >> web service 
    RMI不愧是JAVA的首选远程调用协议,非常高效稳定,特别是在大数据量的情况下,与其他通讯协议的差距尤为明显。 
    HttpInvoker使用java的序列化技术传输对象,与RMI在本质上是一致的。从效率上看,两者也相差无几,HttpInvoker与RMI的传输时间基本持平。 
    Hessian在传输少量对象时,比RMI还要快速高效,但传输数据结构复杂的对象或大量数据对象时,较RMI要慢20%左右。 
    Burlap仅在传输1条数据时速度尚可,通常情况下,它的毫时是RMI的3倍。 
    Web Service的效率低下是众所周知的,平均来看,Web Service的通讯毫时是RMI的10倍。 

    二、结果分析 
    1、直接调用 
    直接调用的所有毫时都接近0,这说明程序处理几乎没有花费时间,记录的全部时间都是远程调用耗费的。 
    2、RMI调用 
    与设想的一样,RMI理所当然是最快的,在几乎所有的情况下,它的毫时都是最少的。特别是在数据结构复杂,数据量大的情况下,与其他协议的差距尤为明显。 
    为了充分发挥RMI的性能,另外做了测试类,不使用Spring,用原始的RMI形式(继承UnicastRemoteObject对象)提供服务并远程调用,与Spring对POJO包装成的RMI进行效率比较。结果显示:两者基本持平,Spring提供的服务还稍快些。 
    初步认为,这是因为Spring的代理和缓存机制比较强大,节省了对象重新获取的时间。 
    3、Hessian调用 
    caucho公司的resin服务器号称是最快的服务器,在java领域有一定的知名度。Hessian做为resin的组成部分,其设计也非常精简高效,实际运行情况也证明了这一点。平均来看,Hessian较RMI要慢20%左右,但这只是在数据量特别大,数据结构很复杂的情况下才能体现出来,中等或少量数据时,Hessian并不比RMI慢。 
    Hessian的好处是精简高效,可以跨语言使用,而且协议规范公开,我们可以针对任意语言开发对其协议的实现。目前已有实现的语言有:java, c++, .net, python, ruby。还没有delphi的实现。 
    另外,Hessian与WEB服务器结合非常好,借助WEB服务器的成熟功能,在处理大量用户并发访问时会有很大优势,在资源分配,线程排队,异常处理等方面都可以由成熟的WEB服务器保证。而RMI本身并不提供多线程的服务器。而且,RMI需要开防火墙端口,Hessian不用。 
    4、Burlap调用 
    Burlap与Hessian都是caucho公司的开源产品,只不过Hessian采用二进制的方式,而Burlap采用xml的格式。 
测试结果显示,Burlap在数据结构不复杂,数据量中等的情况下,效率还是可以接受的,但如果数据量大,效率会急剧下降。平均计算,Burlap的调用毫时是RMI的3倍。 
我认为,其效率低有两方面的原因,一个是XML数据描述内容太多,同样的数据结构,其传输量要大很多;另一方面,众所周知,对xml的解析是比较费资源的,特别对于大数据量情况下更是如此。 
    5、HttpInvoker调用 
HttpInvoker是SpringFramework提供的JAVA远程调用方法,使用java的序列化机制处理对象的传输。从测试结果看,其效率还是可以的,与RMI基本持平。 
不过,它只能用于JAVA语言之间的通讯,而且,要求客户端和服务端都使用SPRING框架。 
另外,HttpInvoker 并没有经过实践的检验,目前还没有找到应用该协议的项目。 
    6、web service调用 
    本次测试选用了apache的AXIS组件作为WEB SERVICE的实现,AXIS在WEB SERVICE领域相对成熟老牌。 
    为了仅测试数据传输和编码、解码的时间,客户端和服务端都使用了缓存,对象只需实例化一次。但是,测试结果显示,web service的效率还是要比其他通讯协议慢10倍。 
    如果考虑到多个引用指向同一对象的传输情况,web service要落后更多。因为RMI,Hessian等协议都可以传递引用,而web service有多少个引用,就要复制多少份对象实体。 
    Web service传输的冗余信息过多是其速度慢的原因之一,监控发现,同样的访问请求,描述相同的数据,web service返回的数据量是hessian协议的6.5倍。另外,WEB SERVICE的处理也很毫时,目前的xml解析器效率普遍不高,处理xml <-> bean很毫资源。从测试结果看,异地调用比本地调用要快,也从侧面说明了其毫时主要用在编码和解码xml文件上。这比冗余信息更为严重,冗余信息占用的只是网络带宽,而每次调用的资源耗费直接影响到服务器的负载能力。(MS的工程师曾说过,用WEB SERVICE不能负载100个以上的并发用户。) 
测试过程中还发现,web service编码不甚方便,对非基本类型需要逐个注册序列化和反序列化类,很麻烦,生成stub更累,不如spring + RMI/hessian处理那么流畅简洁。而且,web service不支持集合类型,只能用数组,不方便。 

RPC通信基本原理 -- 浅析RPC远程过程调用基本原理 RPC 的全称是是一种进程间通信方式。RPC只是一个概念 而不是具体的协议或框架。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。 阅读详情

相关推荐

JAVA开发中的常用通讯协议

在JAVA开发中,通讯协议是实现不同系统或组件之间数据交换的基础。随着分布式系统和微服务架构的流行,掌握常用的通讯协议对于JAVA开发者来说至关重要。本文将介绍在JAVA开发中常用的几种通讯协议,以及它们的特点和应用场景。

qq_56438516的博客 1230

几种远程调用方式

远程调用,是指进程间的功能调用。进程和进程既可以在于同一台计算机,也可以存在于不同的计算机上。远程并不是指距离上的远程,而是指由于进程和进程之间彼此隔离,跨越进程的边界,才叫远程。Web API就是一种可以被远程调用的服务。让我们来了解一下什么是远程调用,以及为什么Web API这种远程过程调用方式这么流行。

寒冰屋的专栏 1万+

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记

Spatio-Temporal Graph Convolutional Networks: A Deep Learning Framework for Traffic Forecasting 论文笔记-----GCN在交通领域的应用(二) 一、论文翻译: 1、摘要: 及时准确地交通预测对于城市交通控制和指导具有至关重要的意义。由于交通流量的非线性和复杂性,传统的方法不能满足中长期预测任务的需求,并且往往会忽略时空数据的时间和空间依赖特性。在这篇论文中,为了处理在交通领域的时间序列预测问题...

cy_believ的博客 1916

Java远程调用

Java远程调用的三种方式及其特点 文章目录Java远程调用的三种方式及其特点前言一、RestTemplate1.RestTemplate介绍2.RestTemplate使用1 引入pom2 编写Config配置类3 编写Controller使用二、Web Client1.Web Client介绍1.Web Client使用1 引入pom2 编写配置文件3 使用3 Fegin1.Fegin介绍2.Fegin使用1.导入pom文件2.启动类添加注解开启fegin3.编写Fegin接口4.使用 前言 Jav

weixin_48004149的博客 3025

【树莓派4B】八、树莓派软路由,Ubuntu18.04配置路由转发

我的目的是通过把树莓派做成一个软路由,相当于一个智能路由器。 材料 树莓派4B,操作系统其实可以是其他的Linux版本。以为4B自带无线网卡,就用自带无线网卡作为路由出口。 大概思路 具体步骤 配置两个网卡的IP sudo vim /etc/network/interface 这里设置静态IP,也可以动态获取。 #Local loopback auto lo iface lo inet loopback #Ethernet0 auto eth0 iface eth0 inet static addr

林愿留的博客 10万+

RK3588S开发板实战:手把手教你搞定IMX415摄像头驱动配置(附调试日志分析)

本文提供了一份详细的RK3588S开发板配置IMX415摄像头驱动的实战指南。内容涵盖从环境准备、内核驱动编译、设备树节点编写到调试日志分析的完整流程,并重点解析了摄像头调试过程中的常见问题与解决方案,帮助开发者快速完成驱动配置与功能验证。

weixin_28285943的博客 204

hession、burlap和http invoker远程调用方案的使用和比

一、综述 本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。 RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。 Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公开,可以用于任意语言。 Httpinvoker是SpringFramework提供的远程通讯协议,只能用于J

1014

【OTDR曲线工具箱】04 批量生成sor文件

软件下载地址:http://120.78.150.214:9999/isora.zip 通过一个测试数据sor文件,批量生成多个测试文件(基于Bellcore GR196及SR-4731标准)。主要考虑哪些问题: 1、sor测试是否符合要求(主要是衰减系数) 2、多个文件的创建时间 3、文件必须随机处理,不要看省去一模一样。 来说说怎么操作的 第一步:选择参考曲线 参考曲线的选择由两种方法:从文件中导入、从曲线库中选择。 其中曲线库分为公共库和个人库两种,平时浏览的sor文件都可以加载到库中。 第二步

夜晚是传说的博客 5266

Spring RMI,Hessian/Burlap,HttpInvoker的区别

1 Hessian/Burlap 方式     客户端通过Hessian/BurlapProxyFactoryBean生成的代理对象负责通过HTTP协议与远程服务通信。 在服务端,HessianServiceExporter是一个Spring MVC的控制器,可以通过接收请求并将这些请求翻译成对POJO对象的调用将POJO输出为一个服务。 需要添加两处配置 (1)S

任何技能都是从模仿开始,逐步升华。 2106

S/4HANA Private Cloud 与 On-Premise 的 Key User Custom Fields 运输与升级避坑指南

本文探讨了SAP S/4HANA Cloud Private Edition和On-Premise系统中Key User Custom Fields的管理要点。文章指出,Custom Fields涉及元数据生成、对象一致性、传输治理等完整链路,操作不当会导致字段丢失或升级失败。关键建议包括:使用ATO Fiori App管理扩展项与传输绑定,配置正确的job user权限,避免在多系统并行开发同一字段。特别强调升级时需执行CFD_REGENERATE_IN_ONPREMISE报表,并通过标准传输机制推进变更

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 195

【C2000系列DSP的双向DC-DC电源】基于TMS320F28034的DC-DC项目开发流程

理解DC-DC 双向电源(基于 TMS320F28034)的开发流程,需要从功能拆解、开发步骤、验证 / 测试项

昔时扬尘处 323

spring remote支持

spring 远程服务支持spring提供了一致的架构模式支持基于不同协议的远程服务调用 spring remote模块提供的远程访问协议如下: Spring’s Http Invoker:基于http协议连接,使用java原生序列化机制,弥补RMI和Hession各自的缺点,兼容两者的优势 RMI(Remote Method Invocation):远程方法调用,基于socket连

lonng的专栏——玩的也要有深度 1200

Unity中使用TCP和UDP传输摄像头视频的实践

本文探讨了在Unity中通过TCP和UDP协议传输摄像头视频的实现方法。TCP通过自定义消息帧保证数据完整性但效率较低,UDP传输速度快但可能丢帧。文章提供了Python和Unity的代码示例,分析了两种协议的适用场景:TCP适合要求数据完整性的应用,UDP则适合追求实时性的场景。最终选择取决于具体需求,并需要注意线程安全与同步机制。

m0_74337424的博客 145

Spring实战——远程服务同步调用技术RMI、Hessian、Burlap、HttpInvoker、WebService

有多种可以使用的远程调用技术,包括: 远程方法调用(Remote Method Invocation,RMI) Caucho的Hessian和Burlap Spring基于HTTP的远程服务 使用JAX-RPC和JAX-WS的Web Service 注:关于JAX-RPC和JAX-WS的历史,可以参考 ...

ystyaoshengting的专栏 504

YoloV8优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列

感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4263

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

几种通讯协议的比较

 一、综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的远程通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burlap是caucho公司提供的开源协议,基于HTTP传输,服务端不用开防火墙端口。协议的规范公

taoff的专栏 3580

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

RPC协议

(1)RPC:(Remote Procedure Call Protocol)远程过程调用协议。是一种协议(一套规范),而不是框架。 (2)基于RPC协议的相关框架: Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。 SpringCloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,提供了丰富的生态组件。 Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。 Tars:

java全包开发,java辅导 1738

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

RPC——RPC协议介绍及原理详解

RPC(Remote Procedure Call Protocol) 远程过程调用协议。RPC是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。RPC主要作用就是不同的服务间方法调用就像本地调用一样便捷。序列化:将消息对象转换为二进制流。反序列化:将二进制流转换为消息对象。

Andya_net的博客 4万+

RPC协议小结

1、RPC(Remote Procedure Call、远程过程调用):它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议 RPC包含了HTTP协议 2、常用RPC框架 一、RMI(Remote Method Invocation,远程方法调用):JDK自带RPC,有很多局限性,不推荐使用 二、Dubbo:阿里开源的高性能服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring无缝集成。目前Dub...

li_chunlong的专栏 455

Java访问远程接口的几种方式

一.Java访问远程url接口并获取结果 1.原生JavaAPI获取 package com.util; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.MalformedURLExcep

weixin_42408447的博客 3079

远程调用原理与对比RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS

&lt;转自http://blog.sina.com.cn/s/blog_56fd58ab0100mrl6.html&gt; 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些...

yypiao的专栏 412

常见的远程调用

需要使用Remote类、Naming、LocateRegistry类的方法。1、 Dubbo和Java官方RMI类似,也通过抽象接口类来调用远方的实现类。需要把方法名、参数列表通过网络传输,发给服务提供方。1、把接口类和实现类分开,部署在各自的Java虚拟机中。需要每次固定的选择服务器来调用对象方法。1、怎么把接口类的方法调用转换成网络数据?把方法调用的参数列表转成二进制序列。把二进制序列用网络发给服务提供方。接收服务提供方回复的结果数据。服务的每个方法和HTTP路径绑定。把对象返回给方法调用者。

2401_89847635的博客 289
上一篇: Hession入门介绍
下一篇: 这样的程序试题,你能够答得上来,那你就牛B了
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值