Java游戲服務(wù)器架構(gòu)實(shí)戰(zhàn)
定 價(jià):79 元
- 作者:王廣帥
- 出版時(shí)間:2020/9/1
- ISBN:9787115540478
- 出 版 社:人民郵電出版社
- 中圖法分類(lèi):TP317.6
- 頁(yè)碼:360
- 紙張:
- 版次:01
- 開(kāi)本:16開(kāi)
為了幫助服務(wù)器開(kāi)發(fā)人員更好地理解服務(wù)器框架的設(shè)計(jì)與開(kāi)發(fā),本書(shū)從零開(kāi)始,詳細(xì)闡述游戲服務(wù)器設(shè)計(jì)與開(kāi)發(fā)的流程和技術(shù)點(diǎn),包括網(wǎng)絡(luò)通信、分布式架構(gòu)設(shè)計(jì)、內(nèi)部RPC通信、數(shù)據(jù)管理、多線程管理,并從實(shí)踐的角度出發(fā),配合詳細(xì)的源碼,幫助廣大游戲服務(wù)器開(kāi)發(fā)人員,或正在考慮從事游戲服務(wù)器開(kāi)發(fā)的人員,更加系統(tǒng)地學(xué)習(xí)服務(wù)器架構(gòu)的設(shè)計(jì)與開(kāi)發(fā)。
本書(shū)實(shí)用性強(qiáng),既可以幫助想從事服務(wù)器開(kāi)發(fā)的人員快速學(xué)習(xí)相關(guān)知識(shí),又可以幫助服務(wù)器開(kāi)發(fā)人員向架構(gòu)師進(jìn)階。
1.系統(tǒng):項(xiàng)目從零搭建,幫助讀者實(shí)現(xiàn)各個(gè)重要模塊的功能開(kāi)發(fā),系統(tǒng)闡述游戲服務(wù)器架構(gòu)設(shè)計(jì)與開(kāi)發(fā);
2.全面:從設(shè)計(jì)到開(kāi)發(fā),全面解析架構(gòu)的實(shí)現(xiàn)過(guò)程,涵蓋Java開(kāi)發(fā)的各種熱門(mén)技術(shù);
3.深入:按游戲服務(wù)器開(kāi)發(fā)流程,詳細(xì)講解技術(shù)要點(diǎn),讓你快速成為架構(gòu)師,實(shí)現(xiàn)職位提升;
4.提供實(shí)踐項(xiàng)目源代碼,提高學(xué)習(xí)效率;
5.提供完善的技術(shù)支持和售后服務(wù)。
王廣帥
2011年進(jìn)入游戲行業(yè),一直致力于Java游戲服務(wù)器開(kāi)發(fā)。2014年開(kāi)始負(fù)責(zé)創(chuàng)業(yè)游戲公司的服務(wù)器架構(gòu)設(shè)計(jì)工作,帶領(lǐng)團(tuán)隊(duì)參與網(wǎng)頁(yè)游戲、手機(jī)游戲、2D游戲、3D游戲、卡牌類(lèi)游戲、多人在線(MMO)類(lèi)游戲的服務(wù)器開(kāi)發(fā),積累了豐富的游戲服務(wù)器架構(gòu)設(shè)計(jì)與開(kāi)發(fā)經(jīng)驗(yàn)。業(yè)余時(shí)間,經(jīng)常在QQ群(66728073)、個(gè)人微信公眾號(hào)(youxijishu)、技術(shù)博客分享游戲服務(wù)器開(kāi)發(fā)的技術(shù)經(jīng)驗(yàn),并且獨(dú)立維護(hù)一個(gè)專業(yè)的游戲開(kāi)發(fā)網(wǎng)站——游戲技術(shù)網(wǎng)。
第 1章 游戲服務(wù)器架構(gòu)總體設(shè)計(jì)01
1.1 游戲服務(wù)器架構(gòu)設(shè)計(jì)的意義 01
1.1.1 良好的架構(gòu)設(shè)計(jì)有助于團(tuán)隊(duì)協(xié)作開(kāi)發(fā) 01
1.1.2 良好的架構(gòu)設(shè)計(jì)有助于避免bug 的產(chǎn)生 02
1.1.3 良好的架構(gòu)設(shè)計(jì)有助于制定合理的項(xiàng)目開(kāi)發(fā)周期計(jì)劃 02
1.1.4 良好的架構(gòu)設(shè)計(jì)有利于測(cè)試 03
1.2 游戲服務(wù)器架構(gòu)分類(lèi) 03
1.2.1 單體游戲服務(wù)器架構(gòu) 03
1.2.2 分布式游戲服務(wù)器架構(gòu) 05
1.3 游戲服務(wù)器架構(gòu)基本模塊 06
1.3.1 網(wǎng)絡(luò)通信長(zhǎng)連接與短連接 06
1.3.2 網(wǎng)關(guān) 07
1.3.3 服務(wù)消息交互——消息中間件 08
1.3.4 業(yè)務(wù)處理框架 09
1.3.5 測(cè)試模塊 11
1.4 本章總結(jié)11
第 2章 服務(wù)器項(xiàng)目管理——Maven 12
2.1 Eclipse 中配置Maven 工具 12
2.1.1 Maven 下載與配置 12
2.1.2 Maven 環(huán)境變量配置 13
2.1.3 Maven 常用命令示例 15
2.2 搭建Maven 倉(cāng)庫(kù)中心 16
2.2.1 安裝Nexus 16
2.2.2 在Maven 中配置私服 19
2.2.3 添加非開(kāi)源依賴Jar 包 21
2.3 創(chuàng)建Maven 項(xiàng)目21
2.3.1 創(chuàng)建父項(xiàng)目 22
2.3.2 創(chuàng)建子項(xiàng)目 23
2.4 本章總結(jié)23
第3章 數(shù)據(jù)庫(kù)選擇與安裝24
3.1 數(shù)據(jù)持久化——MongoDB 24
3.1.1 為什么使用MongoDB 24
3.1.2 安裝MongoDB 25
3.2 內(nèi)存型數(shù)據(jù)庫(kù)——Redis 28
3.2.1 為什么使用Redis 28
3.2.2 安裝Redis 29
3.2.3 使用Redis 緩存需要注意的事項(xiàng) 30
3.3 本章總結(jié)32
第4章 游戲服務(wù)中心開(kāi)發(fā)33
4.1 游戲服務(wù)中心的作用 33
4.1.1 游戲服務(wù)中心提供游戲外圍服務(wù) 33
4.1.2 游戲服務(wù)中心方便動(dòng)態(tài)擴(kuò)展 34
4.2 游戲服務(wù)中心開(kāi)發(fā)準(zhǔn)備 34
4.2.1 根據(jù)需求設(shè)計(jì)架構(gòu) 34
4.2.2 Spring Cloud 簡(jiǎn)介 36
4.2.3 安裝Spring Tool 插件 37
4.2.4 添加公共pom 依賴 38
4.3 用戶登錄注冊(cè)功能開(kāi)發(fā) 40
4.3.1 創(chuàng)建游戲服務(wù)中心項(xiàng)目 41
4.3.2 網(wǎng)絡(luò)通信數(shù)據(jù)格式定義 43
4.3.3 添加數(shù)據(jù)庫(kù)操作 45
4.3.4 實(shí)現(xiàn)登錄注冊(cè) 50
4.3.5 全局異常捕獲處理 55
4.3.6 登錄注冊(cè)測(cè)試 56
4.3.7 實(shí)現(xiàn)角色創(chuàng)建 57
4.3.8 角色創(chuàng)建測(cè)試 59
4.4 本章總結(jié)60
第5章 Web 服務(wù)器網(wǎng)關(guān)開(kāi)發(fā) 61
5.1 Consul 服務(wù)注冊(cè)中心 61
5.1.1 Consul 簡(jiǎn)介 61
5.1.2 安裝Consul 62
5.2 Web 服務(wù)器網(wǎng)關(guān)功能開(kāi)發(fā) 63
5.2.1 Spring Cloud Gateway 簡(jiǎn)介 63
5.2.2 創(chuàng)建Web 服務(wù)器網(wǎng)關(guān)項(xiàng)目 64
5.2.3 網(wǎng)關(guān)路由信息配置 66
5.2.4 測(cè)試Web 服務(wù)器網(wǎng)關(guān)請(qǐng)求轉(zhuǎn)發(fā) 68
5.3 統(tǒng)一驗(yàn)證請(qǐng)求權(quán)限 69
5.3.1 在Web 服務(wù)器網(wǎng)關(guān)進(jìn)行權(quán)限驗(yàn)證的必要性 69
5.3.2 網(wǎng)關(guān)全局過(guò)濾組件——GlobalFilter 71
5.3.3 GlobalFilter 實(shí)現(xiàn)權(quán)限驗(yàn)證 72
5.3.4 測(cè)試網(wǎng)關(guān)權(quán)限驗(yàn)證 74
5.4 請(qǐng)求負(fù)載均衡 76
5.4.1 負(fù)載均衡組件——Spring Cloud Ribbon 76
5.4.2 自定義負(fù)載均衡策略 77
5.4.3 負(fù)載均衡策略配置 80
5.5 網(wǎng)關(guān)流量限制 81
5.5.1 常見(jiàn)的限流算法 81
5.5.2 添加Web 服務(wù)器網(wǎng)關(guān)限流策略 83
5.5.3 Web 服務(wù)限流測(cè)試 86
5.6 HTTPS 請(qǐng)求配置 86
5.6.1 HTTPS 簡(jiǎn)介 86
5.6.2 HTTPS 證書(shū)申請(qǐng) 87
5.6.3 網(wǎng)關(guān)服務(wù)配置HTTPS 證書(shū) 89
5.6.4 測(cè)試HTTPS 訪問(wèn) 90
5.7 服務(wù)錯(cuò)誤異常全局捕獲 92
5.7.1 默認(rèn)全局Web 異常捕獲 92
5.7.2 自定義全局Web 異常捕獲 93
5.7.3 異常捕獲測(cè)試 95
5.8 本章總結(jié)96
第6章 游戲服務(wù)器網(wǎng)關(guān)開(kāi)發(fā)97
6.1 游戲服務(wù)器網(wǎng)關(guān)管理 97
6.1.1 游戲服務(wù)器網(wǎng)關(guān)必須支持動(dòng)態(tài)伸縮 97
6.1.2 游戲服務(wù)器網(wǎng)關(guān)項(xiàng)目搭建與配置 99
6.1.3 游戲服務(wù)器網(wǎng)關(guān)信息緩存管理 101
6.1.4 游戲服務(wù)器網(wǎng)關(guān)負(fù)載均衡策略 105
6.1.5 測(cè)試游戲服務(wù)器網(wǎng)關(guān)信息 107
6.2 客戶端與游戲服務(wù)器網(wǎng)關(guān)通信開(kāi)發(fā) 109
6.2.1 客戶端項(xiàng)目創(chuàng)建 109
6.2.2 網(wǎng)絡(luò)通信數(shù)據(jù)粘包與斷包 117
6.2.3 網(wǎng)絡(luò)通信協(xié)議制定 119
6.2.4 客戶端消息編碼與解碼開(kāi)發(fā) 121
6.2.5 游戲服務(wù)器網(wǎng)關(guān)消息編碼與解碼開(kāi)發(fā) 124
6.2.6 使用Netty 實(shí)現(xiàn)游戲服務(wù)器網(wǎng)關(guān)長(zhǎng)連接服務(wù) 127
6.3 請(qǐng)求消息參數(shù)與響應(yīng)消息參數(shù)對(duì)象化 130
6.3.1 請(qǐng)求與響應(yīng)消息封裝 130
6.3.2 客戶端與游戲服務(wù)器網(wǎng)關(guān)通信測(cè)試 137
6.4 消息體對(duì)象序列化與反序列化 139
6.4.1 消息體使用JSON 序列化與反序列化 140
6.4.2 消息體使用Protocol Buffers 序列化與反序列化 142
6.5 消息自動(dòng)分發(fā)處理 146
6.5.1 消息自動(dòng)分發(fā)設(shè)計(jì) 147
6.5.2 消息自動(dòng)分發(fā)開(kāi)發(fā) 148
6.6 網(wǎng)絡(luò)通信安全 152
6.6.1 連接認(rèn)證 152
6.6.2 通信協(xié)議加密和解密 154
6.6.3 游戲服務(wù)器網(wǎng)關(guān)流量限制 158
6.7 網(wǎng)絡(luò)連接管理 159
6.7.1 連接管理 159
6.7.2 連接心跳檢測(cè) 163
6.7.3 消息冪等處理 167
6.8 本章總結(jié)168
第7章 游戲服務(wù)器網(wǎng)關(guān)與游戲業(yè)務(wù)服務(wù)數(shù)據(jù)通信169
7.1 游戲服務(wù)器網(wǎng)關(guān)與游戲業(yè)務(wù)服務(wù)通信定義 169
7.1.1 游戲服務(wù)器網(wǎng)關(guān)消息轉(zhuǎn)發(fā) 169
7.1.2 定義消息通信模型 170
7.1.3 Spring Cloud Bus 消息總線 173
7.1.4 消息總線通信層——Kafka 174
7.1.5 消息總線消息發(fā)布訂閱測(cè)試 178
7.2 游戲服務(wù)器網(wǎng)關(guān)與游戲業(yè)務(wù)服務(wù)通信實(shí)現(xiàn) 178
7.2.1 消息序列化與反序列化實(shí)現(xiàn) 179
7.2.2 游戲服務(wù)器網(wǎng)關(guān)消息負(fù)載均衡 181
7.2.3 游戲服務(wù)器網(wǎng)關(guān)消息轉(zhuǎn)發(fā)實(shí)現(xiàn) 185
7.2.4 游戲服務(wù)器網(wǎng)關(guān)監(jiān)聽(tīng)接收響應(yīng)消息 189
7.2.5 添加游戲業(yè)務(wù)服務(wù)項(xiàng)目 190
7.2.6 游戲服務(wù)接收并響應(yīng)網(wǎng)關(guān)消息 193
7.3 游戲服務(wù)器網(wǎng)關(guān)與游戲服務(wù)通信測(cè)試 195
7.4 本章總結(jié)197
第8章 游戲業(yè)務(wù)處理框架開(kāi)發(fā)198
8.1 游戲服務(wù)器中的多線程管理 198
8.1.1 線程數(shù)量的管理 198
8.1.2 游戲服務(wù)線程池分配 200
8.2 Netty 線程池模型 200
8.2.1 Netty 線程模型的核心類(lèi) 201
8.2.2 獲取線程池執(zhí)行結(jié)果 202
8.3 客戶端消息處理管理 205
8.3.1 借鑒Netty 的消息處理機(jī)制 205
8.3.2 客戶端消息事件處理框架模型 209
8.3.3 實(shí)現(xiàn)自定義MultithreadEventExecutorGroup 213
8.3.4 實(shí)現(xiàn)GameChannel 217
8.3.5 實(shí)現(xiàn)GameChannelPipeline 220
8.3.6 實(shí)現(xiàn)AbstractGameChannelHandlerContext 222
8.3.7 實(shí)現(xiàn)客戶端消息處理與消息返回 224
8.3.8 GameChannel 空閑超時(shí)處理 228
8.4 不同游戲用戶之間的數(shù)據(jù)交互 236
8.4.1 多線程并發(fā)操作數(shù)據(jù)導(dǎo)致的錯(cuò)誤或異常 237
8.4.2 在功能設(shè)計(jì)上避免用戶數(shù)據(jù)之間的直接交互 239
8.4.3 在架構(gòu)設(shè)計(jì)上解決用戶數(shù)據(jù)之間的直接交互 239
8.4.4 GameChannel 事件自動(dòng)分發(fā)處理 243
8.5 本章總結(jié)245
第9章 游戲用戶數(shù)據(jù)管理246
9.1 游戲用戶數(shù)據(jù)異步加載 246
9.1.1 加載游戲數(shù)據(jù)的時(shí)機(jī) 246
9.1.2 異步加載游戲數(shù)據(jù)實(shí)現(xiàn) 247
9.2 游戲數(shù)據(jù)持久化到數(shù)據(jù)庫(kù) 250
9.2.1 游戲數(shù)據(jù)持久化方式 250
9.2.2 異步方式持久化數(shù)據(jù)的并發(fā)問(wèn)題 251
9.2.3 數(shù)據(jù)定時(shí)異步持久化實(shí)現(xiàn) 253
9.3 Player 對(duì)象的封裝與使用 256
9.3.1 直接操作Player 對(duì)象的弊端 256
9.3.2 實(shí)現(xiàn)Player 對(duì)象數(shù)據(jù)與行為分離 258
9.4 本章總結(jié)260
第 10章 RPC 通信設(shè)計(jì)與實(shí)現(xiàn) 261
10.1 游戲模塊服務(wù)劃分 261
10.1.1 游戲服務(wù)需不需要微服務(wù)化 261
10.1.2 游戲服務(wù)模塊進(jìn)程劃分規(guī)則 263
10.2 RPC 通信實(shí)現(xiàn) 264
10.2.1 自定義RPC 設(shè)計(jì) 264
10.2.2 負(fù)載均衡管理 268
10.2.3 創(chuàng)建競(jìng)技場(chǎng)服務(wù)項(xiàng)目 274
10.2.4 RPC 請(qǐng)求消息的發(fā)送與接收 281
10.2.5 RPC 響應(yīng)消息的發(fā)送與接收 290
10.2.6 RPC 請(qǐng)求超時(shí)檢測(cè) 292
10.3 本章總結(jié)293
第 11章 事件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)294
11.1 事件系統(tǒng)在服務(wù)器開(kāi)發(fā)中的重要性 294
11.1.1 什么是事件系統(tǒng) 294
11.1.2 事件系統(tǒng)可以解耦模塊依賴 295
11.1.3 事件系統(tǒng)使代碼更容易維護(hù) 296
11.2 事件系統(tǒng)的實(shí)現(xiàn) 296
11.2.1 自定義基于監(jiān)聽(tīng)接口的事件系統(tǒng) 297
11.2.2 自定義基于注解的事件系統(tǒng) 299
11.2.3 Spring 事件系統(tǒng)應(yīng)用304
11.3 根據(jù)事件實(shí)現(xiàn)的任務(wù)系統(tǒng) 306
11.3.1 任務(wù)系統(tǒng)需求 307
11.3.2 面向過(guò)程的任務(wù)系統(tǒng)實(shí)現(xiàn) 308
11.3.3 面向?qū)ο蟮氖录|發(fā)式任務(wù)系統(tǒng)實(shí)現(xiàn) 309
11.4 本章總結(jié) 314
第 12章 游戲服務(wù)器自動(dòng)化測(cè)試315
12.1 游戲服務(wù)器自動(dòng)化測(cè)試的重要性 315
12.1.1 單元測(cè)試使代碼更簡(jiǎn)潔 315
12.1.2 單元測(cè)試保證方法的代碼正確性 321
12.1.3 自動(dòng)化測(cè)試保證代碼重構(gòu)的安全性 323
12.2 游戲服務(wù)器自動(dòng)化測(cè)試的實(shí)現(xiàn) 323
12.2.1 TestNG 框架簡(jiǎn)介 324
12.2.2 Spring Boot 單元測(cè)試配置 325
12.2.3 方法單元測(cè)試案例實(shí)現(xiàn) 329
12.2.4 服務(wù)器集成測(cè)試實(shí)現(xiàn) 336
12.2.5 使用TestNG 配置文件區(qū)分不同的測(cè)試環(huán)境 340
12.3 本章總結(jié)342
第 13章 服務(wù)器開(kāi)發(fā)實(shí)例——世界聊天系統(tǒng) 343
13.1 單服世界聊天系統(tǒng)實(shí)現(xiàn) 343
13.1.1 添加客戶端命令 344
13.1.2 服務(wù)器實(shí)現(xiàn)消息轉(zhuǎn)發(fā) 348
13.1.3 單服世界聊天測(cè)試 349
13.2 分布式世界聊天系統(tǒng)實(shí)現(xiàn) 352
13.2.1 分布式世界聊天系統(tǒng)設(shè)計(jì) 352
13.2.2 創(chuàng)建單獨(dú)的聊天項(xiàng)目 354
13.2.3 實(shí)現(xiàn)聊天消息的發(fā)布與轉(zhuǎn)發(fā) 356
13.2.4 分布式世界聊天服務(wù)測(cè)試 359
13.3 本章總結(jié)360