六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

模擬設(shè)備上報(bào)、消息分發(fā)與數(shù)據(jù)庫(kù)寫(xiě)入,taosgen 一次搞定

作者 | 裴亞明

在物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)和智能設(shè)備快速發(fā)展的今天,時(shí)序數(shù)據(jù)庫(kù)(Time Series Database)已成為處理海量傳感器數(shù)據(jù)的核心基礎(chǔ)設(shè)施。而對(duì)這些系統(tǒng)的性能評(píng)估、容量規(guī)劃和穩(wěn)定性驗(yàn)證,則離不開(kāi)高效、靈活的壓力測(cè)試工具。

過(guò)去,我們主要使用 taosBenchmark 來(lái)做 TDengine 的基礎(chǔ)寫(xiě)入性能測(cè)試。它在很多場(chǎng)景下已經(jīng)足夠好用,尤其適合快速驗(yàn)證數(shù)據(jù)庫(kù)寫(xiě)入能力。不過(guò),隨著實(shí)際業(yè)務(wù)越來(lái)越復(fù)雜,我們也遇到了一些新的需求。

比如,數(shù)據(jù)不一定只寫(xiě)入數(shù)據(jù)庫(kù),也可能同時(shí)進(jìn)入 MQTT、Kafka 等消息中間件;數(shù)據(jù)生成方式也不能總是簡(jiǎn)單隨機(jī),而是希望更接近真實(shí)設(shè)備的變化規(guī)律;有些測(cè)試還需要按照歷史數(shù)據(jù)的時(shí)間間隔進(jìn)行回放,而不是一味追求最大吞吐——隨著這類需求增多,傳統(tǒng) benchmark 工具在配置靈活性、擴(kuò)展能力以及真實(shí)復(fù)雜流程模擬方面的不足也逐漸顯現(xiàn)出來(lái)。

基于這些考慮,我們推出了 taosgen。它是一款面向時(shí)序數(shù)據(jù)場(chǎng)景的新一代性能基準(zhǔn)與數(shù)據(jù)模擬工具,具備強(qiáng)大功能且高度可擴(kuò)展,希望在“壓測(cè)”之外,也能承擔(dān)更多數(shù)據(jù)生成、鏈路驗(yàn)證和歷史數(shù)據(jù)回放的工作。

什么是 taosgen?

簡(jiǎn)單來(lái)說(shuō),taosgen 是一個(gè)可以生成時(shí)序數(shù)據(jù),并把這些數(shù)據(jù)寫(xiě)入不同目標(biāo)系統(tǒng)的工具。目前它支持:

  • 高并發(fā)數(shù)據(jù)生成與寫(xiě)入 TDengine;
  • 向 MQTT Broker 發(fā)布模擬設(shè)備消息;
  • 向 Kafka Topic 生產(chǎn)結(jié)構(gòu)化數(shù)據(jù)流;
  • 基于 DAG 的作業(yè)編排,構(gòu)建復(fù)雜測(cè)試流程;
  • 使用 Lua 表達(dá)式動(dòng)態(tài)生成逼真數(shù)據(jù);
  • 實(shí)時(shí)“播放”歷史數(shù)據(jù),還原真實(shí)時(shí)間線。

也就是說(shuō),taosgen 不只是一個(gè)寫(xiě)入壓測(cè)工具,更是一個(gè)面向未來(lái)的、支持多目標(biāo)、可編程的數(shù)據(jù)流模擬引擎,可以用來(lái)模擬設(shè)備上報(bào)、數(shù)據(jù)庫(kù)寫(xiě)入、消息隊(duì)列接入等多個(gè)環(huán)節(jié)。目前 taosgen 已支持 Windows、Linux 和 macOS,可直接下載使用。

為什么選擇 taosgen?相比 taosBenchmark 的五大升級(jí)

taosBenchmark 更適合完成標(biāo)準(zhǔn)化的數(shù)據(jù)庫(kù)寫(xiě)入測(cè)試,而 taosgen 關(guān)注的是更復(fù)雜的測(cè)試過(guò)程。具體來(lái)說(shuō),升級(jí)如下:

