• kuiper批量创建规则的例子


    引言

    前面提到了测试kuiper创建规则上限数遇到的问题,这里给大家分享一下如何批量创建多条规则。

    分析

    kuiper官网的性能测试结果中没有详细说明8000条规则的具体场景。这里我是这么理解:

    首先有8000个流,其中800个流对应一个SELECT temperature FROM sourceX WHERE > 20这样的规则;另外7200个流对应SELECT temperature FROM sourceY WHERE temperature <= 20

    这样如果我发送的MQTT消息中的temperature为(20,100]间的随机数,整个7200/8000=90%的数据被过滤掉,只有800/8000=10%的规则被命中。

    测试场景构建

    创建两个流:demo1和demo2

    #进入容器
    docker exec -it kuiper /bin/bash
    #创建流demo1
    bin/kuiper create stream demo1 '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="demo1")'
    #创建流demo2
    bin/kuiper create stream demo2 '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="demo2")'

    然后分别创建7200条规则rule1(SELECT temperature FROM sourceY WHERE temperature <= 20)和800条规则rule2(SELECT temperature FROM sourceY WHERE temperature >20)

    文件:rule1

    {
      "sql": "SELECT * FROM demo1 WHERE temperature <= 20",
      "actions": [
        {
          "log": {}
        }
      ]
    }

    文件:rule2

    {
      "sql": "SELECT * FROM demo2 WHERE temperature > 20",
      "actions": [
        {
          "log": {}
        }
      ]
    }

    编写脚本,创建7200条规则1和800条规则2

    creatRule.sh

    #!/bin/sh
    
    #拷贝规则到kuiper容器内部
    docker cp rule1 kuiper:/go/kuiper/_build/kuiper-1.1.1-linux-x86_64/bin
    docker cp rule2 kuiper:/go/kuiper/_build/kuiper-1.1.1-linux-x86_64/bin
    for i in `seq 1 8000` do ruleId=$i echo $ruleId if [ $i -le 7200 ];then
           #前7200条规则rule1 docker exec
    -it kuiper /bin/sh -c "bin/kuiper create rule rule_iot_${ruleId} -f bin/rule1" else
           #前7200条规则rule2
    docker exec -it kuiper /bin/sh -c "bin/kuiper create rule rule_iot_${ruleId} -f bin/rule2"
          fi
    done

    执行:sh creatRule.sh

    预计几分钟后执行完毕,通过curl http://localhost:9081/rules,可以看到所有规则都被运行。

    博主:测试生财(一个不为996而996的测开码农)

    座右铭:专注测试开发与自动化运维,努力读书思考写作,为内卷的人生奠定财务自由。

    内容范畴:技术提升,职场杂谈,事业发展,阅读写作,投资理财,健康人生。

    csdn:https://blog.csdn.net/ccgshigao

    博客园:https://www.cnblogs.com/qa-freeroad/

    51cto:https://blog.51cto.com/14900374

    微信公众号:测试生财(定期分享独家内容和资源)

  • 相关阅读:
    Swift 面向对象解析(二)
    Swift 面向对象解析(一)
    iOS 动画笔记 (二)
    iOS 动画笔记 (一)
    UICollectionView 很简单的写个瀑布流
    MVC校验
    win8.1弹框
    Python开发之pip使用详解
    MySQL基础之数据类型和运算符
    网络爬虫之scrapy爬取某招聘网手机APP发布信息
  • 原文地址:https://www.cnblogs.com/qa-freeroad/p/14369579.html
Copyright © 2020-2023  润新知