使用ZeroMq源测试Kuiper吞吐量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ZeroMq源测试Kuiper吞吐量相关的知识,希望对你有一定的参考价值。

参考技术A

EMQ X Kuiper支持各种source(MQTT、ZeroMq、EdgeX),默认支持MQTT
1、关于Kuiper的介绍及简单使用,请参考: https://docs.emqx.io/kuiper/latest/cn/
2、关于Kuiper与EdgeX Foundry集成,请参照: https://www.jianshu.com/p/0726d41b00bf

本文实践ZeroMq作为消息总线源(实际上EdgeX内部使用的正是ZeroMq),Kuiper订阅其消息,并以此测试Kuiper的性能,kuiper官方给出性能测试结果: <u>https://docs.emqx.io/kuiper/latest/cn/</u>

操作系统 : Ubuntu 18.04
测试原理描述 :启动一个go应用向ZeroMq发送消息,同时Kuiper订阅来自ZeroMq的消息,经过Kuiper规则处理后输出消息
操作步骤
1、创建一个go应用,向ZeroMq发送若干条消息,每条消息类似:
"device":"demo","readings":["device":"Temperature device","name":"Temperature","value":"40","device":"Humidity device","name":"Humidity","value":"45"],大小大概为157字节。

go应用源码: https://github.com/emqx/kuiper/blob/master/fvt_scripts/edgex/benchmark/pub.go
go应用与kuiper在一台机器上
2、由于Kuiper对zmq源的支持是以插件的形式支持的,而且必须与Kuiper的版本相配套,故此处kuiper采用源码编译打包,同时编译zmq的插件

3、修改source配置

10.0.105.143是我的go应用所在的主机IP

4、启动Kuiper server进程

5、设置Kuiper订阅的数据流及过滤规则

Kuiper规则配置如下:

以上参数含义: https://github.com/emqx/kuiper/blob/master/docs/zh_CN/rules/overview.md

6、go应用发送消息耗时:0.344352s

同时kuiper侧订阅zeroMq主题为events的消息,过滤了所有消息

说明,kuiper在0.344352s处理了9676条数据

经测试:

注:测试发现当数据量大时,明显丢包严重

1. Spark Streaming概述

1.1 什么是Spark Streaming

      技术图片

      Spark Streaming类似于Apache Storm,用于流式数据的处理。根据其官方文档介绍,Spark Streaming有高吞吐量和容错能力强等特点。Spark Streaming支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ和简单的TCP套接字等等。数据输入后可以用Spark的高度抽象原语如:map、reduce、join、window等进行运算。而结果也能保存在很多地方,如 HDFS,数据库等。另外Spark Streaming也能和MLlib(机器学习)以及Graphx完美融合

      技术图片

      和Spark基于RDD的概念很相似,Spark Streaming使用离散化流(discretized stream)作为抽象表示,叫作DStream。DStream是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为RDD存在,而DStream是由这些RDD所组成的序列(因此得名“离散化”)

      技术图片

1.2 为什么要学习Spark Streaming 

      1. 易用

      技术图片

      2. 容错

      技术图片

      3. 易整合到Spark体系

      技术图片

1.3 Spark与Storm的对比

Spark

Storm

技术图片 技术图片

开发语言:Scala

技术图片

开发语言:Clojure

编程模型:DStream

编程模型:Spout/Bolt

技术图片
技术图片 技术图片

      

 

以上是关于使用ZeroMq源测试Kuiper吞吐量的主要内容,如果未能解决你的问题,请参考以下文章

Spark Streaming

RFC2544吞吐量测试详细步骤-Renix软件操作演示

1. Spark Streaming概述

Spark学习 Spark Streaming

ZeroMq PUB/SUB 模式无法正常工作

了解Kafka,RabbitMQ,ZeroMQ,RocketMQ,ActiveMQ之间的差异?这一篇文章就够了!