Skip to content
Chris Yuan | Blog
Go back

Daniel Lewin:911 事件的第一位犧牲者與 CDN 技術革命先驅

Updated:
Edit page

Table of contents

Open Table of contents

從丹佛到耶路撒冷:塑造英雄的成長歷程

1970 年 5 月 14 日,Daniel Mark Lewin 出生於美國科羅拉多州丹佛市的一個知識份子家庭。父親 Charles 是精神科醫師,母親 Peggy 是小兒科醫師。在這個重視教育的猶太家庭中,Daniel 從小就展現出非凡的活力和智慧。家裡的早餐麥片盒常被父親貼上《科學美國人》的文章剪報,餐桌上的話題不是卡通,而是無限概念和賽局理論。

14 歲那年,父親 Charles 出於猶太復國主義理想,決定舉家遷往以色列。這個決定徹底改變了 Daniel 的人生軌跡。剛開始,他對這次搬遷充滿抵觸,但隨著時間推移,以色列成為了塑造他性格的熔爐。正如傳記作家 Molly Knight Raskin 所說:「搬到以色列就像在他的內心點燃了一把火,讓他想要榨取生命中每一分每一秒的價值。」

軍事生涯:從普通士兵到特種部隊軍官

18 歲生日那天,Daniel 收到了以色列國防軍的徵召令。憑藉驚人的決心和毅力,他不僅通過了嚴苛的訓練,還成功進入了以色列最精銳的特種部隊——總參謀部偵察部隊(Sayeret Matkal)。這支部隊被《名利場》雜誌譽為「世界上最有效的反恐部隊」,以 1976 年恩德培機場人質營救行動而聞名於世。

要進入這支只有 200 名全職突擊隊員的部隊極其困難。在每一輪選拔中,數千名申請者經過兩輪嚴酷的測試營,最終只有 20 到 40 人能夠入選。對於像 Daniel 這樣的非以色列本土出生者來說,被錄取幾乎是不可能的事情。然而,他不僅成功入選,還在三年後晉升為上尉。

在部隊期間,Daniel 學習了阿拉伯語,深入研究恐怖主義。他的戰友描述他身材魁梧如橄欖球後衛,力量驚人,曾經能臥推超過 300 磅。一位軍中好友回憶說,Daniel 可以僅憑一張信用卡、一支筆,甚至赤手空拳就能制服武裝恐怖分子。

Play

學術成就:從 Technion 到 MIT 的輝煌歷程

服役期間,Daniel 展現了驚人的多工處理能力。他一邊在 IBM 海法研究實驗室擔任全職研究員和項目負責人,一邊在以色列理工學院(Technion)攻讀計算機科學和數學雙學位。在 IBM 期間,他領導開發了 Genesys 系統——一個在 IBM 和 AMD 等公司廣泛使用的處理器驗證工具。

1995 年,Daniel 以最優等成績(summa cum laude)從 Technion 畢業,並被評為當年計算機工程系的傑出學生。同年,他前往美國麻省理工學院(MIT)攻讀博士學位,進入了美國頂尖的計算機科學項目之一。

革命性創新:Consistent Hashing 演算法的誕生

在 MIT 期間,Daniel 與指導教授 F. Thomson Leighton 及 David Karger 合作,發表了具有革命性意義的論文《Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the World Wide Web》。這篇論文提出的 Consistent Hashing 演算法,解決了 CDN(Content delivery network) 的根本問題。

Consistent Hashing 是一種特殊的 Hash 函數,當函數的範圍發生變化時,它能將影響降到最低。在分佈式快取系統中,當增加或移除節點時,這種演算法能確保只有極少數的快取對象需要重新映射,從而大大提高了系統的擴展性和穩定性。這項創新成為了 CDN(內容分發網路)技術的核心基礎。

Akamai:從學術論文到商業帝國

1998 年,基於 Consistent Hashing 演算法的突破性發現,28 歲的 Daniel 與 Thomson Leighton 教授共同創立了 Akamai Technologies。公司名稱來自夏威夷語,意為「聰明」或「酷」,是 Daniel 在一位同事的建議下從夏威夷語詞典中找到的。

Akamai 的使命是讓 Internet 變得快速、可靠且安全。公司開發的 CDN 技術能夠有效地將網站內容分發到全球各地的邊緣伺服器,讓用戶能從最近的位置獲取所需內容,大幅提升訪問速度並減少網絡擁塞。

作為 CTO,Daniel 將他的軍事紀律和學術嚴謹完美結合。他以「雷龍」(Brontosaurus)的綽號聞名,象徵著他強大的力量和不懈的工作熱情。在他的領導下,Akamai 迅速成長,並於 1999 年成功上市,市值一度超過 200 億美元。

