feat(go): batch tdengine history writes
This commit is contained in:
@@ -50,10 +50,9 @@
|
||||
|
||||
| 指标 | 含义 |
|
||||
| --- | --- |
|
||||
| `vehicle_history_batch_flush_total{table,status}` | 批写成功/失败次数 |
|
||||
| `vehicle_history_batch_rows_total{table,status}` | 批写行数 |
|
||||
| `vehicle_history_batch_flush_duration_ms{table,status}` | 批写耗时 |
|
||||
| `vehicle_history_batch_pending_rows{table}` | 当前待 flush 行数 |
|
||||
| `vehicle_history_batch_flush_total{status}` | 批写成功/失败次数 |
|
||||
| `vehicle_history_batch_rows_total{status}` | 批写行数 |
|
||||
| `vehicle_history_batch_flush_duration_ms{status}` | 批写耗时 |
|
||||
| `vehicle_history_kafka_lag` | 下游是否追得上 Kafka |
|
||||
|
||||
## Rollout
|
||||
@@ -63,3 +62,28 @@
|
||||
3. 在测试环境打开 batch writer。
|
||||
4. 生产先用小批次 `100/100ms`,观察 TDengine latency 和 Kafka lag。
|
||||
5. 逐步提升到 `200-500/100ms`。
|
||||
|
||||
## Implementation Status
|
||||
|
||||
2026-07-03 已完成第一阶段实现:
|
||||
|
||||
- `history.Writer.AppendAllBatch` 按 raw child table 和 location child table 生成多行 `INSERT ... VALUES (...),(...)`。
|
||||
- oversized payload chunks 仍写入 `raw_frame_payload_chunks`,同样按 child table 批量写。
|
||||
- `history-writer` Kafka 消费默认按 `HISTORY_BATCH_SIZE=200`、`HISTORY_BATCH_WAIT_MS=100` 收集消息。
|
||||
- TDengine batch 成功后才批量提交 Kafka messages;batch 失败不提交 offset,让 Kafka 保留可重放语义。
|
||||
- 保留 `processHistoryMessage` 和 `AppendAll` 单条路径,便于回退和测试。
|
||||
|
||||
新增指标:
|
||||
|
||||
```text
|
||||
vehicle_history_batch_flush_total{status}
|
||||
vehicle_history_batch_rows_total{status}
|
||||
vehicle_history_batch_flush_duration_ms{status}
|
||||
```
|
||||
|
||||
生产 rollout 建议:
|
||||
|
||||
1. 先部署默认 `200/100ms`。
|
||||
2. 观察 `vehicle_history_batch_*` 和 `vehicle_history_kafka_lag`。
|
||||
3. 如果 TDengine latency 上升或 Kafka lag 不下降,将 `HISTORY_BATCH_SIZE` 降到 `100`。
|
||||
4. 如果稳定且有 backlog,再逐步提升到 `500`。
|
||||
|
||||
Reference in New Issue
Block a user