綜合應用案例:分散式系統路由引擎(探索版)¶
本案例以「雲端路由引擎開發」為場景,用**基礎建設工程師解決問題的視角**探索資料結構與演算法。你將扮演 CloudNet 的核心工程師,從實際問題出發,逐步發現「為什麼需要這個資料結構」。
設計理念:不是「先學資料結構,再找應用」,而是「遇到問題 → 需要什麼工具 → 引入資料結構」。
場景背景¶
你是 CloudNet(虛構的雲端服務商)的**路由引擎開發者**,負責維運跨越全球的網路基礎建設。
什麼是路由引擎?
**路由引擎**是網路的「交通指揮中心」,決定每一個封包該走哪條路。
| 職責 | 說明 |
|---|---|
| 路徑計算 | 給定來源與目的地,找出最佳路徑 |
| 負載平衡 | 分散流量,避免單點過載 |
| 故障轉移 | 偵測失效節點,自動繞路 |
| 成本最佳化 | 在效能與成本之間取得平衡 |
本案例中的問題正是路由引擎開發者日常會遇到的:查詢要多快?封包怎麼排隊?最短路徑怎麼算?
CloudNet 全球架構¶
┌─────────┐
│ 倫敦 DC │
└────┬────┘
│
┌─────────┐ ┌────┴────┐ ┌─────────┐
│ 紐約 DC │──────│ 法蘭克福│──────│ 孟買 DC │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ 聖保羅 │ │ 新加坡 │──────│ 雪梨 DC │
└─────────┘ └────┬────┘ └─────────┘
│
┌────┴────┐ ┌─────────┐
│ 東京 DC │──────│ 首爾 DC │
└────┬────┘ └─────────┘
│
┌────┴────┐
│ 台北 DC │
└─────────┘
網路參數:
| 參數 | 說明 | 範例值 |
|---|---|---|
| 資料中心數量 | 全球節點 | 12 個 |
| 連線數量 | 光纖連接(非完全圖) | ~30 條 |
| 單條連線延遲 | 光速傳播 + 設備處理 | 10-200 ms |
| 單條連線頻寬 | 光纖容量 | 10-100 Gbps |
| 單條連線成本 | 流量計費 | $0.01-0.10/GB |
你的日常挑戰¶
| 情境 | 你的問題 | 對應技術 |
|---|---|---|
| 週一早上流量暴增 | 「路由表查詢要 O(1),怎麼設計?」 | Hash Table |
| 緩衝區滿了 | 「封包誰先處理?」 | Stack / Queue / Heap |
| 客戶抱怨延遲 | 「台北到法蘭克福最快怎麼走?」 | Dijkstra |
| 預算審核 | 「最省錢的備援網路怎麼建?」 | MST |
| 頻寬不足 | 「這條路最多能傳多少流量?」 | Max Flow |
| 系統升級 | 「路由器升級順序怎麼排?」 | 拓撲排序 |
| 成本最佳化 | 「流量怎麼分配最省錢?」 | DP |
| 效能報告 | 「log 排序用什麼演算法?」 | 排序 |