推薦序 .. 3
前言 5
緻謝 7
目錄 8
第1 章 App 後颱入門 .. 16
1.1 App 後颱的功能 16
1.2 App 後颱架構 . 17
1.3 App 和App 後颱的通信 .. 19
1.4 App 後颱和Web 後端的區彆 .. 22
1.5 選擇服務器 . 23
1.6 選擇編程語言 24
1.7 快速入門新技術 .. 25
1.7.1 思維模式 25
1.7.2 4 種快速入門新技術的方法 .. 25
1.8 App 是怎樣煉成的 .. 26
1.8.1 項目啓動階段 . 26
1.8.2 研發階段 28
1.8.3 測試階段 29
1.8.4 正式推齣階段 . 29
1.9 最適閤App 的開發模式——敏捷開發 .. 30
1.9.1 Sprint 計劃會議 . 31
1.9.2 日常開發 32
1.9.3 每日例會 33
1.9.4 測試和修復Bug 33
1.9.5 評審會議 34
1.9.6 迴顧會議 34
1.9.7 及時反饋 34
1.9.8 總結.. 34
第2 章 App 後颱基礎技術 . 35
2.1 從App 業務邏輯中提煉API 接口 . 35
2.1.1 業務邏輯思維導圖 .. 36
2.1.2 功能—業務邏輯思維導圖 .. 37
2.1.3 基本功能模塊關係 .. 40
2.1.4 功能模塊接口UML(設計齣API) 41
2.1.5 編寫在綫API 測試文檔 42
2.1.6 設計稿標注API 45
2.2 設計API 的要點 .. 46
2.3 如何選擇閤適的數據庫産品 . 50
2.3.1 Redis,MongoDB,MySQL 讀寫數據的區彆 50
2.3.2 Redis,MongoDB,MySQL 查找數據的區彆 50
2.3.3 Redis,MongoDB,MySQL 適用場景 51
2.4 如何選擇消息隊列軟件 .. 52
2.4.1 為什麼要用消息隊列? 52
2.4.2 消息隊列的工作流程 . 53
2.4.3 常見的一些消息隊列産品 .. 54
2.5 使用分布式服務實現業務的復用 .. 54
2.5.1 巨無霸係統的危害 .. 55
2.5.2 遠程服務的優點 56
2.5.3 遠程服務的實現 56
2.6 搜索技術入門 59
2.6.1 一個簡單的搜索例子 . 59
2.6.2 搜索技術的基本原理 . 60
2.6.3 常見的開源搜索軟件介紹 .. 62
2.7 定時任務 .. 65
2.7.1 Linux 定時任務Crontab 65
2.7.2 在後颱輕鬆管理各種各樣的定時任務 66
第3 章 App 後颱核心技術 . 68
3.1 用戶驗證方案 68
3.1.1 使用HTTPS 協議 . 68
3.1.2 基本的用戶登錄方案 . 69
3.2 App 通信安全 . 72
3.2.1 URL 簽名 .. 72
3.2.2 AES 對稱加密 74
3.2.3 更進一步的通信安全 . 77
3.3 短信服務 .. 78
3.3.1 App 後颱發送短信簡介 78
3.3.2 選擇短信平颱 . 78
3.3.3 建立可靠的短信服務 . 79
3.4 處理錶情的一些技巧 80
3.4.1 錶情在MySQL 的存儲 . 80
3.4.2 當文字中夾帶錶情的處理 .. 80
3.4.3 Openfire 中發送錶情引起連接斷開的問題 .. 81
3.5 高效更新數據 82
3.5.1 內容的推拉 .. 83
3.5.2 數據增量更新策略 .. 84
3.6 圖片處理 .. 90
3.7 視頻處理 .. 91
3.7.1 FFmpeg 簡介 .. 91
3.7.2 後颱調用FFmpeg 的功能 92
3.8 獲取APK 和IPA 文件裏的資源 . 94
3.8.1 Android 的APK 文件 . 94
3.8.2 iOS 的IPA 文件 96
3.9 文件係統 .. 98
3.9.1 文件雲存儲服務 99
3.9.2 架設文件係統 . 99
3.10 ELK 日誌分析平颱 101
3.10.1 基本模塊 .. 101
3.10.2 日誌分析流程 102
3.11 Docker 構建一緻的開發環境 .. 103
3.11.1 Docker 原理 103
3.11.2 搭建一緻的開發環境 104
第4 章 Linux——App 後颱應用最廣泛的係統 .. 107
4.1 基本的係統優化 107
4.1.1 開機自啓動服務優化 .. 107
4.1.2 增大文件描述符 . 109
4.2 常用的命令 .. 110
4.2.1 全麵瞭解係統資源情況——top 110
4.2.2 顯示進程狀態——ps .. 115
4.2.3 查看網絡相關信息——netstat .. 116
4.2.4 查看某個進程打開的所有文件——lsof .. 118
4.2.5 跟蹤數據到達主機所經路由——traceroute .. 119
4.2.6 文件下載/上傳工具——“ssh secure shell client”和“lrzsz” . 119
4.2.7 查看程序的依賴庫——LD_DEBUG . 121
4.2.8 進程管理利器——superivisor 122
4.3 故障案例分析 . 125
第5 章 Nginx——App 後颱HTTP 服務的利器 . 126
5.1 簡介 . 126
5.2 基本原理 127
5.2.1 工作模型 . 127
5.2.2 進程解析 . 128
5.3 常用配置 129
5.3.1 Nginx 的全局配置 . 130
5.3.2 event 配置 .. 130
5.3.3 http 配置 .. 131
5.3.4 負載均衡配置 .. 133
5.3.5 server 虛擬主機配置 134
5.3.6 location 配置 . 134
5.3.7 HTTPS 的配置 . 135
5.3.8 下載App 的配置 136
5.3.9 生産環境中修改配置的良好習慣 136
5.4 性能統計 136
5.5 實現負載均衡的方案 . 137
5.6 用Nginx 處理業務邏輯 . 139
第6 章 MySQL——App 後颱最常用的數據庫 .. 140
6.1 基本架構 140
6.2 選擇版本 141
6.3 配置文件詳解 . 142
6.4 軟件優化 144
6.4.1 正確使用MyISAM和InnoDB 存儲引擎 144
6.4.2 正確使用索引 .. 145
6.4.3 避免使用select * 146
6.4.4 字段盡可能地設置為NOT NULL .. 146
6.5 硬件優化 147
6.5.1 增加物理內存 .. 147
6.5.2 增加應用緩存 .. 147
6.5.3 用固態硬盤代替機械硬盤 148
6.5.4 SSD 硬盤+SATA 硬盤混閤存儲方案 149
6.6 架構優化 149
6.6.1 分錶 150
6.6.2 讀寫分離 . 151
6.6.3 分庫 153
6.7 SQL 慢查詢分析 156
6.8 雲數據庫簡介 . 157
6.9 靈活的存儲結構 158
6.10 故障排除案例 .. 159
第7 章 Redis——App 後颱高性能的緩存係統 . 160
7.1 Redis 簡介 . 160
7.2 Redis 的常用數據結構及應用場景 . 161
7.2.1 string——存儲簡單的數據 .. 162
7.2.2 hash——存儲對象的數據 163
7.2.3 list——模擬隊列操作 . 165
7.2.4 set——無序且不重復的元素集閤 .. 167
7.2.5 sorted set——有序且不重復的元素集閤 . 168
7.3 內存優化 170
7.3.1 監控內存使用的狀況 .. 170
7.3.2 優化存儲結構 .. 170
7.3.3 限製使用的最大內存 .. 172
7.3.4 設置過期時間 .. 172
7.4 集群 . 174
7.4.1 客戶端分片 174
7.4.2 Twemproxy 175
7.4.3 Codis . 176
7.4.4 Redis 3.0 集群 .. 179
7.4.5 雲服務器上的集群服務 . 180
7.5 持久化 . 180
7.5.1 RDB .. 181
7.5.2 AOF 182
7.6 故障排除案例 . 184
第8 章 MongoDB——App 後颱新興的數據庫 .. 185
8.1 簡介 . 185
8.2 核心機製解析 . 186
8.2.1 MMAP(內存文件映射) 186
8.2.2 Journal 日誌 .. 187
8.3 入門 . 187
8.3.1 基本操作 . 188
8.3.2 數組操作 . 190
8.3.3 實例演示MySQL 和MongoDB 設計數據庫的區彆 191
8.4 高可用集群 .. 195
8.4.1 主從 195
8.4.2 副本集 .. 196
8.4.3 分片 198
8.5 LBS——地理位置查詢 . 200
8.6 MongoDB 3.0 版本的改進 205
8.6.1 靈活的存儲架構 . 206
8.6.2 性能提升7~10 倍 .. 206
8.6.3 存儲空間最多減少80% 207
8.6.4 運維成本最多降低95% 207
第9 章 App 後颱架構剖析 .. 208
9.1 聊天App 後颱架構 .. 208
9.1.1 移動互聯網的網絡特性 . 209
9.1.2 協議 212
9.1.3 整體架構 . 218
9.2 社交App 後颱架構 .. 221
9.2.1 基本錶結構 222
9.2.2 推拉模式 . 223
9.2.3 數據庫架構的演進 225
9.2.4 緩存架構的演進 . 229
9.3 LBS App 後颱架構 . 234
9.3.1 地理坐標詳解 .. 235
9.3.2 查找附近的人 .. 236
9.3.3 基於MongoDB 的LBS 後颱架構演進 . 240
9.4 推送服務器後颱架構 . 242
9.4.1 Android 推送 242
9.4.2 iOS 推送 .. 248
9.5 獲得更多App 後颱架構資料 . 252
第10 章 App 後颱架構的演進 255
10.1 架構的核心要素 . 255
10.1.1 高性能 256
10.1.2 高可用 258
10.1.3 可伸縮 261
10.1.4 可擴展 262
10.1.5 安全性 262
10.2 架構選型的要點 . 262
10.2.1 用成熟穩定的開源軟件 .. 263
10.2.2 盡可能使用雲服務 . 264
10.3 架構的演進 268
10.3.1 單機部署 .. 269
10.3.2 分布式部署 . 275
10.3.3 服務化 277
10.4 架構的特點 279
10.4.1 每個App 的後颱架構不會完全一樣 .. 279
10.4.2 架構的演進是由業務驅動的 279
10.4.3 架構不是為瞭炫耀技術 .. 280
· · · · · · (
收起)