vert.x实践五——Json?Protocol Buffer?FlatBuffers?

本节我们来比较一下Json、FlatBuffers、Protocol Buffer在vertx中使用时的占用资源情况比较。

方式阐述

启动一个消费端进程和一个生产端进程,其中生产端发布一个web服务,方便使用ab测试工具进行测试(其中消费端和生产端分布在两台机器)。

ab调用生产端web -> 生产端通过bus传输消息 -> 消费端通过bus回复消息

消费端机器规格 4核 2.6G HZ 16G
生产端机器规格 6核 3.2G HZ 16G

Json序列化

生产端

   JsonObject jsonObject = new JsonObject();
            for (int i=0; i<500; i ++){
   
                jsonObject.put("name_" + i,"wan_ke");
            }
            //通过eventbus发送请求
            eventBus.request("com.xiaoniu.bus", jsonObject, msg -> {
   
                        if (msg.succeeded()) {
   
                            if (msg.result() != null){
   
                                String data = ((JsonObject) msg.result().body()).encodePrettily();
                            }
                        } else {
   
                            System.err.println(msg.cause().getMessage());
                            msg.cause().printStackTrace();
                        }
                    }
            );

消费端

eventBus.consumer("com.xiaoniu.bus", msg -> {
   
                    System.out.println("收到消息");
                    if (msg != null && msg.body() instanceof JsonObject){
   
                String receive_data = ((JsonObject) msg.body()).encodePrettily();
            }
            JsonObject jsonObject = new JsonObject();
            for (int i=0;i<500;i++){
   
                jsonObject.put("name_"+ i,"wan_ke_receive");
            }

           msg.reply(jsonObject);
        });

生产端和消费端均启动后,进行三次,每次间隔2分钟。

第一次执行ab -n10000 -c10 http://192.168.2.112:7777/index(并发度10,1万次请求)

第二次执行ab -n20000 -c20 http://192.168.2.112:7777/index(并发度10,2万次请求)

第三次执行ab -n30000 -c20 http://192.168.2.112:7777/index(并发度20,3万次请求)

资源 cpu 内存
第一次 生产端(初值:12% 峰值:71% 末值:12%)消费端(初值:2% 峰值:16% 末值:4%) 生产端(初值:50M 峰值:294M 末值:131M )消费端(初值:50M 峰值:150M 末值:150M)
第二次 生产端(峰值:62% 末值:12%)消费端(峰值:10% 末值:8%) 生产端(峰值:188M 末值:160M)消费端(峰值:120M 末值:120M)
第三次 生产端(峰值:60% 末值:16%)消费端(峰值:10% 末值:3%) 生产端(峰值:380M 末值:100M )消费端(峰值:230M 末值:110M)

Proto序列化

生产端

 ProtoCommonMsg protoCommonMsg = new ProtoCommonMsg();
      for (int i =0; i<500 ; i ++){
   
        protoCommonMsg.put("name_" + i,"wan_ke");
      }
      //通过eventbus发送请求
      eventBus.request
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值