能力維度taosBenchmarktaosgen
任務(wù)模型單一任務(wù),固定流程支持 DAG 作業(yè)編排,可定義依賴關(guān)系
目標(biāo)協(xié)議僅 TDengine支持 TDengine / MQTT / Kafka 多協(xié)議輸出
數(shù)據(jù)生成多表共用,固定模式支持 Lua 表達(dá)式、多表獨(dú)立的即時(shí)生成
時(shí)間控制固定頻率支持多種控制策略,可基于真實(shí)時(shí)間戳“回放”,模擬實(shí)時(shí)數(shù)據(jù)流
連接管理每次操作新建連接內(nèi)置連接池,復(fù)用連接提升效率

除此之外,taosgen 還具備以下亮點(diǎn)特性:

1. 靈活的作業(yè)編排(Job Orchestration)

taosgen 以“作業(yè)(Job)”為基本執(zhí)行單元,每個(gè)作業(yè)由多個(gè)“步驟(Step)”組成,并可通過(guò) needs 字段聲明前置依賴,形成有向無(wú)環(huán)圖(DAG),實(shí)現(xiàn)如“先建庫(kù) → 再建表 → 最后寫(xiě)入”的標(biāo)準(zhǔn)流程,也可并行執(zhí)行多個(gè)獨(dú)立任務(wù)。

tdengine:
  dsn: taos+ws://root:taosdata@127.0.0.1:6041/tsbench
  drop_if_exists: true
  props: precision 'ms' vgroups 4

schema:
  name: meters
  tbname:
    prefix: d
    count: 100
    from: 0

jobs:
  create_db:
    name: Create Database
    steps:
      - uses: tdengine/create-database

  create_stable:
    name: Create Super Table
    needs: [create_db] # 依賴 create_db 完成
    steps:
      - uses: tdengine/create-super-table

  create_ctable:
    name: Create Child Table
    needs: [create_stable] # 依賴 create_stable 完成
    steps:
      - uses: tdengine/create-child-table 

  insert_data:
    name: Insert Data
    needs: [create_ctable] # 依賴 create_ctable 完成
    steps:
      - uses: tdengine/insert

2. 多樣化的數(shù)據(jù)生成方式

taosgen 支持兩種主要數(shù)據(jù)源:

  • 即時(shí)生成(Generator Mode):無(wú)需預(yù)生成大文件,直接通過(guò)配置規(guī)則動(dòng)態(tài)生成數(shù)據(jù)。
  • CSV 文件導(dǎo)入(CSV Mode):復(fù)用現(xiàn)有 CSV 元數(shù)據(jù)或歷史數(shù)據(jù)進(jìn)行回放。

更強(qiáng)大的是,你可以在列級(jí)別使用 Lua 表達(dá)式來(lái)生成非線性、帶噪聲、周期性變化的數(shù)據(jù),例如模擬電壓波動(dòng)、溫度周期等真實(shí)物理現(xiàn)象:

columns:
  - name: voltage
    type: FLOAT
    gen_type: expression
    expr: "220 + 10 * math.sin(_i / 30) + 5 * math.random()" # 模擬電網(wǎng)波動(dòng)

3. 真實(shí)時(shí)間“播放”能力

在很多壓測(cè)場(chǎng)景中,大家首先關(guān)注的是吞吐量,也就是系統(tǒng)能以多快的速度寫(xiě)入數(shù)據(jù)。但在歷史數(shù)據(jù)回放、流處理鏈路驗(yàn)證、告警規(guī)則測(cè)試等場(chǎng)景里,數(shù)據(jù)進(jìn)入系統(tǒng)的時(shí)間節(jié)奏同樣重要。taosgen 支持 time_interval 策略,可以根據(jù)數(shù)據(jù)時(shí)間戳之間的間隔控制發(fā)送速度,從而實(shí)現(xiàn)“慢放”、“快進(jìn)”或“按原始速率播放”等不同情況。