Play

最後的航程:911 恐怖攻擊的第一位犧牲者

2001 年 9 月 11 日清晨,Daniel 搭上了從波士頓飛往洛杉磯的美國航空 11 號班機,準備前往參加一個商務會議。根據 911 調查委員會的報告,Daniel 可能是第一個發現劫機犯異常行為的乘客。基於他的反恐經驗,他很可能試圖制服坐在前排的劫機犯 Mohamed Atta 或 Abdulaziz al-Omari,但卻被坐在他身後的另一名劫機犯 Satam al-Suqami 從背後刺殺。

空乘人員在通話中報告 Daniel 的喉嚨被歹徒割斷,使他成為 911 恐怖攻擊的第一位犧牲者。隨後,這架飛機撞入了世貿中心北塔。Daniel 身後留下了妻子 Anne 和兩個年幼的兒子——8 歲的 Itamar 和 5 歲的 Eitan。

持續的影響:Danny 的遺產

儘管 Daniel 英年早逝,但他的貢獻和精神繼續影響著世界。諷刺的是,正是他創建的 Akamai 技術,確保了在 911 事件當天,大多數主要新聞網站能夠在巨大的流量壓力下保持正常運作,讓全世界能夠及時獲取這場悲劇的資訊。

2017 年,Daniel Lewin 和 Thomson Leighton 因其在 CDN 技術上的開創性貢獻,被列入美國國家發明家名人堂。如今,Akamai 已成為全球 CDN 和雲端安全服務的領導者,擁有超過 6,100 名員工,為包括 Airbnb、Apple、BMW、eBay 在內的世界頂級品牌提供服務。

Play

Akamai 現任 CEO Tom Leighton 在談到與 Uniqlo 合作推出「Peace for All」慈善 T 恤時,特別提到了對和平理念的深刻理解。這件 T 恤上印著 Akamai 網路安全解決方案的部分程式碼,象徵著科技力量對和平的貢獻。對於 Leighton 來說,這份對和平的追求顯然與他失去摯友和合作夥伴 Daniel 的經歷密不可分。

Play

演算法的下半場:Consistent Hashing 的二十五年

Lewin 過世那年,consistent hashing 還只是一篇 STOC 論文加上一家剛上市的公司。二十五年後,用它的系統遠比 CDN 多,而其中幾個最後又把它換掉了。

Dynamo 把它從快取搬進資料庫

2007 年,Amazon 發表了 Dynamo 論文,那是後來整個 NoSQL 浪潮的起點。論文第 4.2 節開頭就說明,Dynamo 的分區機制依賴 consistent hashing 把負載分散到多台儲存主機;而緊接著標註的參考文獻 [10],正是 Karger、Lehman、Leighton、Panigrahy、Levine、Lewin 1997 年那篇 STOC 論文。Lewin 過世六年後,他的名字出現在 Amazon 工程師的參考文獻裡。

Amazon 的工程師也誠實記下了原始演算法的兩個麻煩。第一,節點在環上的位置是隨機取的,資料分佈不會平均。第二,演算法對「這台機器比那台強」這件事完全無感。他們的解法是讓一台實體機器在環上佔據多個位置,稱為 virtual node,也叫 token;一台機器分到幾個 token,可以依它的容量決定。

至於 2012 年推出的 DynamoDB,和 2007 年的 Dynamo 只共用名字。它的資料切分是連續的 key range,由中央服務負責管理,2022 年那篇描述 DynamoDB 架構的論文全文沒有出現 consistent hashing 這個詞。

真正照著 Dynamo 做的是 Cassandra 與 Riak。Cassandra 至今仍用 Murmur3Partitioner 把 partition key 映射到環上的 token,每個節點分到幾個 token 由 num_tokens 設定。這個值的預設在 4.0 版從 256 調降到 16,因為運維經驗顯示 vnode 太多會讓 repair 與擴縮容變得昂貴。

你今天改的 nginx.conf 裡就有它

1997 年那篇論文的標題很長,重點其實在後半段:distributed caching protocols for relieving hot spots on the World Wide Web。它一開始要解的是快取問題,而有快取問題的不只 Akamai。

2007 年,Last.fm 的工程師 Richard Jones 碰上一個問題:他們的 memcached 叢集只要加一台或掉一台機器,所有 key 的歸屬就整個重算,等於把快取清空。他照著 consistent hashing 寫了一個 C 函式庫叫 libketama,把每台伺服器雜湊成環上一兩百個點,然後開源出來。ketama 後來成了 memcached client 的事實標準。

