這16年來我是如何做系統性能優化的

2019年下半年,極客時間總編輯郭蕾從北京飛來杭州,問我有什麼特別想分享給大家的技術。我回顧了下自己這16年來的工作經歷,發現無論在華爲、騰訊、思科、阿里,我都在與海量數據打交道,這個過程中對性能優化有許多思考,但一直沒有系統的寫下來。於是我就跟郭蕾說,那就針對分佈式系統,講講我心中的性能優化方法論吧。這就是《系統性能調優必知必會》這門課的誕生過程。

我做過兩門視頻課,《Nginx 核心知識 100 講》和《Web 協議詳解與抓包實戰》,這次和你聊聊程序員日常工作中那些繞不開的系統性能優化問題

只要技術厲害一點的工程師都知道,性能不只對產品的攻城掠地至關重要,它也是程序員價值的重要體現,特別是它在工作面試、技術等級晉升上總會扮演重要角色。

  • 比如,在包括阿里在內的大多數擁有技術職級晉升體系的公司裏,爲了保障公平性,一般會由跨部門的專家組成評委會。那麼其他部門的高級專家在不熟悉候選人業務的情況下,要怎麼去考察候選人的水平呢?他們只能去考察底層的硬核知識,而這當中性能問題又是最有區分度的問題。因此,掌握性能問題將對你的晉升之路有很大助益。如果你始終埋頭在業務中,不關心更通用的性能優化方法論,將在技術等級晉升上非常吃虧。
  • 再比如,你在面試互聯網大廠時,面試官總會問許多超出工作範圍的性能問題,爲什麼會這樣呢?當然你可以感慨甚至抱怨,這不就是“面試造火箭,入職擰螺絲”嘛?但從面試官的角度來看,你會發現性能就是最好的面試題,它從算法到架構,既考察了候選人的潛力,也能考察工程能力。如果候選人具備系統的性能優化方法論,那麼無論在架構設計還是應用模塊開發上,他的代碼可擴展性都會更好,消耗的計算力、帶寬和磁盤等 IT 資源也更少,也自然更容易被面試官青睞。

因此,不論是爲了滿足業務發展的需求,還是在面試、晉升場景中有更好的表現,如果你希望成爲高薪高效的 10X 程序員,那麼,系統地學習性能優化就是一門必修課。我先把課程海報分享在這,再跟你說說這門課解決的具體問題。

那麼,系統性能優化該怎麼學呢?當然是看需求。當下的後端幾乎都是分佈式系統,那麼對應的,我們面對的課題也就是如何全面提升複雜集羣的性能。但當你想要學習分佈式系統優化的時候,你卻會發現,能找到的資料實在是太少了。

如果你在 Google 上搜索如何優化分佈式系統的性能,大概只能找到孤零零的幾篇文章,相關的多數書籍也都在討論容錯、事務、流控等概念的實現,卻很少有文章介紹如何優化整個分佈式系統的性能。

這恰恰就是我推出 《系統性能調優必知必會》這個專欄的初衷。我希望通過這個專欄,把自己這些年來在分佈式性能領域所遇到的問題和解決方案,歸納總結,梳理出一條交付給你,告訴你我眼中的性能問題本質是怎樣的。

 

我是誰?

我是陶輝,杭州智鏈達數據有限公司 CTO 兼聯合創始人,前阿里雲高級技術專家、騰訊雲 TVP,著有《深入理解 Nginx:模塊開發與架構解析》一書。

我 2004 年畢業於西安交通大學,有近 20 年的互聯網一線工作經驗:曾在華爲中央軟件部參與 iMAP 網管系統的研發,熟悉網絡設備的工作流程;在騰訊 QQ 空間部門使用自定義的 Qzone 協議傳遞巨量數據,對如何設計出高性能、可擴展的應用協議有豐富的實踐經驗;在思科從事 Nginx 服務的研發,對 Web 服務器如何高效地處理 HTTP 協議有全面的認識;在阿里雲擔任 VPC 網絡、ECS 管理與存儲系統重構的架構師,對公有云及 IDC 內部網絡系統有深刻了解。

工作數年,我始終與性能相伴,目前致力於 Linux 下高性能服務器的開發,以及分佈式環境下海量數據存儲的設計與開發。

我是如何講解性能優化的

如果你需要從架構層面優化整個系統,那麼這門課可以拓展你的知識面,告訴你如何優化架構才能讓整體服務獲得最大性能;如果你剛開始接觸性能優化,這門課可以給你打牢基礎,告訴你影響性能的底層因素,在實踐中優化你的程序,看到立竿見影的效果。

我先給你總結了一份「系統性能優化核心知識圖譜」

你會發現,整個腦圖我是從 4 個方面來梳理的,這其實就是我們在提升一個新系統的性能時,可以入手的 4 個層次。

1、首先,你可以從提升單機進程的性能入手,包括高效地使用主機的 CPU、內存、磁盤等硬件,通過併發編程提升吞吐量,根據業務特性選擇合適的算法。

2、其次,分佈式系統是由各個組件通過網絡連接在一起,所以優化傳輸層網絡可以讓所有組件同時受益。具體優化時,你可以從降低請求的時延,提升總體吞吐量兩個方向入手。

3、再次,要對業務消息採用更高效的編碼方式,這既包括協議頭、包體的優化,也包括 TLS 安全層的性能提升。具體優化時,既要深入靜態編碼,也要從動態的增量編碼上優化。同時,調整消息的交互方式也能提升性能。

4、最後,我們再從集羣整體上進行架構層面的優化。基於 ACP、AKF、NWR 等分佈式理論,我們的優化方向仍然是降低時延和提升吞吐量,但實現方式則要運用分而治之的思想,調度集羣中的所有結節協作配合,完成性能優化目標。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章