天天看點

kuiper批量建立規則的例子

引言

前面提到了測試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

微信公衆号:測試生财(定期分享獨家内容和資源)

kuiper批量建立規則的例子

繼續閱讀