目 錄?Contents
前 言
第一部分 網絡和服務器
第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 高并發(fā)服務器的存儲方案 121
5.1.1 網站高并發(fā)服務器的策略 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 大規(guī)模計算 135
5.4.1 圖片服務器的架構 136
5.4.2 讀取和寫入文本 137
5.4.3 文本搜索方案 138
5.5 區(qū)塊鏈技術 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 無狀態(tài)和有狀態(tài)的服務器設計方案 165
7.1.1 無狀態(tài)的服務器設計方案 166
7.1.2 有狀態(tài)的服務器設計方案 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 登錄和選擇游戲區(qū) 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 聊天內容的獲取和分發(fā) 196
8.4 大廳與游戲的對接 198
8.4.1 創(chuàng)建房間 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協議的區(qū)別 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 經濟系