介绍:
ICE(Internet Communication Engine),由ZeroC公司开发的一个中间件,是在CORBA的基础上进行演进而来,采用接口定义生成客户端和服务器端成根的方法来实现RPC通信,目前支持的语言有C++, Java, PHP, Ruby,.NET和Python,License方式有GPL和商业License两种,如果是在同一公司内部使用,不会分发给用户,因此可以免费使用(不知道理解是否正确?GPL)
性能比较:
开发一个简单的测试程序,如下:
String hello(string word);
上面两个函数主要来测试各个不同实现下的性能,以及实现麻烦程度:
鉴于目前流行的框架,提供了HTTP,Hesssion和ICE三种不同实现,以及性能对比测试:
调用者的线程数分别从1个,2个,4个,8个,16个,32个和64个进行性能比较
硬件配置:
10.2.226.7和10.2.226.9,2CPU(双核),相当于4核,内存4G,网卡100Mbs
使用10.2.226.7作为服务器,10.2.226.9作为客户端
Hello函数实现如下:
String hello(string word){
Return word;
}
调用次数固定为1000000次,结果如下:
使用ICE(版本3.2.1)方式,服务器端使用C++开发,客户端使用C++:
./clienticeperftest.exe -h 10.2.226.7 -n 1000000 -t Y
|
线程数 |
Hello(40字节) Cost ms/server load (client=java) |
Hello(320字节) Cost ms/server load |
getUserInfo cost ms/server load | |||
|
1 |
289528 |
0.1 |
387403 |
0.1 |
|
|
|
2 |
141580 |
0.2 |
199543 |
0.1 |
|
|
|
4 |
77050 |
0.4 |
106616 |
0.2 |
|
|
|
8 |
43986 |
0.8 |
58410 |
0.8 |
|
|
|
16 |
26605(55586) |
2 |
36965* |
1.6 |
|
|
|
32 |
29003(57336) |
1.4 |
36917* |
1.7 |
|
|
|
64 |
37184 |
1.2 |
36921* |
2 |
|
|
(*)到线程变成16个以上时,网络流量已经达到了100Mbs,就是说已经达到了网络带宽的极限
使用Hessian 开发,JBoss服务器,客户端使用Java开发,启用KeepAlive功能:
16个线程情况下,消耗时间为123490ms,但调用方的Load达到了惊人的12,服务器Load还好为2左右
使用Hessian测试结果表明:比C++ ICE慢5.5倍,Client Load提高10倍,不过性能也还可以,可以达到8000/秒的操作次数。
本文通过使用ICE、Hessian及HTTP三种不同实现方式,测试了在不同线程数下的性能表现,比较了ICE与其他框架在性能、实现复杂度及负载上的差异。实验结果显示ICE在特定场景下展现出较好的性能与效率。
295

被折叠的 条评论
为什么被折叠?



