遊戲服務器架構文檔

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

****服務器架構文檔

1、服務器架構圖

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

服務器架構圖

1.服務器間進程通訊

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

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
  • 備註:開發階段全部服務器部署在同一臺物理服務器

2、邏輯服務器系統架構

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

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

總結以下圖:json

系統架構圖

3、服務器啓動

服務器啓動順序以下:服務器

  1. MySQL服務器
  2. Memcache服務器
  3. Redis Sentinel
  4. Redis Masters
  5. Redis Slaves
  6. 登陸服務器
  7. 支付服務器
  8. 邏輯服務器
  9. 文件服務器
  10. 聊天服務器
  11. 國戰服務器
相關文章
相關標籤/搜索