ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> 其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播 >> dubbo典型协议、传输组件、序列化方式组合性能对比测试

dubbo典型协议、传输组件、序列化方式组合性能对比测试(2/5)

来源:网络整理     时间:2016-06-14     关键词:

本篇文章主要介绍了" dubbo典型协议、传输组件、序列化方式组合性能对比测试",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 一、前言Dubbo作为一个扩展能力极强的分布式服务框架,在实现rpc特性的时候,给传输协议、传输框架和序列化方式提供了多种扩展实现,供开发者根据实际场景进行选择...

1package ibusiness;
23import java.util.List;
45import model.*;
67publicinterfaceIBusinessOrder {8public String SendStr(String str); 
910public List LoadOrders(List orders); 
1112public OrderInfo LoadOrder(OrderInfo order);
13 }

2、服务实现相关代码,测试数据在服务器端不做任何处理原样返回:

1package business;
23import ibusiness.IBusinessOrder;
45import java.util.List;
67import model.*;
89publicclass BusinessOrder implementsIBusinessOrder {10public String SendStr(String str) {
11return str;
12    }
1314public List LoadOrders(List orders) {
15return orders;
16    }
1718public OrderInfo LoadOrder(OrderInfo order) {
19return order;
20    }
21 }

View Code

五、单线程测试

1、测试仅记录rpc调用时间,测试数据的读取组装以及首次建立连接等相关耗时时间不作统计,循环执行100次取平均值。

2、服务消费方测试代码

1import java.util.List;
23import org.springframework.context.ApplicationContext;
4import org.springframework.context.support.FileSystemXmlApplicationContext;
56import com.alibaba.dubbo.rpc.service.EchoService;
7import common.Common;
89import ibusiness.*;
10import model.*;
1112publicclass Program {
13publicstaticvoid main(String[] args) throws Exception {
1415         ApplicationContext ctx = new FileSystemXmlApplicationContext("src//applicationContext.xml");
16         IBusinessOrder orderBusiness = (IBusinessOrder) ctx.getBean("orderBusiness");
1718//        EchoService echoService = (EchoService) orderBusiness;19//        String status = echoService.$echo("OK").toString();20//        if (!status.equals("OK")) {21//            System.out.println("orderBusiness out of service!");22//            return;23//        } else {24//            System.out.println("orderBusiness in service !");25//        }2627long startMili, endMili;
28int loop = 100;
2930// 单个pojo31try {
32             OrderInfo order = Common.BuildOrder();
33             orderBusiness.LoadOrder(order); // 防止首次连接的开销3435             startMili = System.currentTimeMillis();
36             OrderInfo returnOrder = null;
37for (int i = 0; i < loop; i++) {
38                 returnOrder = orderBusiness.LoadOrder(order);
39            }
40             endMili = System.currentTimeMillis();
41             System.out.println("单个pojo 平均传输耗时为:" + ((endMili - startMili) / (float) loop) + "毫秒 ,返回对象BillNumber:" + returnOrder.getBillNumber());
42         } catch (Exception ex) {
43             System.out.println("单个pojo 测试失败!");
44//ex.printStackTrace();45        }
4647// pojo集合 (100)48try {
49             List orderList = Common.BuildOrderList();
50             startMili = System.currentTimeMillis();
51             List returnOrderList = null;
52for (int i = 0; i < loop; i++) {
53                 returnOrderList = orderBusiness.LoadOrders(orderList);
54            }
55             endMili = System.currentTimeMillis();
56             System.out.println("pojo集合 (100) 平均传输耗时为:" + ((endMili - startMili) / (float) loop) + "毫秒 ,返回记录数:" + returnOrderList.size());
57         } catch (Exception ex) {
58             System.out.println("pojo集合 (100) 测试失败!");
59        }
6061// 1K String62try {
63             String str1k = Common.Build1KString();
64             startMili = System.currentTimeMillis();
65             String returnStr1k = null;
66for (int i = 0; i < loop; i++) {
67                 returnStr1k = orderBusiness.SendStr(str1k);
68            }
69             endMili = System.currentTimeMillis();
70             System.out.println("1K String 平均传输耗时为:" + ((endMili - startMili) / (float) loop) + "毫秒,返回字符长度:" + returnStr1k.length());
71         } catch (Exception ex) {
72             System.out.println("1K String 测试失败!");
73        }
7475// 100K String76try {
77             String str100K = Common.Build100KString();
78             startMili = System.currentTimeMillis();
79             String returnStr100k = null;
80for (int i = 0; i < loop; i++) {
81                 returnStr100k = orderBusiness.SendStr(str100K);
82            }
83             endMili = System.currentTimeMillis();
84             System.out.println("100K String 平均传输耗时为:" + ((endMili - startMili) / (float) loop) + "毫秒,返回字符长度:" + returnStr100k.length());
85         } catch (Exception ex) {
86             System.out.println("100K String 测试失败!");
87        }
8889// 1M String90try {
91             String str1M = Common.Build1MString();
92             startMili = System.currentTimeMillis();
93             String returnStr1M = null;
94for (int i = 0; i < loop; i++) {
95                 returnStr1M = orderBusiness.SendStr(str1M);
96            }
97             endMili = System.currentTimeMillis();
98             System.out.println("1M String 平均传输耗时为:" + ((endMili - startMili) / (float) loop) + "毫秒,返回字符长度:" + returnStr1M.length());
99         } catch (Exception ex) {
100             System.out.println("1M String 测试失败!");
101        }
102103         System.out.println("all test done!");
104    } 
105 }

View Code

3、测试数据耗时记录

A、dubbo 协议、netty 传输、hessian2 序列化

单个POJO0.958毫秒
POJO集合 (100)1.438毫秒
1K String0.68毫秒
100K String4.262毫秒
1M String32.473毫秒

B、dubbo 协议、netty 传输、dubbo 序列化

 

单个POJO1.45毫秒
POJO集合 (100)3.42毫秒
1K String0.94毫秒
100K String4.35毫秒
1M String27.92毫秒

C、dubbo 协议、netty 传输、java 序列化

相关图片

相关文章