内容简介
《微服務設計》是一本介紹微服務架構的書籍,作者Sam Newman詳細探討了微服務的設計原則和實踐方法。
本書涵蓋了微服務的基礎知識、如何設計和實現微服務、以及如何在實際項目中應用微服務架構。
通過本書,讀者可以了解到微服務的優勢和挑戰,並學會如何有效地設計和管理微服務系統。
目录
版權聲明
O’Reilly Media, Inc. 介紹
業界評論
誰該讀這本書
為什麼寫這本書
當今的微服務
本書結構
排版約定
SafariR Books Online
聯繫我們
致謝
第 1 章 微服務
1.1 什麼是微服務
1.1.1 很小,專注於做好一件事
1.1.2 自治性
1.2 主要好處
1.2.1 技術異構性
1.2.2 彈性
1.2.3 擴展
1.2.4 簡化部署
1.2.5 與組織結構相匹配
1.2.6 可組合性
1.2.7 對可替代性的優化
1.3 面向服務的架構
1.4 其他分解技術
1.4.1 共享庫
1.4.2 模塊
1.5 沒有銀彈
1.6 小結
第 2 章 演化式架構師
2.1 不準確的比較
2.2 架構師的演化視角
2.3 分區
2.4 一個原則性的方法
2.4.1 戰略目標
2.4.2 原則
2.4.3 實踐
2.4.4 將原則和實踐相結合
2.4.5 真實世界的例子
2.5 要求的標準
2.5.1 監控
2.5.2 接口
2.5.3 架構安全性
2.6 代碼治理
2.6.1 範例
2.6.2 裁剪服務代碼模板
2.7 技術債務
2.8 例外管理
2.9 集中治理和領導
2.10 建設團隊
2.11 小結
第 3 章 如何建模服務
3.1 MusicCorp簡介
3.2 什麼樣的服務是好服務
3.2.1 松耦合
3.2.2 高內聚
3.3 限界上下文
3.3.1 共享的隱藏模型
3.3.2 模塊和服務
3.3.3 過早劃分
3.4 業務功能
3.5 逐步劃分上下文
3.6 關於業務概念的溝通
3.7 技術邊界
3.8 小結
第 4 章 集成
4.1 尋找理想的集成技術
4.1.1 避免破壞性修改
4.1.2 保證API的技術無關性
4.1.3 使你的服務易於消費方使用
4.1.4 隱藏內部實現細節
4.2 為用戶創建接口
4.3 共享數據庫
4.4 同步與異步
4.5 編排與協同
4.6 遠程過程調用
4.6.1 技術的耦合
4.6.2 本地調用和遠程調用並不相同
4.6.3 脆弱性
4.6.4 RPC很糟糕嗎
4.7 REST
4.7.1 REST和HTTP
4.7.2 超媒體作為程序狀態的引擎
4.7.3 JSON、XML還是其他
4.7.4 留心過多的約定
4.7.5 基於HTTP的REST的缺點
4.8 實現基於事件的異步協作方式
4.8.1 技術選擇
4.8.2 異步架構的複雜性
4.9 服務即狀態機
4.10 響應式擴展
4.11 微服務世界中的DRY和代碼重用的危險
客戶端庫
4.12 按引用訪問
4.13 版本管理
4.13.1 盡可能推遲
4.13.2 及早發現破壞性修改
4.13.3 使用語義化的版本管理
4.13.4 不同的接口共存
4.13.5 同時使用多個版本的服務
4.14 用戶界面
4.14.1 走向數字化
4.14.2 約束
4.14.3 API組合
4.14.4 UI片段的組合
4.14.5 為前端服務的後端
4.14.6 一種混合方式
4.15 與第三方軟件集成
4.15.1 缺乏控制
4.15.2 定制化
4.15.3 意大利面式的集成
4.15.4 在自己可控的平台進行定制化
4.15.5 絞殺者模式
4.16 小結
第 5 章 分解單塊系統
5.1 關鍵是接縫
5.2 分解MusicCorp
5.3 分解單塊系統的原因
5.3.1 改變的速度
5.3.2 團隊結構
5.3.3 安全
5.3.4 技術
5.4 雜亂的依賴
5.5 數據庫
5.6 找到問題的關鍵
5.7 例子:打破外鍵關係
5.8 例子:共享靜態數據
5.9 例子:共享數據
5.10 例子:共享表
5.11 重構數據庫
實施分離
5.12 事務邊界
5.12.1 再試一次
5.12.2 終止整個操作
5.12.3 分佈式事務
5.12.4 應該怎麼辦呢
5.13 報告
5.14 報告數據庫
5.15 通過服務調用來獲取數據
5.16 數據導出
另一個方向
5.17 事件數據導出
5.18 數據導出的備份
5.19 走向實時
5.20 修改的代價
5.21 理解根本原因
5.22 小結
第 6 章 部署
6.1 持續集成簡介
你真的在做CI嗎
6.2 把持續集成映射到微服務
6.3 構建流水線和持續交付
不可避免的例外
6.4 平台特定的構建物
6.5 操作系統構建物
6.6 定制化鏡像
6.6.1 將鏡像作為構建物
6.6.2 不可變服務器
6.7 環境
6.8 服務配置
6.9 服務與主機之間的映射
6.9.1 單主機多服務
6.9.2 應用程序容器
6.9.3 每個主機一個服務
6.9.4 平台即服務
6.10 自動化
關於自動化好處的兩個案例研究
6.11 從物理機到虛擬機
6.11.1 傳統的虛擬化技術
6.11.2 Vagrant
6.11.3 Linux容器
6.11.4 Docker
6.12 一個部署接口
環境定義
6.13 小結
第 7 章 測試
7.1 測試類型
7.2 測試範圍
7.2.1 單元測試
7.2.2 服務測試
7.2.3 端到端測試
7.2.4 權衡
7.2.5 比例
7.3 實現服務測試
7.3.1 mock還是打樁
7.3.2 智能的打樁服務
7.4 微妙的端到端測試
7.5 端到端測試的缺點
7.6 脆弱的測試
7.6.1 誰來寫這些測試
7.6.2 測試多長時間
7.6.3 大量的堆積
7.6.4 元版本
7.7 測試場景,而不是故事
7.8 拯救消費者驅動的測試
7.8.1 Pact
7.8.2 關於溝通
7.9 還應該使用端到端測試嗎
7.10 部署後再測試
7.10.1 區分部署和上線
7.10.2 金絲雀發佈
7.10.3 平均修復時間勝過平均故障間隔時間
7.11 跨功能的測試
性能測試
7.12 小結
第 8 章 監控
8.1 單一服務,單一服務器
8.2 單一服務,多個服務器
8.3 多個服務,多個服務器
8.4 日誌,日誌,更多的日誌
8.5 多個服務的指標跟蹤
8.6 服務指標
8.7 綜合監控
實現語義監控
8.8 關聯標識
8.9 級聯
8.10 標準化
8.11 考慮受眾
8.12 未來
8.13 小結
第 9 章 安全
9.1 身份驗證和授權
9.1.1 常見的單點登錄實現
9.1.2 單點登錄網關
9.1.3 細粒度的授權
9.2 服務間的身份驗證和授權
9.2.1 在邊界內允許一切
9.2.2 HTTP(S)基本身份驗證
9.2.3 使用SAML或OpenID Connect
9.2.4 客戶端證書
9.2.5 HTTP之上的HMAC
9.2.6 API密鑰
9.2.7 代理問題
9.3 靜態數據的安全
9.3.1 使用眾所周知的加密算法
9.3.2 一切皆與密鑰相關
9.3.3 選擇你的目標
9.3.4 按需解密
9.3.5 加密備份
9.4 深度防禦
9.4.1 防火牆
9.4.2 日誌
9.4.3 入侵檢測(和預防)系統
9.4.4 網絡隔離
9.4.5 操作系統
9.5 一個示例
9.6 保持節儉
9.7 人的因素
9.8 黃金法則
9.9 內建安全
9.10 外部驗證
9.11 小結
第 10 章 康威定律和系統設計
10.1 證據
10.1.1 松耦合組織和緊耦合組織
10.1.2 Windows Vista
10.2 Netflix和Amazon
10.3 我們可以做什麼
10.4 適應溝通途徑
10.5 服務所有權
10.6 共享服務的原因
10.6.1 難以分割
10.6.2 特性團隊
10.6.3 交付瓶頸
10.7 內部開源
10.7.1 守護者的角色
10.7.2 成熟
10.7.3 工具
10.8 限界上下文和團隊結構
10.9 孤兒服務
10.11 反向的康威定律
10.12 人
10.13 小結
第 11 章 規模化微服務
11.1 故障無處不在
11.2 多少是太多
11.3 功能降級
11.4 架構性安全措施
11.5 反脆弱的組織
11.5.1 超時
11.5.2 斷路器
11.5.3 艙壁
11.5.4 隔離
11.6 冪等
11.7 擴展
11.7.1 更強大的主機
11.7.2 拆分負載
11.7.3 分散風險
11.7.4 負載均衡
11.7.5 基於worker的系統
11.7.6 重新設計
11.8 擴展數據庫
11.8.1 服務的可用性和數據的持久性
11.8.2 擴展讀取
11.8.3 擴展寫操作
11.8.4 共享數據庫基礎設施
11.8.5 CQRS
11.9 緩存
11.9.1 客戶端、代理和服務器端緩存
11.9.2 HTTP緩存
11.9.3 為寫使用緩存
11.9.4 為彈性使用緩存
11.9.5 隱藏源服務
11.9.6 保持簡單
11.9.7 緩存中毒:一個警示
11.10 自動伸縮
11.11 CAP定理
11.11.1 犧牲一致性
11.11.2 犧牲可用性
11.11.3 犧牲分區容忍性
11.11.4 AP還是CP
11.11.5 這不是全部或全不
11.11.6 真實世界
11.12 服務發現
DNS
11.13 動態服務註冊
11.13.1 Zookeeper
11.13.2 Consul
11.13.3 Eureka
11.13.4 構造你自己的系統
11.13.5 別忘了人
11.14 文檔服務
11.14.1 Swagger
11.14.2 HAL和HAL瀏覽器
11.15 自描述系統
11.16 小結
第 12 章 總結
12.1 微服務的原則
12.1.1 圍繞業務概念建模
12.1.2 接受自動化文化
12.1.3 隱藏內部實現細節
12.1.4 讓一切都去中心化
12.1.5 可獨立部署
12.1.6 隔離失敗
12.1.7 高度可觀察
12.2 什麼時候你不應該使用微服務
12.3 臨別贈言
關於作者
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。