痕跡留到了今天:

upstream backend {
    hash $request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}

nginx 官方文件對 consistent 這個參數的說明是「改用 ketama consistent hashing 方法」,還特別註明與 ketama_points 設為 160 的 client 相容。

演算法本身也一直在改

consistent hashing 並不是這個問題的第一個答案。1996 年,密西根大學的 David Thaler 與 Chinya Ravishankar 發表了 rendezvous hashing(又稱 highest random weight),比 Karger 那篇早了一年,解的是同一件事,只是從來沒有得到同等的名氣。

後來的改良分兩類。一是把環換掉。Google 在 2014 年提出 Jump,五行程式碼、完全不需要額外記憶體,代價是 bucket 必須連號、只能從尾端移除;2016 年的 Maglev 負載平衡器則改用一張查找表換取 O(1) 的查詢。2020 年之後還有 Anchor 與 Dx。2023 年有一份研究把這些演算法全部用 Java 重寫、放在同一台機器上實測,結論是在記憶體、查找時間與平衡度三項指標上,Jump、Anchor、Dx 都勝過 1997 年的原始環。

二是承認伺服器有容量上限。原始的 consistent hashing 只保證節點變動時搬動的資料最少,並不保證任何一台不會被打爆。2016 年 Google 的研究團隊提出 consistent hashing with bounded loads:給每台機器設一個 (1+ε) 倍平均負載的上限,滿了就順時針找下一台。論文放上 arXiv 三個月後,Vimeo 的 Andrew Rodland 把它實作進 HAProxy,快取頻寬降到原本的八分之一左右。Google 自己的 Cloud Pub/Sub 也採用了同一套做法,Envoy 則同時提供 ring_hash 與 maglev 兩種選項。

也有系統選擇不走這條路。Redis Cluster 的官方文件直接寫著「不使用 consistent hashing」,改用 16384 個固定的 hash slot。理由很實際:每個節點要把自己持有的 slot 以 bitmap 塞進 gossip 心跳封包,16384 個 bit 剛好是 2KB,換成 65536 就變成 8KB。

2026 年的新戰場:LLM 推論路由

跑大型語言模型推論時,每台 GPU 節點都留著一份 KV cache,記著它最近處理過的提示詞前綴。一個請求如果被送到沒有對應前綴的節點,這台機器就得從頭重算整段 prefill,先前的計算等於白做。但如果把所有共用前綴的請求全部塞給同一台,那台馬上就過載。

要快取命中,又要負載平均,而且節點會在擴縮容與故障之中不斷進出。這正是 Lewin 那篇論文的題目,只是把「網頁物件與快取伺服器」換成了「提示詞前綴與 GPU」。vLLM 官方的 router 把 consistent hashing 列為內建的負載平衡策略之一,用途寫得很明白:讓帶有相同 routing key 的請求黏在同一個 worker 上,提高 KV cache 的重用率。SGLang 則走另一條路,在 router 裡維護一份各節點快取狀態的近似 radix tree。

Lewin 當年是為了讓網頁載入快一點才證明這件事。同一套想法現在決定你送出的提示詞落在哪一張 GPU 上。

未竟的夢想:如果…

Daniel 的朋友們常常思考著那些「假如」:假如他活著,可能會完成困擾他的博士學位;假如他活著,可能會進入以色列政壇;假如他活著,可能會成為像 Bill Gates 或 Steve Jobs 一樣的科技界家喻戶曉的名字。

儘管 Daniel 的生命只有短短 31 年,但他留下的遺產卻是永恆的。他不僅是網路革命的先驅,更是一個將智慧、勇氣和奉獻精神完美結合的典範。正如他的好友所說

那些認識他的人都覺得,世界失去了一個真正的天才。

Daniel Lewin 的一生,是天才與英雄的完美結合。從以色列特種部隊的精英戰士,到 MIT 的傑出學者,再到改變網路發展的科技企業家,他的每一個身份都體現了追求卓越的精神。而在生命的最後時刻,他再次展現了軍人的本色,成為第一個試圖阻止 911 恐怖攻擊的英雄。

今天,當我們享受著快速穩定的網路服務時,不妨記住這位非凡的人物—— Daniel Lewin,一個用短暫生命改變了世界的傳奇。

參考文章


Edit page
Share this post on:Link copied!

Previous Post
台股零股交易變革發展:門檻怎麼從 50 萬降到 3,000 元
Next Post
Markdown 連結網址含括號時,用角括號包起來