steps:
  - uses: tdengine/insert
    with:
      time_interval:
        enabled: true
        interval_strategy: literal # 按數(shù)據(jù)時(shí)間戳精確發(fā)送

4. 多協(xié)議輸出,不止于數(shù)據(jù)庫(kù)

在真實(shí)系統(tǒng)里,時(shí)序數(shù)據(jù)往往不會(huì)只進(jìn)入數(shù)據(jù)庫(kù)。很多設(shè)備數(shù)據(jù)會(huì)先通過(guò) MQTT 接入邊緣網(wǎng)關(guān)或 IoT 平臺(tái),也可能通過(guò) Kafka 進(jìn)入流處理系統(tǒng)(Flink、Spark Streaming),之后再落庫(kù)或進(jìn)入下游分析鏈路。

因此,taosgen 除了支持寫(xiě)入 TDengine,也支持將同一套數(shù)據(jù)結(jié)構(gòu)發(fā)布到 MQTT Broker 或 Kafka Topic。這意味著你可以用同一套 schema 和數(shù)據(jù)邏輯,同時(shí)測(cè)試整個(gè)數(shù)據(jù)鏈路的不同環(huán)節(jié)。

steps:
  - uses: kafka/produce
    with:
      topic: factory-sensors
      value_serializer: json
      acks: 1

5. 更安全、更易用的配置體驗(yàn)

taosgen 使用 YAML 作為配置格式。相比在命令行中堆大量參數(shù),配置文件更適合描述復(fù)雜測(cè)試場(chǎng)景,也方便團(tuán)隊(duì)共享和版本管理。

另外,taosgen 會(huì)自動(dòng)檢測(cè)未知或拼寫(xiě)錯(cuò)誤的配置項(xiàng),避免因?yàn)榕渲脤?xiě)錯(cuò)但程序靜默忽略,導(dǎo)致測(cè)試結(jié)果不符合預(yù)期。命令行參數(shù)的優(yōu)先級(jí)高于配置文件,也方便在調(diào)試時(shí)臨時(shí)覆蓋部分設(shè)置。

這些改動(dòng)看起來(lái)不算“大功能”,但在實(shí)際使用中很重要。壓測(cè)任務(wù)往往需要反復(fù)執(zhí)行,如果配置不清楚、錯(cuò)誤不明顯,后續(xù)排查會(huì)浪費(fèi)不少時(shí)間。

快速開(kāi)始:三步體驗(yàn) taosgen 強(qiáng)大功能

第一步:下載安裝

