微服務實戰
作 者: [英]摩根·布魯斯(Morgan 著 李哲 譯
定 價: 89
出?版?社: 人民郵電出版社
出版日期: 2020年05月01日
頁 數: 318
裝 幀: 平裝
ISBN: 9787115529879
●第 一部分 概述第 1章 微服務的設計與運行 31.1 什麼是微服務應用 41.1.1 通過分解來實現擴展 61.1.2 核心原則 71.1.3 誰在使用微服務 91.1.4 為什麼微服務是一個明智的選擇 101.2 微服務的挑戰 121.2.1 設計挑戰 131.2.2 運維挑戰 151.3 微服務開發生命周期 161.3.1 微服務設計 171.3.2 微服務部署 181.3.3 服務監控 211.4 有責任感和運維意識的工程師文化 221.5 小結 23第 2章 SimpleBank公司的微服務 242.1 SimpleBank公司的業務範圍 242.2 微服務是否是正確的選擇 252.2.1 金融軟件的風險和惰性 262.2.2 減少阻力和持續交付價值 272.3 開發新功能 272.3.1 通過領域建模識別微服務 282.3.2 服務協作 302.3.3 服務編排 322.4 向外界開放服務 342.5 將功能發布到生產環境中 352.5.1 高質量的自動化部署 372.5.2 可恢復性 372.5.3 透明性 382.6 大規模微服務開發 392.6.1 技術分歧 402.6.2 孤立 402.7 接下來的內容 412.8 小結 41第二部分 設計第3章 微服務應用的架構 453.1 整體架構 453.1.1 從單體應用到微服務 463.1.2 架構師的角色 473.1.3 架構準則 473.1.4 微服務應用的4層架構 483.2 微服務平臺 493.3 服務層 513.3.1 功能 513.3.2 聚服務 523.3.3 關鍵路徑和非關鍵路徑 533.4 通信 543.4.1 何時使用同步消息 543.4.2 何時使用異步消息 553.4.3 異步通信模式 553.4.4 服務定位 573.5 服務邊界 583.5.1 API網關 603.5.2 服務於前端的後端 613.5.3 消費者驅動網關 623.6 客戶端 633.6.1 前端單體 633.6.2 微前端 643.7 小結 65第4章 新功能設計 664.1 SimpleBank的新功能 674.2 按業務能力劃分 684.2.1 能力和領域建模 694.2.2 創建投資策略 704.2.3 內嵌型上下文和服務 754.2.4 挑戰和不足 764.3 按用例劃分 774.3.1 按投資策略下單 774.3.2 動作和存儲 824.3.3 編配與編排 834.4 按易變性劃分 844.5 按技術能力劃分 854.5.1 發送通知 854.5.2 何時使用技術能力 864.6 處理不確定性 874.6.1 從粗粒度服務開始 884.6.2 準備進一步分解 884.6.3 下線和遷移 894.7 組織中的服務所有權 914.8 小結 92第5章 微服務的事務與查詢 935.1 分布式應用的事務一致性 945.2 基於事件的通信 965.3 Saga 985.3.1 編排型Saga 1005.3.2 編配型Saga 1025.3.3 交織型Saga 1045.3.4 一致性模式 1055.3.5 事件溯源 1065.4 分布式世界中的查詢操作 1075.4.1 保存數據副本 1085.4.2 查詢和命令分離 1105.4.3 CQRS挑戰 1125.4.4 分析和報表 1145.5 延伸閱讀 1145.6 小結 114第6章 設計高可靠服務 1166.1 可靠性定義 1176.2 哪些會出錯 1196.2.1 故障源 1196.2.2 連鎖故障 1226.3 設計可靠的通信方案 1256.3.1 重試 1266.3.2 後備方案 1286.3.3 超時 1306.3.4 斷路器 1326.3.5 異步通信 1346.4 優選限度地提高服務可靠性 1356.4.1 負載均衡與服務健康 1356.4.2 限流 1366.4.3 驗證可靠性和容錯性 1376.5 默認安全 1406.5.1 框架 1406.5.2 服務網格 1416.6 小結 142第7章 構建可復用的微服務框架 1437.1 微服務底座 1447.2 微服務底座的目的 1467.2.1 降低風險 1477.2.2 快速啟動 1477.3 設計服務底座 1487.3.1 服務發現 1497.3.2 可觀測性 1537.3.3 平衡和限流 1597.4 探索使用底座實現的特性 1617.5 差異性是否是微服務的承諾 1637.6 小結 164第三部分 部署第8章 微服務部署 1678.1 部署的重要性 1678.2 微服務生產環境 1698.2.1 微服務生產環境的特點 1698.2.2 自動化和速度 1708.3 部署服務的快捷方式 1718.3.1 服務啟動 1718.3.2 配置虛擬機 1728.3.3 運行多個服務實例 1738.3.4 添加負載均衡器 1758.3.5 開發者學到了什麼 1778.4 構建服務工件 1788.4.1 工件的組成 1798.4.2 不可變性 1798.4.3 服務工件的類型 1808.4.4 配置 1848.5 服務與主機關繫模型 1858.5.1 單服務主機 1858.5.2 單主機多靜態服務 1858.5.3 單主機多調度化服務 1868.6 不停機部署服務 1878.7 小結 190第9章 基於容器和調度器的部署 1919.1 服務容器化 1929.1.1 鏡像使用 1929.1.2 構建鏡像 1949.1.3 運行容器 1979.1.4 鏡像存儲 1999.2 集群部署 2009.2.1 pod的設計與運行 2019.2.2 負載均衡 2049.2.3 快速揭秘 2059.2.4 健康檢查 2089.2.5 部署新版本服務 2109.2.6 回滾 2159.2.7 連接多個服務 2159.3 小結 216第 10章 構建微服務交付流水線 21710.1 讓部署變得平淡 21710.2 使用Jenkins構建流水線 21910.2.1 構建流水線配置 22010.2.2 構建鏡像 22310.2.3 運行測試 22410.2.4 發布工件 22610.2.5 部署至預發布環境 22710.2.6 預發布環境 23010.2.7 部署生產環境 23010.3 構建可復用的流水線步驟 23310.4 降低部署影響以及實現功能發布的技術 23510.4.1 暗發布 23510.4.2 功能標記 23610.5 小結 237第四部分 可觀測性和所有權第 11章 構建監控繫統 24111.1 穩固的監控技術棧 24111.1.1 良好的分層監控 24311.1.2 黃金標志 24411.1.3 度量指標的類型 24411.1.4 實踐建議 24511.2 利用Prometheus和Grafana監控SimpleBank 24611.2.1 配置度量指標收集基礎 設施 24711.2.2 收集基礎設施度量 指標——RabbitMQ 25311.2.3 監控下單功能 25511.2.4 告警設置 25711.3 生成合理的可執行的告警 26111.3.1 繫統出錯時哪些人需要 知悉 26111.3.2 癥狀,而非原因 26211.4 監測整個應用 26211.5 小結 264第 12章 使用日志和鏈路追蹤了解繫統 行為 26512.1 了解服務間的行為 26512.2 生成一致的、結構化的、人類可讀的 日志 26812.2.1 日志中的有用信息 26812.2.2 結構化和可讀性 26912.3 為SimpleBank配置日志基礎設施 27112.3.1 基於ELK和Fluentd的解決 方案 27212.3.2 配置日志解決方案 27412.3.3 配置應收集哪些日志 27612.3.4 大海撈針 27912.3.5 記錄合適的信息 28112.4 服務間的跟蹤交互 28112.4.1 請求關聯:trace和span 28212.4.2 在服務內配置鏈路追蹤 28312.5 鏈路追蹤可視化 28712.6 小結 291第 13章 微服務團隊建設 29213.1 建設高效團隊 29213.1.1 康威定律 29413.1.2 高效團隊原則 29413.2 團隊模型 29613.2.1 按職能分組 29613.2.2 跨職能分組 29813.2.3 設置團隊邊界 29913.2.4 基礎設施、平臺和產品 30013.2.5 誰負責值班 30213.2.6 知識共享 30313.3 微服務團隊的實踐建議 30413.3.1 微服務變更的驅動力 30513.3.2 架構的角色 30513.3.3 同質性與技術靈活性 30713.3.4 開源模型 30713.3.5 設計評審 30813.3.6 動態文檔 30913.3.7 回答應用的問題 31013.4 延伸閱讀 31113.5 小結 311附錄A 在Minikube上安裝Jenkins 312
內容簡介
《微服務實戰》主要介紹如何開發和維護基於微服務的應用。本書源自作者從日常開發中得到的積累和感悟,其中給出的案例覆蓋從微服務設計到部署的各個階段,能夠帶給你真實的沉浸式體驗。通過閱讀本書,你不僅能夠了解用微服務搭建高效的持續交付流水線的方法,還能夠運用Kubernetes、Docker 以及Google Container Engine 進一步探索書中的示例。