skynet初探
02-27
用skynet寫伺服器一年有餘,在業務邏輯層面已經基本能掌握一個遊戲伺服器的系統設計。但是我認為,寫遊戲伺服器是一個要求比較高的工作,因為到了線上,任何小小的錯誤都可能造成重大的問題。這就要求對伺服器的底層設計、資料庫等有比較深刻的理解。所以最近開始嘗試去閱讀skynet的源碼,希望能藉此讓自己實現 客戶端+伺服器+客戶端引擎+伺服器引擎全棧。
skynet的源碼代碼量不算特別大,C代碼部分是核心實現,大概不到1W行代碼。讀一遍代碼不是很困難,但是要理解其中的設計,需要反覆的讀代碼、讀文檔。skynet不是細節都會有文檔說明,代碼本身的注釋也較少。如果要更深入的理解skynet,需要動手做實驗分析。目前比較感興趣的skynet模塊,也是skynet的核心模塊包括:網路模塊、服務調度模塊、資料庫模塊。感興趣的原因主要有兩點,一是這些是skynet的核心模塊,另外一點這些模塊也是伺服器的核心底層。由於之前沒有接觸過太多網路相關的編程,在對skynet使用的一些底層函數庫的理解上有一定困難。雖然現在能大概理解skynet的整體設計以及代碼流程,但是要進一步理解一些細節的設計,需要對代碼段進行仔細的琢磨。
後面準備從兩個方向加強對skynet底層的理解,首先繼續閱讀代碼,這個做起來比較方便,目前階段還能繼續提高對源碼的理解;另外一方面,開始通過給skynet打log、或者拆分代碼出來自己動手做實驗來理解更細節的設計。
推薦閱讀:
※卡牌戰鬥系統設計概述
※遊戲線上的伺服器風險
※記錄一次伺服器宕機分析過程(2)-深入Lua GC
TAG:遊戲伺服器 |