Java遊戲伺服器架構實戰

Java遊戲伺服器架構實戰

《Java遊戲伺服器架構實戰》是2020年人民郵電出版社出版的圖書。

基本介紹

  • 中文名:Java遊戲伺服器架構實戰
  • 作者:王廣帥
  • 類別:Java
  • 出版社:人民郵電出版社
  • 出版時間:2020年
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787115540478
內容簡介,圖書目錄,作者簡介,

內容簡介

為了幫助伺服器開發人員更好地理解伺服器框架的設計與開發,本書從零開始,詳細闡述遊戲伺服器設計與開發的流程和技術點,包括網路通信、分散式架構設計、內部RPC通信、數據管理、多執行緒管理,並從實踐的角度出發,配合詳細的源碼,幫助廣大遊戲伺服器開發人員,或正在考慮從事遊戲伺服器開發的人員,更加系統地學習伺服器架構的設計與開發。本書實用性強,既可以幫助想從事伺服器開發的人員快速學習相關知識,又可以幫助伺服器開發人員向架構師進階。

圖書目錄

第 1章 遊戲伺服器架構總體設計01
1.1 遊戲伺服器架構設計的意義 01
1.1.1 良好的架構設計有助於團隊協作開發 01
1.1.2 良好的架構設計有助於避免bug 的產生 02
1.1.3 良好的架構設計有助於制定合理的項目開發周期計畫 02
1.1.4 良好的架構設計有利於測試 03
1.2 遊戲伺服器架構分類 03
1.2.1 單體遊戲伺服器架構 03
1.2.2 分散式遊戲伺服器架構 05
1.3 遊戲伺服器架構基本模組 06
1.3.1 網路通信長連線與短連線 06
1.3.2 網關 07
1.3.3 服務訊息互動——訊息中間件 08
1.3.4 業務處理框架 09
1.3.5 測試模組 11
1.4 本章總結11
第 2章 伺服器項目管理——Maven 12
2.1 Eclipse 中配置Maven 工具 12
2.1.1 Maven 下載與配置 12
2.1.2 Maven 環境變數配置 13
2.1.3 Maven 常用命令示例 15
2.2 搭建Maven 倉庫中心 16
2.2.1 安裝Nexus 16
2.2.2 在Maven 中配置私服 19
2.2.3 添加非開源依賴Jar 包 21
2.3 創建Maven 項目21
2.3.1 創建父項目 22
2.3.2 創建子項目 23
2.4 本章總結23
第3章 資料庫選擇與安裝24
3.1 數據持久化——MongoDB 24
3.1.1 為什麼使用MongoDB 24
3.1.2 安裝MongoDB 25
3.2 記憶體型資料庫——Redis 28
3.2.1 為什麼使用Redis 28
3.2.2 安裝Redis 29
3.2.3 使用Redis 快取需要注意的事項 30
3.3 本章總結32
第4章 遊戲服務中心開發33
4.1 遊戲服務中心的作用 33
4.1.1 遊戲服務中心提供遊戲外圍服務 33
4.1.2 遊戲服務中心方便動態擴展 34
4.2 遊戲服務中心開發準備 34
4.2.1 根據需求設計架構 34
4.2.2 Spring Cloud 簡介 36
4.2.3 安裝Spring Tool 外掛程式 37
4.2.4 添加公共pom 依賴 38
4.3 用戶登錄註冊功能開發 40
4.3.1 創建遊戲服務中心項目 41
4.3.2 網路通信數據格式定義 43
4.3.3 添加資料庫操作 45
4.3.4 實現登錄註冊 50
4.3.5 全局異常捕獲處理 55
4.3.6 登錄註冊測試 56
4.3.7 實現角色創建 57
4.3.8 角色創建測試 59
4.4 本章總結60
第5章 Web 伺服器網關開發 61
5.1 Consul 服務註冊中心 61
5.1.1 Consul 簡介 61
5.1.2 安裝Consul 62
5.2 Web 伺服器網關功能開發 63
5.2.1 Spring Cloud Gateway 簡介 63
5.2.2 創建Web 伺服器網關項目 64
5.2.3 網關路由信息配置 66
5.2.4 測試Web 伺服器網關請求轉發 68
5.3 統一驗證請求許可權 69
5.3.1 在Web 伺服器網關進行許可權驗證的必要性 69
5.3.2 網關全局過濾組件——GlobalFilter 71
5.3.3 GlobalFilter 實現許可權驗證 72
5.3.4 測試網關許可權驗證 74
5.4 請求負載均衡 76
5.4.1 負載均衡組件——Spring Cloud Ribbon 76
5.4.2 自定義負載均衡策略 77
5.4.3 負載均衡策略配置 80
5.5 網關流量限制 81
5.5.1 常見的限流算法 81
5.5.2 添加Web 伺服器網關限流策略 83
5.5.3 Web 服務限流測試 86
5.6 HTTPS 請求配置 86
5.6.1 HTTPS 簡介 86
5.6.2 HTTPS 證書申請 87
5.6.3 網關服務配置HTTPS 證書 89
5.6.4 測試HTTPS 訪問 90
5.7 服務錯誤異常全局捕獲 92
5.7.1 默認全局Web 異常捕獲 92
5.7.2 自定義全局Web 異常捕獲 93
5.7.3 異常捕獲測試 95
5.8 本章總結96
第6章 遊戲伺服器網關開發97
6.1 遊戲伺服器網關管理 97
6.1.1 遊戲伺服器網關必須支持動態伸縮 97
6.1.2 遊戲伺服器網關項目搭建與配置 99
6.1.3 遊戲伺服器網關信息快取管理 101
6.1.4 遊戲伺服器網關負載均衡策略 105
6.1.5 測試遊戲伺服器網關信息 107
6.2 客戶端與遊戲伺服器網關通信開發 109
6.2.1 客戶端項目創建 109
6.2.2 網路通信數據粘包與斷包 117
6.2.3 網路通信協定制定 119
6.2.4 客戶端訊息編碼與解碼開發 121
6.2.5 遊戲伺服器網關訊息編碼與解碼開發 124
6.2.6 使用Netty 實現遊戲伺服器網關長連線服務 127
6.3 請求訊息參數與回響訊息參數對象化 130
6.3.1 請求與回響訊息封裝 130
6.3.2 客戶端與遊戲伺服器網關通信測試 137
6.4 訊息體對象序列化與反序列化 139
6.4.1 訊息體使用JSON 序列化與反序列化 140
6.4.2 訊息體使用Protocol Buffers 序列化與反序列化 142
6.5 訊息自動分發處理 146
6.5.1 訊息自動分發設計 147
6.5.2 訊息自動分發開發 148
6.6 網路通信安全 152
6.6.1 連線認證 152
6.6.2 通信協定加密和解密 154
6.6.3 遊戲伺服器網關流量限制 158
6.7 網路連線管理 159
6.7.1 連線管理 159
6.7.2 連線心跳檢測 163
6.7.3 訊息冪等處理 167
6.8 本章總結168
第7章 遊戲伺服器網關與遊戲業務服務數據通信169
7.1 遊戲伺服器網關與遊戲業務服務通信定義 169
7.1.1 遊戲伺服器網關訊息轉發 169
7.1.2 定義訊息通信模型 170
7.1.3 Spring Cloud Bus 訊息匯流排 173
7.1.4 訊息匯流排通信層——Kafka 174
7.1.5 訊息匯流排訊息發布訂閱測試 178
7.2 遊戲伺服器網關與遊戲業務服務通信實現 178
7.2.1 訊息序列化與反序列化實現 179
7.2.2 遊戲伺服器網關訊息負載均衡 181
7.2.3 遊戲伺服器網關訊息轉發實現 185
7.2.4 遊戲伺服器網關監聽接收回響訊息 189
7.2.5 添加遊戲業務服務項目 190
7.2.6 遊戲服務接收並回響網關訊息 193
7.3 遊戲伺服器網關與遊戲服務通信測試 195
7.4 本章總結197
第8章 遊戲業務處理框架開發198
8.1 遊戲伺服器中的多執行緒管理 198
8.1.1 執行緒數量的管理 198
8.1.2 遊戲服務執行緒池分配 200
8.2 Netty 執行緒池模型 200
8.2.1 Netty 執行緒模型的核心類 201
8.2.2 獲取執行緒池執行結果 202
8.3 客戶端訊息處理管理 205
8.3.1 借鑑Netty 的訊息處理機制 205
8.3.2 客戶端訊息事件處理框架模型 209
8.3.3 實現自定義MultithreadEventExecutorGroup 213
8.3.4 實現GameChannel 217
8.3.5 實現GameChannelPipeline 220
8.3.6 實現AbstractGameChannelHandlerContext 222
8.3.7 實現客戶端訊息處理與訊息返回 224
8.3.8 GameChannel 空閒逾時處理 228
8.4 不同遊戲用戶之間的數據互動 236
8.4.1 多執行緒並發運算元據導致的錯誤或異常 237
8.4.2 在功能設計上避免用戶數據之間的直接互動 239
8.4.3 在架構設計上解決用戶數據之間的直接互動 239
8.4.4 GameChannel 事件自動分發處理 243
8.5 本章總結245
第9章 遊戲用戶數據管理246
9.1 遊戲用戶數據異步載入 246
9.1.1 載入遊戲數據的時機 246
9.1.2 異步載入遊戲數據實現 247
9.2 遊戲數據持久化到資料庫 250
9.2.1 遊戲數據持久化方式 250
9.2.2 異步方式持久化數據的並發問題 251
9.2.3 數據定時異步持久化實現 253
9.3 Player 對象的封裝與使用 256
9.3.1 直接操作Player 對象的弊端 256
9.3.2 實現Player 對象數據與行為分離 258
9.4 本章總結260
第 10章 RPC 通信設計與實現 261
10.1 遊戲模組服務劃分 261
10.1.1 遊戲服務需不需要微服務化 261
10.1.2 遊戲服務模組進程劃分規則 263
10.2 RPC 通信實現 264
10.2.1 自定義RPC 設計 264
10.2.2 負載均衡管理 268
10.2.3 創建競技場服務項目 274
10.2.4 RPC 請求訊息的傳送與接收 281
10.2.5 RPC 回響訊息的傳送與接收 290
10.2.6 RPC 請求逾時檢測 292
10.3 本章總結293
第 11章 事件系統的設計與實現294
11.1 事件系統在伺服器開發中的重要性 294
11.1.1 什麼是事件系統 294
11.1.2 事件系統可以解耦模組依賴 295
11.1.3 事件系統使代碼更容易維護 296
11.2 事件系統的實現 296
11.2.1 自定義基於監聽接口的事件系統 297
11.2.2 自定義基於註解的事件系統 299
11.2.3 Spring 事件系統套用304
11.3 根據事件實現的任務系統 306
11.3.1 任務系統需求 307
11.3.2 面向過程的任務系統實現 308
11.3.3 面向對象的事件觸髮式任務系統實現 309
11.4 本章總結 314
第 12章 遊戲伺服器自動化測試315
12.1 遊戲伺服器自動化測試的重要性 315
12.1.1 單元測試使代碼更簡潔 315
12.1.2 單元測試保證方法的代碼正確性 321
12.1.3 自動化測試保證代碼重構的安全性 323
12.2 遊戲伺服器自動化測試的實現 323
12.2.1 TestNG 框架簡介 324
12.2.2 Spring Boot 單元測試配置 325
12.2.3 方法單元測試案例實現 329
12.2.4 伺服器集成測試實現 336
12.2.5 使用TestNG 配置檔案區分不同的測試環境 340
12.3 本章總結342
第 13章 伺服器開發實例——世界聊天系統 343
13.1 單服世界聊天系統實現 343
13.1.1 添加客戶端命令 344
13.1.2 伺服器實現訊息轉發 348
13.1.3 單服世界聊天測試 349
13.2 分散式世界聊天系統實現 352
13.2.1 分散式世界聊天系統設計 352
13.2.2 創建單獨的聊天項目 354
13.2.3 實現聊天訊息的發布與轉發 356
13.2.4 分散式世界聊天服務測試 359
13.3 本章總結360

作者簡介

王廣帥2011年進入遊戲行業,一直致力於Java遊戲伺服器開發。2014年開始負責創業遊戲公司的伺服器架構設計工作,帶領團隊參與網頁遊戲、手機遊戲、2D遊戲、3D遊戲、卡牌類遊戲、多人線上(MMO)類遊戲的伺服器開發,積累了豐富的遊戲伺服器架構設計與開發經驗。業餘時間,經常在QQ群(66728073)、個人微信公眾號(youxijishu)、技術部落格分享遊戲伺服器開發的技術經驗,並且獨立維護一個專業的遊戲開發網站——遊戲技術網。

相關詞條

熱門詞條

聯絡我們