首先需要前往 GitHub Releases 頁(yè)面(https://github.com/taosdata/taosgen/releases)下載對(duì)應(yīng)平臺(tái)的二進(jìn)制包。以 Linux 為例:

# 下載并解壓
tar zxvf taosgen-v0.8.6-linux-x64.tar.gz
cd taosgen

# 添加到系統(tǒng)路徑(可選)
sudo ln -sf $(pwd)/taosgen /usr/local/bin/taosgen

# 查看版本
taosgen --version

第二步:準(zhǔn)備配置文件(config.yaml)

下面是一個(gè)簡(jiǎn)單示例:創(chuàng)建數(shù)據(jù)庫(kù)、超級(jí)表,并向 10000 張子表寫(xiě)入 10000 條模擬電表數(shù)據(jù)。

tdengine:
  dsn: taos+ws://root:taosdata@127.0.0.1:6041/tsbench
  drop_if_exists: true

schema:
  name: meters
  tbname:
    prefix: d
    count: 10000
    from: 0
  columns:
    - name: ts
      type: timestamp
      start: now
      precision : ms
      step: 1
    - name: current
      type: float
      min: 5
      max: 20
    - name: voltage
      type: int
      min: 200
      max: 240
    - name: phase
      type: float
      expr: _i * math.pi % 180
  tags:
    - name: groupid
      type: int
      min: 1
      max: 10
    - name: location
      type: binary(24)
      values:
        - New York
        - Los Angeles
        - Chicago
        - Houston
        - Phoenix
        - Philadelphia
        - San Antonio
        - San Diego
        - Dallas
        - Austin
  generation:
    rows_per_table: 10000
    rows_per_batch: 10000

jobs:
  # TDengine insert job
  insert-data:
    steps:
      - uses: tdengine/create-super-table
      - uses: tdengine/create-child-table
      - uses: tdengine/insert

第三步:運(yùn)行測(cè)試

taosgen -c config.yaml

運(yùn)行完成后,你將在 TDengine 中看到名為 tsbench 的數(shù)據(jù)庫(kù),以及包含萬(wàn)級(jí)子表的 meters 超級(jí)表,所有數(shù)據(jù)均已按規(guī)則寫(xiě)入。

應(yīng)用場(chǎng)景:taosgen 能做什么?

taosgen 的使用場(chǎng)景并不局限于“往數(shù)據(jù)庫(kù)里寫(xiě)數(shù)據(jù)”。在很多項(xiàng)目里,我們更關(guān)心的是數(shù)據(jù)從設(shè)備側(cè)產(chǎn)生之后,如何進(jìn)入消息中間件、如何被流處理系統(tǒng)消費(fèi)、最終又如何寫(xiě)入數(shù)據(jù)庫(kù)。taosgen 可以用統(tǒng)一的配置生成和發(fā)送這些數(shù)據(jù),因此既能做基礎(chǔ)壓測(cè),也能用來(lái)搭建接近真實(shí)業(yè)務(wù)的數(shù)據(jù)鏈路。下面這些場(chǎng)景,是它目前比較適合發(fā)揮作用的地方。

場(chǎng)景說(shuō)明
?? TDengine 性能壓測(cè)模擬百萬(wàn)級(jí)設(shè)備高頻上報(bào),測(cè)試集群吞吐、延遲、資源占用
?? 數(shù)據(jù)遷移與初始化將 CSV 格式的設(shè)備元數(shù)據(jù)和歷史數(shù)據(jù)批量導(dǎo)入 TDengine
?? MQTT 接入層壓力測(cè)試模擬萬(wàn)臺(tái)設(shè)備并發(fā)連接并發(fā)布消息,驗(yàn)證 Broker 穩(wěn)定性
?? Kafka 數(shù)據(jù)管道驗(yàn)證構(gòu)建高并發(fā)數(shù)據(jù)源,測(cè)試 Flink/Spark 流處理 pipeline
??? 歷史數(shù)據(jù)回放分析“重播”特定時(shí)間段的數(shù)據(jù)流,用于復(fù)現(xiàn)問(wèn)題或訓(xùn)練模型
?? 系統(tǒng)演示與 PoC 構(gòu)建快速搭建逼真的 IoT 數(shù)據(jù)環(huán)境,用于產(chǎn)品展示或客戶驗(yàn)證

結(jié)語(yǔ):邁向更真實(shí)的性能測(cè)試時(shí)代

taosgen 的推出,并不是為了替代所有已有工具。taosBenchmark 仍然適合做標(biāo)準(zhǔn)化、直接的 TDengine 寫(xiě)入性能測(cè)試。而 taosgen 關(guān)注的是另一類問(wèn)題:當(dāng)測(cè)試場(chǎng)景變得更復(fù)雜,數(shù)據(jù)流不再只進(jìn)入數(shù)據(jù)庫(kù),數(shù)據(jù)本身也需要更接近真實(shí)業(yè)務(wù)時(shí),我們需要一個(gè)更靈活的工具來(lái)描述和執(zhí)行這些流程。

對(duì)于數(shù)據(jù)庫(kù)管理員、系統(tǒng)架構(gòu)師和 IoT 平臺(tái)開(kāi)發(fā)者來(lái)說(shuō),taosgen 可以用于容量規(guī)劃、上線前驗(yàn)證、歷史數(shù)據(jù)回放和故障復(fù)現(xiàn)。它讓性能測(cè)試不再只是簡(jiǎn)單地“寫(xiě)入一批數(shù)據(jù)”,而是可以更接近真實(shí)系統(tǒng)運(yùn)行方式。

感興趣的用戶可以下載體驗(yàn):