突發流量的應對方案隨服務規模分成四級。每一級在前一級的基礎上增加元件,複雜度和成本同步上升。選擇哪一級取決於「預期的峰值流量」和「可接受的降級程度」。

四級分級

Tier 1:自用級(< 100 events/sec)

1SDK ──→ Collector (單 binary + SQLite)
維度設定
架構單 Go binary、SQLite embedded
流量控制背壓(channel buffer 10000 + 429)
突發應對SDK 離線 buffer 吸收短暫 burst
降級無(流量不會到需要降級的程度)
成本零(自有主機、零外部依賴)
適用自用工具、開發期測試、小型團隊

Tier 1 的假設是峰值流量不超過 SQLite WAL mode 的寫入能力(每秒數千筆)。自用場景下這個假設幾乎永遠成立。

Tier 2:中型(100-10000 events/sec)

1         ┌─ Collector A ──→ PostgreSQL
2SDK ──→ LB ─┤
3         └─ Collector B ──→ PostgreSQL
維度設定
架構多 collector + load balancer + PostgreSQL
流量控制背壓 + per-SDK rate limit
突發應對LB 分散流量 + collector 水平擴展
降級動態取樣(超載時 SDK 降到 10%)
成本PostgreSQL + LB 的維護(可用 managed service 降低維護成本)
適用使用者數百到數千、有付費能力

Tier 1 → Tier 2 的觸發:SQLite 的 database is locked 頻繁出現,或 dashboard 的聚合查詢需要 PostgreSQL 的能力。

Tier 3:大型(10000-100000 events/sec)

1         ┌─ Collector A ─┐
2SDK ──→ LB ─┤               ├─→ Queue ──→ Worker 群 ──→ PostgreSQL
3         └─ Collector B ─┘
維度設定
架構Collector 群 + queue(NATS / Kafka)+ worker 群 + PostgreSQL
流量控制背壓 + rate limit + bulkhead
突發應對Queue 做時間緩衝(積壓 → 追趕)
降級動態取樣 + 事件優先級 + 功能降級
成本Queue + worker 的基礎設施(顯著上升)
適用中大型 SaaS、使用者數萬

Tier 2 → Tier 3 的觸發:直接寫 PostgreSQL 的背壓頻繁觸發(即使有多個 collector 寫入)。

Tier 4:商業網站級(> 100000 events/sec)

1SDK ──→ CDN/Edge ──→ LB ──→ Collector 群 ──→ Kafka ──→ Worker 群 ──→ 分層 DB
2                                                                      ├─ 即時查詢 DB(ClickHouse / TimescaleDB)
3                                                                      └─ 歸檔 DB(S3 + Athena)
維度設定
架構CDN edge 收集 + Kafka + 分層存儲
流量控制CDN rate limit + 全鏈路背壓
突發應對Kafka partition 水平擴展 + auto-scaling worker
降級全套(動態取樣 + 優先級 + 聚合前移 + 功能降級)
成本基礎設施團隊級別的投入
適用大型 SaaS、電商、社群平台

Tier 3 → Tier 4 的觸發:Kafka 單 cluster 的吞吐不夠、或查詢需要跨日誌級的時間序列分析。

多數自架開源工具不需要超過 Tier 2。Tier 3 和 Tier 4 是商業 SaaS 的領域。

規模遷移路徑

遷移改什麼停機
Tier 1 → 2Storage backend 切 PostgreSQL + 加 LB + 加 collectorconfig change + 資料遷移(分鐘級停機)
Tier 2 → 3加 queue + 改 collector 為 ingestion-only + 加 worker架構重構(需要開發時間)
Tier 3 → 4加 CDN edge + 分層 DB + auto-scaling基礎設施工程(需要專職團隊)

每一級的遷移成本遞增。Tier 1 → 2 是 config change 級、Tier 2 → 3 是架構重構級、Tier 3 → 4 是團隊級。選擇起始 tier 時選最低的足夠 tier — 過早引入高 tier 的複雜度是浪費。

下一步路由