基于dubbo 2.5.3框架,使用zookeeper作为dubbo服务注册中心,分别以单线程和多线程的方式测试以下方案:
Protocol | Transporter | Serialization | Remark | |
A | dubbo 协议 | netty | hessian2 | |
B | dubbo 协议 | netty | dubbo | |
C | dubbo 协议 | netty | java | |
D | RMI 协议 | netty | java | |
E | RMI 协议 | netty | hessian2 | |
F | Hessian 协议 | servlet | hessian2 | Hessian,基于tomcat容器 |
G | WebService 协议 | servlet | SOAP | CXF,基于tomcat容器 |
三、传输测试数据
========
1、单POJO对象,嵌套复杂集合类型
2、POJO集合,包含100个单POJO对象
3、1K字符串
4、100K字符串
5、1M字符串
四、服务接口和实现
=========
1、服务接口相关代码:
1 package ibusiness; 2
3 import java.util.List; 4
5 import model.*;
6
7 public interface IBusinessOrder { 8 public String SendStr(String str); 9
10 public List LoadOrders(List orders);
11
12 public OrderInfo LoadOrder(OrderInfo order);
13 }
2、服务实现相关代码,测试数据在服务器端不做任何处理原样返回:
View Code
五、单线程测试
=======
1、测试仅记录rpc调用时间,测试数据的读取组装以及首次建立连接等相关耗时时间不作统计,循环执行100次取平均值。
2、服务消费方测试代码
View Code
3、测试数据耗时记录
A、dubbo 协议、netty 传输、hessian2 序列化
<dubbo:protocol name=“dubbo” server=“netty” port=“30001” serialization=“hessian2” />
单个POJO | 0.958毫秒 |
POJO集合 (100) | 1.438毫秒 |
1K String | 0.68毫秒 |
100K String | 4.262毫秒 |
1M String | 32.473毫秒 |
B、dubbo 协议、netty 传输、dubbo 序列化
<dubbo:protocol name=“dubbo” server=“netty” port=“30001” serialization=“dubbo” />
单个POJO | 1.45毫秒 |
POJO集合 (100) | 3.42毫秒 |
1K String | 0.94毫秒 |
100K String | 4.35毫秒 |
1M String | 27.92毫秒 |
C、dubbo 协议、netty 传输、java 序列化
<dubbo:protocol name=“dubbo” server=“netty” port=“30001” serialization=“java” />
单个POJO | 1.91毫秒 |
POJO集合 (100) | 4.48毫秒 |
1K String | 1.0毫秒 |
100K String | 3.3毫秒 |
1M String | 18.09毫秒 |
D、RMI 协议、netty 传输、java 序列化
<dubbo:protocol name=“rmi” server=“netty” port=“1099” serialization=“java” />
单个POJO | 1.63毫秒 |
POJO集合 (100) | 5.15毫秒 |
1K String | 0.77毫秒 |
100K String | 2.15毫秒 |
1M String | 15.21毫秒 |
E、RMI 协议、netty 传输、hessian2 序列化
<dubbo:protocol name=“rmi” server=“netty” port=“1099” serialization=“hessian2” />
单个POJO | 1.63毫秒 |
POJO集合 (100) | 5.12毫秒 |
1K String | 0.76毫秒 |
100K String | 2.13毫秒 |
1M String | 15.11毫秒 |
F、Hessian协议、servlet(tomcat容器)、hessian2 序列化
<dubbo:protocol name=“hessian” port=“8080” server=“servlet” serialization=“hessian2” />
单个POJO | 1.6毫秒 |
POJO集合 (100) | 5.98毫秒 |
1K String | 1.88毫秒 |
100K String | 5.52毫秒 |
1M String | 39.87毫秒 |
G、WebService协议、servlet(tomcat容器)、SOAP序列化
<dubbo:protocol name=“webservice” port=“8080” server=“servlet” />
单个POJO | 7.4毫秒 |
POJO集合 (100) | 34.39毫秒 |
1K String | 6.0毫秒 |
100K String | 7.43毫秒 |
1M String | 34.61毫秒 |
4、性能对比
六、线程测试
1、由于测试机器配置较低,为了避免达到CPU瓶颈,测试设定服务消费方Consumer并发10个线程,每个线程连续对远程方法执行5次调用,服务提供方设置允许最大连接数100个,同时5个连接并行执行,超时时间设置为5000ms, 要求所有事务都能正确返回没有异常,统计包含首次建立连接的消耗时间。
2、服务消费方测试代码
2、测试数据耗时记录
A、dubbo 协议、netty 传输、hessian2 序列化
<dubbo:protocol name=“dubbo” server=“netty” port=“30001” serialization=“hessian2” />
单个POJO | 1165毫秒 |
POJO集合 (100) | 1311毫秒 |
1K String | 1149毫秒 |
100K String | 1273毫秒 |
1M String | 2141毫秒 |
B、dubbo 协议、netty 传输、dubbo 序列化
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://img-blog.csdnimg.cn/img_convert/1a4f7b43db74f75e1dbd32f364f12a62.jpeg)
线程、数据库、算法、JVM、分布式、微服务、框架、Spring相关知识
一线互联网P7面试集锦+各种大厂面试集锦
学习笔记以及面试真题解析
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
)]
一线互联网P7面试集锦+各种大厂面试集锦
[外链图片转存中…(img-XFS1GhgP-1713606597034)]
学习笔记以及面试真题解析
[外链图片转存中…(img-0ljKBsqv-1713606597034)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!