很多同窗或朋友都問過我,Java作遊戲服務器跟Java web有什麼不一樣,趁着此次這個遊戲差很少完工,我寫了一個服務器架構的文檔,固然,每一個人都能設計不一樣的架構,有好的有壞的,我這裏給的只是我我的的一種設計,其中哪些設計不合理,還請多指教。因爲寫文檔用的服務器上搭建的showdoc,一種免費的在線文檔系統,使用的md,因而我就直接copy到簡書來了,不過文檔中的敏感信息都處理了,遊戲名就不透露啦,服務器的ip端口,帳號密碼,更是不能透露啦。這裏就讓那些還不明白遊戲服務器的同窗們,大體瞭解下服務器的架構mysql
根據需求,可將服務器大體分爲登陸服務器、邏輯服務器、文件服務器、支付服務器、國戰服務器和聊天服務器web
服務器之間的進程通訊使用json-rpc,json-rpc的底層爲短鏈接實現,通訊爲json數據格式redis
服務器\屬性 | 外網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 |
聊天服務器 | 暫無 | 暫無 | 暫無 | 暫無 |
服務器\屬性 | 外網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 | 無 |
服務器\屬性 | 外網ip | 內網ip | 端口 |
---|---|---|---|
Memcache | 127.0.0.1 | 127.0.0.1 | 0 |
服務器\屬性 | 外網代理ip | 內網ip | 外網端口 |
---|---|---|---|
MySQL | 無 | 127.0.0.1 | 0 |
其中,遊戲邏輯服務器的系統架構以下:sql
總結以下圖:json
服務器啓動順序以下:服務器