Python微服務開發

Python微服務開發

《Python微服務開發》是2019年4月清華大學出版社出版的圖書,作者是[法]塔里克·齊亞德(Tarek Ziadé),譯者是和堅、張淵。

基本介紹

  • 中文名:Python微服務開發
  • 作者:[法]塔里克·齊亞德(Tarek Ziadé)
  • 譯者:和堅、張淵
  • 出版社:清華大學出版社
  • 出版時間:2019年4月1日
  • 定價:59 元 
  • 開本:16 開
  • 裝幀:平裝
  • ISBN:9787302524120
編輯推薦,內容簡介,圖書目錄,

編輯推薦

使用Python工具生態系統降低微服務複雜性的實用方法
Web套用經常部署到雲伺服器,套用代碼需要與諸多第三方服務互動。從理論上講,可使用微服務架構來高效地構建此類套用,但在實際中,考慮到各部分間的互動難度,構建微服務架構並非易事。
《Python微服務開發》將指導你採用*的、成熟的構建方式,避開常見陷阱,克服問題,*終開發出多個較小的標準單元,將其組合成Web套用。本書緊貼實用,將指導你理解和運用TDD原則,使用Python 3及其卓越的工具生態系統來構建一切。
通過學習本書,你將遵循*策略,使用Flask和Tox等工具來構建服務,實現服務之間的安全連線,在nginx中編寫Lua腳本來構建Web套用防火牆功能(如速率限制),熟悉Docker在微服務中扮演的角色,並用Docker容器和AWS來部署服務。
*終,你將開發出一個基於微服務的完整Python套用,並精通掌握構建、設計、測試和部署Python微服務的基本原理。
● 探討微服務的含義和設計方式
● 合理使用Python 3、Flask和Tox等工具來構建服務
● 使用TDD方法
● 探討編寫微服務文檔的方式
● 配置和打包代碼的*方式
● 與其他服務互動的方式以及相關挑戰
● 服務的安全性,以及服務的監控和擴展
● 用Docker容器和AWS部署服務

內容簡介

全書共12章,內容包括:理解微服務、使用flask、測試驅動開發與文檔化、設計Forrest、與其他服務互動、保護服務安全、使用微服務、打包Forrest、將服務Docker化、在AWS上部署、超前思維等。
作者簡介
Tarek Ziade?是一位Python 開發人員,在Mozilla的服務團隊工作,已使用法語和英語撰寫多本Python書籍。Tarek創建了一個名為Afpy的法國Python用戶組,現居住在法國第戎市郊區。在工作之餘,Tarek不忘陪伴家人。他另有兩個愛好:跑步和吹小號。

圖書目錄

第 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

相關詞條

熱門詞條

聯絡我們