2007-01-17
几种基于HTTP协议的RPC性能比较
关键字: burlap hessian
有了整体的了解后,可以发现Hessian的这个远程过程调用,完全使用动态代理来实现的,其实从客户端代码不难看出,HessianProxyFactory的create方法就是创建接口Basic的代理类,该类实现了Basic接口,JDK的proxy类会自动用 InvocationHandler 的实现类(该类在Hessian中表现为HessianProxy)的invoke方法体 来填充所生成代理类的方法体,从而实现远程调用,传输过程使用的是基于Http的二进制字节流。
RMI与Hessian的调用过程比较:
服务端的是一个简单的加密、解密方法,各种协议使用同一个实现的代码。
客户端是独立的java程序,分别用各种协议对服务端的方法进行调用。每一种协议循环调用n次,然后取平均值。
循环1,000次的测试
第一次
第二次
循环10,000次的测试
第一次
第二次
测试结果
Hessian最快,Burlap第二,REST第三,Axis最慢。前3种要比Axis快了10倍或者更多。
上面的测试,服务端用的是Resin-3.0.13,出于好奇,我又用Tomcat-5.5.9测试了一把,结果是Resin确实比Tomcat快些。Tomcat-5.5.9 循环10,000次的测试
RMI与Hessian的调用过程比较:
Hessian:客户端(basic.hello())——>序列化写到输出流——>远程方法(服务器端)——>序列化写到输出流 ——>客户端读取输入流——>输出结果 RMI:客户端——>stub——>序列化——>skeleton——>远程方法——>序列化——>stub—— >输出结果
服务端的是一个简单的加密、解密方法,各种协议使用同一个实现的代码。
客户端是独立的java程序,分别用各种协议对服务端的方法进行调用。每一种协议循环调用n次,然后取平均值。
循环1,000次的测试
第一次
Axis --------------->> Total time: 11123 ms, Avg time: 11.123 ms Burlap ------------->> Total time: 866 ms, Avg time: 0.866 ms Hessian ------------>> Total time: 581 ms, Avg time: 0.581 ms REST --------------->> Total time: 929 ms, Avg time: 0.929 ms AxisUsingWSDL2Java ->> Total time: 11998 ms, Avg time: 11.998 ms
第二次
Axis --------------->> Total time: 11256 ms, Avg time: 11.256 ms Burlap ------------->> Total time: 816 ms, Avg time: 0.816 ms Hessian ------------>> Total time: 582 ms, Avg time: 0.582 ms REST --------------->> Total time: 919 ms, Avg time: 0.919 ms AxisUsingWSDL2Java ->> Total time: 11908 ms, Avg time: 11.908 ms
循环10,000次的测试
第一次
Axis --------------->> Total time: 88013 ms, Avg time: 8.8013 ms Burlap ------------->> Total time: 5789 ms, Avg time: 0.5789 ms Hessian ------------>> Total time: 5162 ms, Avg time: 0.5162 ms REST --------------->> Total time: 8316 ms, Avg time: 0.8316 ms AxisUsingWSDL2Java ->> Total time: 112801 ms, Avg time: 11.2801 ms
第二次
Axis --------------->> Total time: 87359 ms, Avg time: 8.7359 ms Burlap ------------->> Total time: 5784 ms, Avg time: 0.5784 ms Hessian ------------>> Total time: 5084 ms, Avg time: 0.5084 ms REST --------------->> Total time: 7983 ms, Avg time: 0.7983 ms AxisUsingWSDL2Java ->> Total time: 113234 ms, Avg time: 11.3234 ms
测试结果
Hessian最快,Burlap第二,REST第三,Axis最慢。前3种要比Axis快了10倍或者更多。
上面的测试,服务端用的是Resin-3.0.13,出于好奇,我又用Tomcat-5.5.9测试了一把,结果是Resin确实比Tomcat快些。Tomcat-5.5.9 循环10,000次的测试
Axis --------------->> Total time: 122551 ms, Avg time: 12.2551ms Burlap ------------->> Total time: 6401 ms, Avg time: 0.6401ms Hessian ------------>> Total time: 5745 ms, Avg time: 0.5745ms REST --------------->> Total time: 8090 ms, Avg time: 0.809ms AxisUsingWSDL2Java ->> Total time: 156908 ms, Avg time: 15.6908ms
评论
general
2008-07-23
还问一个问题,不知道你测试的相关软件的版本都是多少呢?
general
2008-07-23
我想问一下,hessian的加密解决该如何完成呢?
我找了很多网上很多内容,都无法得到正解。你是否能给我解个惑呢?
谢谢!
我找了很多网上很多内容,都无法得到正解。你是否能给我解个惑呢?
谢谢!
发表评论
- 浏览: 36243 次
- 性别:

- 来自: 天堂和地狱的中间

- 详细资料
搜索本博客
我的相册
烦人的老婆
共 1 张
共 1 张
最近加入圈子
链接
最新评论
-
几种基于HTTP协议的RPC性 ...
还问一个问题,不知道你测试的相关软件的版本都是多少呢?
-- by general -
几种基于HTTP协议的RPC性 ...
我想问一下,hessian的加密解决该如何完成呢? 我找了很多网上很多内容,都无 ...
-- by general -
mysql中存储过程
不知道,有没有遇到需要根据表名返回表记录总数的情况(在oracle,mssqls ...
-- by superherosk123 -
JSP页面缓存设置
引用[i][/i]引用 [img][/img][url][/url][fl ...
-- by intogether -
JSP自定义标签学习心得
thank you
-- by zhengbin917943






评论排行榜