前 言
第一部分 網絡和服務器
第1章 Python網絡編程模塊 2
1.1 Python Socket 3
1.1.1 Socket套接字 3
1.1.2 SOCK_STREAM、SOCK_DGRAM 4
1.1.3 阻塞和非阻塞模式 5
1.2 服務器端其他Socket方法 7
1.2.1 bind和listen 7
1.2.2 setsockopt 8
1.3 客戶端Socket 10
1.4 通用的Socket方法 12
1.4.1 recv和send 12
1.4.2 recvfrom和sendto 13
1.5 SimpleHTTPServer和BaseHTTPServer 14
1.5.1 SimpleHTTPServer 15
1.5.2 BaseHTTPServer 15
1.6 urllib和urllib2 17
1.6.1 urllib.urlopen和urllib2.urlopen 18
1.6.2 urllib2中的GET和POST方法 19
1.7 事件驅動框架Twisted 20
1.7.1 Reactor模式 21
1.7.2 run、stop和callLater 23
1.7.3 Transports、Protocols、Protocol Factoies以及Deferred 24
第2章 通信加密 26
2.1 軟件、通信加密的幾種常用方案 27
2.1.1 異或位運算加密 27
2.1.2 其他對稱加密 29
2.1.3 非對稱加密 30
2.2 OpenSSL 33
2.2.1 生成證書 35
2.2.2 公鑰和私鑰的配置 40
2.3 SSL/TLS通信 43
2.3.1 SSL/TLS連接 45
2.3.2 SSL/TLS HTTPS通信 46
2.4 其他加密方式 49
2.4.1 散列算法 49
2.4.2 BASE64 52
2.4.3 多國語言 53
第3章 服務器實作 55
3.1 構建Python Websocket服務器 55
3.1.1 Websocket的應用場景 57
3.1.2 實作Websocket握手協議 59
3.1.3 MAGIC_STRING在Websocket中的作用 60
3.1.4 Websocket 啓動 62
3.1.5 Websocket消息拆分和讀取 63
3.2 多綫程服務器 64
3.2.1 Python的多綫程模式 65
3.2.2 鎖 68
3.2.3 Python GIL 70
3.2.4 multiprocess的解決思路 72
3.2.5 給Websocket加上多綫程 73
3.3 綫程池 75
3.3.1 默認綫程池和進程池 75
3.3.2 協程 76
3.3.3 第三方庫 78
3.3.4 gevent的數據結構 85
第二部分 存儲與數據庫
第4章 基礎內容存儲 94
4.1 數據庫存儲的種類 95
4.2 SQL與NoSQL 96
4.2.1 SQL 96
4.2.2 SQL語句語法 97
4.2.3 NoSQL 101
4.2.4 NoSQL語句語法 106
4.3 內存與IO讀寫速度 108
4.4 同步內存數據 109
4.4.1 Redis數據庫的持久性 111
4.4.2 Redis主從數據庫復製 112
4.5 數據備份和恢復 113
4.5.1 備份的類型 114
4.5.2 使用Python編寫備份代碼 115
4.6 不可或缺的SQLite 117
第5章 存儲方案 121
5.1 高並發服務器的存儲方案 121
5.1.1 網站高並發服務器的策略 122
5.1.2 數據庫的鎖 125
5.2 高速緩存 127
5.2.1 Memcached 127
5.2.2 大文件緩存 129
5.2.3 分布式和集群 130
5.3 二進製存儲方案 132
5.3.1 磁盤IO和緩存 133
5.3.2 圖片和影音文件 134
5.4 大規模計算 135
5.4.1 圖片服務器的架構 136
5.4.2 讀取和寫入文本 137
5.4.3 文本搜索方案 138
5.5 區塊鏈技術 139
第三部分 服務器架構及其方案
第6章 遊戲服務器初探 144
6.1 服務器消息和輪詢 144
6.1.1 卡牌遊戲和弱連接 145
6.1.2 消息的輪詢 147
6.2 遊戲服務器架構演變 149
6.2.1 “上古時代”的遊戲服務器 149
6.2.2 近代的網絡遊戲服務器 153
6.2.3 近現代經典遊戲服務器模型 155
6.3 地圖的無縫連接 157
6.3.1 無縫連接的分析 158
6.3.2 無縫地圖更深層次的問題 160
第7章 遊戲服務器的交互 165
7.1 無狀態和有狀態的服務器設計方案 165
7.1.1 無狀態的服務器設計方案 166
7.1.2 有狀態的服務器設計方案 167
7.2 輪詢 169
7.3 集群方案 171
7.3.1 集群的幾種方式 171
7.3.2 集群的方案 172
7.3.3 數據庫方案 173
7.3.4 Web服務和數據庫 174
7.3.5 其他方案 176
7.4 定時任務 178
第8章 遊戲大廳 181
8.1 大廳登錄流程 181
8.1.1 登錄和選擇遊戲區 182
8.1.2 注冊和登錄 183
8.2 中間件 185
8.2.1 中間件的相關概念 186
8.2.2 ElasticSearch 191
8.2.3 在Python中使用ES 193
8.3 聊天服務 195
8.3.1 聊天服務器的搭建 195
8.3.2 聊天內容的獲取和分發 196
8.4 大廳與遊戲的對接 198
8.4.1 創建房間 198
8.4.2 與遊戲的對接 199
第9章 實時交互服務器 202
9.1 長連接和強交互 202
9.1.1 TCP連接 203
9.1.2 多綫程 205
9.1.3 異步控製 206
9.1.4 加入隊列 207
9.2 使用UDP的方案 210
9.2.1 什麼是UDP協議 210
9.2.2 TCP協議和UDP協議的區彆 212
9.2.3 使用Python編寫UDP服務 214
9.2.4 加入多綫程 216
9.3 協議包的設計和實現 218
9.3.1 協議包頭和包身 219
9.3.2 協議包完整性 221
9.3.3 協議的加密和壓縮 222
9.3.4 協議包混淆 223
9.4 斷綫重連 224
第10章 天梯和經濟係統 227
10.1 什麼是天梯 227
10.1.1 天梯的框架 229
10.1.2 數據載入 230
10.2 天梯層級 231
10.3 經濟係統 234
10.3.1 經濟係統簡介 234
10.3.2 經濟係統的設計 235
10.3.3 通貨膨脹 236
10.4 預留接口和熱更新 238
10.4.1 如何預留接口 238
10.4.2 代碼熱更新 241
第11章 服務器承載量和客戶端優化方案 243
11.1 心跳服務 243
11.1.1 應用層的心跳服務 245
11.1.2 心跳包協議 246
11.2 同步校驗 247
11.2.1 服務器數據包同步 248
11.2.2 遊戲世界的同步 248
11.3 服務器承載 251
11.3.1 Python的多綫程並發 251
11.3.2 混閤C/C++之一 253
11.3.3 混閤C/C++之二 257
11.4 守護者進程 266
11.4.1 Windows下的守護者進程 266
11.4.2 監控和重啓進程 268
11.5 客戶端優化方案 270
11.5.1 優化解決方案 270
11.5.2 遊戲引擎 271
第12章 分布式服務器 273
12.1 什麼是分布式係統 273
12.1.1 分布式文件係統 275
12.1.2 分布式服務 277
12.1.3 Python實現 278
12.2 流式處理 280
12.2.1 Storm 280
12.2.2 Spark 284
12.2.3 Samza 288
12.2.4 Flink 290
12.2.5 Trident 293
12.3 Python分布式框架 294
附錄A 不同語言之間的區彆 297
· · · · · · (
收起)