遊戲服務器的若干關鍵模塊 .

http://blog.csdn.net/lynningame/article/details/3118108

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

1、資源及內存管理模塊。無需多說,“一切都是資源”,你的數據都在內存中。通常對於一個服務器來說爲了穩定運行於7x24,內存管理是關鍵,再加上若干的“插件”,內存管理不是一項“簡單任務”,諸如安全訪問策略、內存碎片整理、資源安全回收等等都是必備的特性。

2、異步/同步數據I/O模塊。網絡、文件都是I/O,只有高效的I/O才能保證整個服務器的工作效率,這方面能用的技術很多,比如每個開發人員都知道的“數據緩衝”技術、I/O多路複用技術等等。

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

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

5、遊戲邏輯實體模塊。一般的,就是所謂的“開發包”模塊。用這個模塊編寫遊戲的邏輯,調用各種腳本。

6、插件模塊。對基礎功能的擴展,因系統而異,不可缺少。

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

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

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

發佈了10 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章