遊戲服務器架構文檔

遊戲服務器架構文檔

不少同學或朋友都問過我,Java做遊戲服務器跟Java web有什麼不同,趁着這次這個遊戲差不多完工,我寫了一個服務器架構的文檔,當然,每個人都能設計不同的架構,有好的有壞的,我這裏給的只是我個人的一種設計,其中哪些設計不合理,還請多指教。由於寫文檔用的服務器上搭建的showdoc,一種免費的在線文檔系統,使用的md,於是我就直接copy到簡書來了,不過文檔中的敏感信息都處理了,遊戲名就不透露啦,服務器的ip端口,賬號密碼,更是不能透露啦。這裏就讓那些還不明白遊戲服務器的同學們,大致瞭解下服務器的架構

**服務器架構文檔

一、服務器架構圖

根據需求,可將服務器大致分爲登錄服務器、邏輯服務器、文件服務器、支付服務器、國戰服務器和聊天服務器

%u670D%u52A1%u5668%u67B6%u6784%u56FE
服務器架構圖

1.服務器間進程通信

服務器之間的進程通信使用json-rpc,json-rpc的底層爲短連接實現,通信爲json數據格式

2.遊戲服務器

服務器\屬性 外網ip 內網ip 端口 管理端口
登錄服務器 127.0.0.1 127.0.0.1 0 0
文件服務器 127.0.0.1 127.0.0.1 0 0
國戰服務器 127.0.0.1 127.0.0.1 0 0
支付服務器 127.0.0.1 127.0.0.1 0 0
邏輯服務器 127.0.0.1 127.0.0.1 0 0
聊天服務器 暫無 暫無 暫無 暫無

3.Redis服務器集羣

服務器\屬性 外網ip 內網ip 端口 密碼
Redis Sentinel集羣 127.0.0.1 127.0.0.1 0
Redis主服務器1 127.0.0.1 127.0.0.1 0 123456
Redis從服務器1 127.0.0.1 127.0.0.1 0
Redis主服務器2 127.0.0.1 127.0.0.1 0 123456
Redis從服務器2 127.0.0.1 127.0.0.1 0

4.Memcache服務器

服務器\屬性 外網ip 內網ip 端口
Memcache 127.0.0.1 127.0.0.1 0

5.MySQL服務器

服務器\屬性 外網代理ip 內網ip 外網端口 賬號 密碼
MySQL 127.0.0.1 0 root 123456
  • 備註:開發階段所有服務器部署在同一臺物理服務器

二、邏輯服務器系統架構

其中,遊戲邏輯服務器的系統架構如下:

  1. 遊戲客戶端爲Cocos2d,與服務器交互採用Http通信,數據傳輸採用Json格式字符串
  2. 服務器端的網絡層使用基於Netty實現的Http服務器
  3. 通過Netty接入客戶端請求,根據請求數據中的協議號,調用服務器中相對應的邏輯模塊
  4. 邏輯模塊處理消息,若要處理遊戲數據則調用Jedis或Hibernate處理,若觸發某事件,則調用事件處理器
  5. 通過Netty的ChannelHandlerContext返回處理結果
  6. 客戶端與服務器交互的數據通過XXTea+Base64進行加密處理

總結如下圖:

%u7CFB%u7EDF%u67B6%u6784%u56FE
系統架構圖

三、服務器啓動

服務器啓動順序如下:

  1. MySQL服務器
  2. Memcache服務器
  3. Redis Sentinel
  4. Redis Masters
  5. Redis Slaves
  6. 登錄服務器
  7. 支付服務器
  8. 邏輯服務器
  9. 文件服務器
  10. 聊天服務器
  11. 國戰服務器
發佈了35 篇原創文章 · 獲贊 3 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章