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

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

作者 | 裴亞明

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

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

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

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

什么是 taosgen?

簡單來說,taosgen 是一個可以生成時序數(shù)據(jù),并把這些數(shù)據(jù)寫入不同目標系統(tǒng)的工具。目前它支持:

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

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

為什么選擇 taosgen?相比 taosBenchmark 的五大升級

taosBenchmark 更適合完成標準化的數(shù)據(jù)庫寫入測試,而 taosgen 關注的是更復雜的測試過程。具體來說,升級如下:

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

除此之外,taosgen 還具備以下亮點特性:

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

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

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ù)源:

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

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

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

3. 真實時間“播放”能力

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

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

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

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

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

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

5. 更安全、更易用的配置體驗

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

另外,taosgen 會自動檢測未知或拼寫錯誤的配置項,避免因為配置寫錯但程序靜默忽略,導致測試結果不符合預期。命令行參數(shù)的優(yōu)先級高于配置文件,也方便在調試時臨時覆蓋部分設置。

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

快速開始:三步體驗 taosgen 強大功能

第一步:下載安裝

首先需要前往 GitHub Releases 頁面(https://github.com/taosdata/taosgen/releases)下載對應平臺的二進制包。以 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

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

下面是一個簡單示例:創(chuàng)建數(shù)據(jù)庫、超級表,并向 10000 張子表寫入 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

第三步:運行測試

taosgen -c config.yaml

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

應用場景:taosgen 能做什么?

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

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

結語:邁向更真實的性能測試時代

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

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

感興趣的用戶可以下載體驗: