遊戲伺服器的若干關鍵模組

2021-06-07 01:29:24 字數 1358 閱讀 9090

乙個(或一組)完備的伺服器程式,除了具備良好的架構外,各個關鍵模組決定了乙個伺服器的命運。對於乙個系統的理解因人而異,下面所列的內容僅僅是一些條目,在您的系統中可能乙個模組是由下面數個條目構成的。

1、資源及記憶體管理模組。無需多說,「一切都是資源」,你的資料都在記憶體中。通常對於乙個伺服器來說為了穩定執行於7x24,記憶體管理是關鍵,再加上若干的「外掛程式」,記憶體管理不是一項「簡單任務」,諸如安全訪問策略、記憶體碎片整理、資源安全**等等都是必備的特性。

2、非同步/同步資料i/o模組。網路、檔案都是i/o,只有高效的i/o才能保證整個伺服器的工作效率,這方面能用的技術很多,比如每個開發人員都知道的「資料緩衝」技術、i/o多路復用技術等等。

3、資料安全模組。包括併發資料安全和網路資料安全。併發這個主題太多人討論了,說一千道一萬,你需要的就是一套久經「沙場」的併發體系,沒有相當的實踐經驗不建議自己去寫併發框架,這樣做真的很「蠢」。而網路資料安全通常會相對簡單一些,達到一些基礎的安全效能指標就可以,因為網路安全不是乙個(或一組)伺服器程式就能完全解決得了的,比如鏈路加密、連線限制、流量控制等等,這些基礎的安全策略是必須實現的。

4、資料庫互動模組。就是和各種資料庫打交道,將資料進行持久、儲存,順便提一下對於資料庫的設計,可以學學日本工程師的做法,另外就是我個人的觀點:記憶體中的資料永遠比資料庫快很多,但是不是什麼資料都適合放到記憶體中的。

5、遊戲邏輯實體模組。一般的,就是所謂的「開發包」模組。用這個模組編寫遊戲的邏輯,呼叫各種指令碼。

6、外掛程式模組。對基礎功能的擴充套件,因系統而異,不可缺少。

上面的各個模組不是乙個伺服器的全部模組,是最基礎的模組,也是互相關聯的模組。在一些系統裡,伺服器架構比較靈活,所以模組都可以按照外掛程式方式進行開發,這種的方式比較流行,因為大家認為這樣更「人性化」,可以隨意拆卸、變更過時的外掛程式,這就要求核心框架足夠的健壯,為了保證系統安全,開發人員就必須遵守相關的開發原則,比如執行緒使用原則、物件池使用原則等等。

就個人的感受而言,過多的外掛程式必然導致系統安全性和可用性的下降,再強大的核心也應付不了眾多的外掛程式,而且不要期望所有的開發人員都清楚如何正確處理執行緒併發、如何正確使用物件池、如何正確地在框架中釋放自己的資料,所以應當適當的將模組進行整合和合併。如果乙個模組完成了過多的功能,那就應該將模組進行拆解。乙個架構師真正的功力就體現在這些細節上,優秀的架構師架構的系統會讓你覺得很清爽、很舒服,使用起來很高效、很安全,但是沒有設計完美的系統,找到適合自己專案的設計才是王道。

最後,從工程角度看,遊戲伺服器往往不是乙個程式就搞定的,可能是很多程式在一起共同完成,比如有安全管理伺服器、連線伺服器、邏輯伺服器、網路差速轉換伺服器、內容發布支援伺服器等等。不管什麼伺服器,最好都使用相同的架構,乙個好的構架足夠應付這些需求了,這好像是句廢話,但是我見過一些公司同乙個專案使用了很多架構和框架,可謂是五花八門,我很有興趣知道他們的技術經理是怎麼管理的。

mysql 做遊戲伺服器配置 遊戲伺服器部署

bin bash 小菜鳥 掛機 版本 1.0 遊戲伺服器部署 基礎環境 mysql資料庫svn客戶端需部署才能執行此指令碼 if uid 0 then echo game server install else exit 1 firead p please create the storage ga...

mysql遊戲伺服器快取 遊戲伺服器快取策略

1 什麼是快取 在資料庫與伺服器邏輯之間加入的資料層 2 作用 減少資料庫操作 伺服器使用mysql作為資料庫,mysql每秒鐘併發數量有限,所以我們要減少mysql的操作。3 erlang的快取 erlang 在記憶體中可用 程序字典 gen state ets 儲存變數,理論上三種方式都可以作為...

遊戲伺服器架構

登陸伺服器判斷賬戶合法性,如果合法的話,把session資訊寫入memcache,閘道器伺服器收到玩家連線請求後,在memcache裡查詢是否合法玩家,防止非法連線。閘道器伺服器要管理玩家連線,需要高併發,可以開多個 scene mgr純粹的 訊息功能 資料庫伺服器純粹的查詢修改資料功能,如果成為瓶...