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,可以看到所有規則都被運行。


博主:測試生財

座右銘:專注測試與自動化,致力提高研發效能;通過測試精進完成原始積累,通過讀書理財奔向財務自由。

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

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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章