第 1 章 理解微服務 1
1.1 SOA的起源 2
1.2 單體架構 2
1.3 微服務架構 5
1.4 微服務的益處 7
1.4.1 分離團隊的關注點 7
1.4.2 更小的項目 8
1.4.3 擴展和部署 8
1.5 微服務的缺陷 9
1.5.1 不閤理的拆分 9
1.5.2 更多的網絡交互 9
1.5.3 數據的存儲和分享 10
1.5.4 兼容性問題 10
1.5.5 測試 10
1.6 使用Python實現微服務 11
1.6.1 WSGI標準 12
1.6.2 greenlet和gevent模塊 13
1.6.3 Twisted和Tornado模塊 15
1.6.4 asyncio模塊 16
1.6.5 語言性能 18
1.7 本章小結 20
第 2 章 Flask框架 21
2.1 選擇Python版本 22
2.2 Flask如何處理請求 23
2.2.1 路由匹配 26
2.2.2 請求 30
2.2.3 響應 32
2.3 Flask的內置特性 33
2.3.1 Session對象 34
2.3.2 全局值 34
2.3.3 信號 35
2.3.4 擴展和中間件 37
2.3.5 模闆 38
2.3.6 配置 40
2.3.7 Blueprint 42
2.3.8 錯誤處理和調試 43
2.4 微服務應用的骨架 47
2.5 本章小結 49
第 3 章 良性循環:編碼、測試和寫文檔 51
3.1 各種測試類型的差異 52
3.1.1 單元測試 53
3.1.2 功能測試 56
3.1.3 集成測試 58
3.1.4 負載測試 59
3.1.5 端到端測試 61
3.2 使用WebTest 62
3.3 使用pytest和Tox 64
3.4 開發者文檔 67
3.5 持續集成 71
3.5.1 Travis-CI 72
3.5.2 ReadTheDocs 73
3.5.3 Coveralls 73
3.6 本章小結 75
第 4 章 設計Runnerly 77
4.1 Runnerly應用 77
4.2 單體設計 79
4.2.1 模型 80
4.2.2 視圖與模闆 80
4.2.3 後颱任務 84
4.2.4 身份驗證和授權 88
4.2.5 單體設計匯總 92
4.3 拆分單體 93
4.4 數據服務 94
4.5 使用Open API 2.0 95
4.6 進一步拆分 97
4.7 本章小結 98
第 5 章 與其他服務交互 101
5.1 同步調用 102
5.1.1 在Flask應用中使用Session 103
5.1.2 連接池 107
5.1.3 HTTP緩存頭 108
5.1.4 改進數據傳輸 111
5.1.5 同步總結 115
5.2 異步調用 116
5.2.1 任務隊列 116
5.2.2 主題隊列 117
5.2.3 發布/訂閱模式 122
5.2.4 AMQP上的RPC 122
5.2.5 異步總結 122
5.3 測試服務間交互 123
5.3.1 模擬同步調用 123
5.3.2 模擬異步調用 124
5.4 本章小結 127
第 6 章 監控服務 129
6.1 集中化日誌 129
6.1.1 設置Graylog 131
6.1.2 嚮Graylog發送日誌 134
6.1.3 添加擴展字段 136
6.2 性能指標 137
6.2.1 係統指標 138
6.2.2 代碼指標 140
6.2.3 Web服務器指標 142
6.3 本章小結 143
第 7 章 保護服務 145
7.1 OAuth2協議 146
7.2 基於令牌的身份驗證 147
7.2.1 JWT標準 148
7.2.2 PyJWT 150
7.2.3 基於證書的X.509身份驗證 151
7.2.4 TokenDealer微服務 154
7.2.5 使用TokenDealer 157
7.3 Web應用防火牆 160
7.4 保護代碼 166
7.4.1 斷言傳入的數據 166
7.4.2 限製應用的範圍 170
7.4.3 使用Bandit linter 171
7.5 本章小結 174
第 8 章 綜閤運用 175
8.1 構建ReactJS儀錶盤 176
8.1.1 JSX語法 176
8.1.2 React組件 177
8.2 ReactJS與Flask 181
8.2.1 使用 bower、npm和babel 182
8.2.2 跨域資源共享 185
8.3 身份驗證與授權 188
8.3.1 與數據服務交互 188
8.3.2 獲取Strava令牌 189
8.3.3 JavaScript身份驗證 191
8.4 本章小結 192
第 9 章 打包和運行Runnerly 195
9.1 打包工具鏈 196
9.1.1 一些定義 196
9.1.2 打包 197
9.1.3 版本控製 204
9.1.4 發布 206
9.1.5 分發 208
9.2 運行所有微服務 210
9.3 進程管理 213
9.4 本章小結 216
第 10 章 容器化服務 217
10.1 何為Docker? 218
10.2 Docker簡介 219
10.3 在Docker中運行Flask 221
10.4 完整的棧——OpenResty、Circus和Flask 223
10.4.1 OpenResty 224
10.4.2 Circus 226
10.5 基於Docker的部署 228
10.5.1 Docker Compose 230
10.5.2 集群和初始化簡介 231
10.6 本章小結 233
第 11 章 在AWS上部署 235
11.1 AWS總覽 236
11.2 路由:Route53、ELB和AutoScaling 237
11.3 執行:EC2和Lambda 237
11.4 存儲:EBS、S3、RDS、ElasticCache和CloudFront 238
11.4.1 消息:SES、SQS和SNS 240
11.4.2 初始化資源和部署:CloudFormation和ECS 241
11.5 在AWS上部署簡介 242
11.5.1 創建AWS賬號 242
11.5.2 使用CoreOS在EC2上部署 244
11.6 使用ECS 部署 247
11.7 Route53 251
11.8 本章小結 253
第 12 章 接下來做什麼? 255
12.1 迭代器和生成器 256
12.2 協同程序 259
12.3 asyncio庫 260
12.4 aiohttp框架 262
12.5 Sanic 262
12.6 異步和同步 264
12.7 本章小結 265
· · · · · · (
收起)