Dapr 與 .NET 微服務實戰 Practical Microservices with Dapr and .NET: A developer's guide to build cloud native applications using the Dapr event-driven runtime

[意] 達維德·貝丁(Davide Bedin)

  • Dapr 與 .NET 微服務實戰-preview-1
  • Dapr 與 .NET 微服務實戰-preview-2
Dapr 與 .NET 微服務實戰-preview-1

買這商品的人也買了...

商品描述

本書通過開發微服務示例程序來講解Dapr的各項功能,並介紹其眾多構建塊的功能及使用方法。本書首先介紹了Dapr的基礎知識以及相關環境的配置工作,以幫助讀者快速進入Dapr的世界。其次,介紹了Dapr的核心概念、發布/訂閱機制、資源綁定構建塊與虛擬actor模型等相關知識,讓讀者進一步瞭解Dapr的相關功能。最後,介紹了Dapr的實際運用,包括Dapr應用的部署與可觀測性,以及在Kubernetes環境中對服務和actor等進行伸縮操作。本書可以幫助讀者快速熟悉微服務架構,並運用Dapr來管理應用的復雜性和剋服異構系統等問題。

本書適合希望探索微服務架構並在Dapr應用中通過Microsoft .NET Core來實現這些架構的開發人員閱讀。

作者簡介

Davide Bedin是云原生架构专家,他在云计算领域拥有丰富的经验。作为独立软件开发商的首席技术官,Davide带领企业进行数字化转型,探索出基于Microsoft Azure云服务的新解决方案。Davide尤其关注分布式计算向面向服务的架构及微服务架构的发展和演进过程。他大部分的开发生涯都投入网络服务相关的研发工作中。

目錄大綱

第 一部分 Dapr基礎

第 1章 Dapr簡介 3

1.1 技術要求 3

1.2 Dapr概述 4

1.3 Dapr架構 7

1.4 設置Dapr啟動環境 9

1.4.1 Docker 9

1.4.2 Dapr CLI 10

1.4.3 .NET 10

1.4.4 VS Code 11

1.4.5 Windows終端 11

1.4.6 在自托管模式下安裝Dapr 11

1.4.7 在Kubernetes上安裝Dapr 12

1.4.8 升級Dapr版本 13

1.5 開發第 一個Dapr示例程序 14

1.6 小結 19

第 2章 調試Dapr解決方案 21

2.1 技術要求 21

2.2 在VS Code中配置和調試Dapr 22

2.2.1 連接調試器 22

2.2.2 檢驗調試配置 24

2.3 調試一個多項目的Dapr解決方案 29

2.3.1 創建.NET解決方案 29

2.3.2 啟動配置 30

2.3.3 任務 32

2.3.4 啟動獨立的調試會話 33

2.3.5 啟動組合的調試會話 34

2.4 結合Tye使用Dapr 35

2.4.1 安裝Tye 36

2.4.2 使用Tye 36

2.5 小結 40

第二部分 使用Dapr構建微服務

第3章 服務間調用 43

3.1 技術要求 43

3.2 服務如何在Dapr中工作 44

3.2.1 示例程序架構 45

3.2.2 服務間調用 45

3.2.3 名稱解析 47

3.3 使用.NET SDK進行服務調用 47

3.3.1 為order service創建一個項目 48

3.3.2 在ASP.NET中配置Dapr 48

3.3.3 通過ASP.NET控制器實現Dapr 49

3.3.4 為reservation service創建一個項目 50

3.3.5 準備調試配置 51

3.3.6 通過ASP.NET路由實現Dapr 51

3.3.7 回顧 56

3.4 Dapr服務的HTTP和gRPC調用 56

3.4.1 在ASP.NET中使用gRPC 56

3.4.2 微服務的自治 57

3.4.3 通過gRPC降低延遲 65

3.5 小結 66

第4章 狀態管理 67

4.1 技術要求 67

4.2 Dapr狀態管理 68

4.2.1 服務的狀態——無狀態和有狀態 68

4.2.2 Dapr中的狀態存儲 69

4.2.3 事務 70

4.2.4 並發性 70

4.2.5 一致性 71

4.2.6 與狀態存儲的交互 71

4.3 電子商務網站的有狀態服務 73

4.3.1 有狀態的reservation-service 74

4.3.2 在ASP.NET控制器中處理Dapr狀態 75

4.4 基於Azure Cosmos DB的狀態存儲 78

4.4.1 創建Azure Cosmos DB 79

4.4.2 配置狀態存儲 80

4.4.3 測試狀態存儲 82

4.4.4 Azure Cosmos DB分片 84

4.4.5 補充 86

4.5 小結 87

第5章 發布/訂閱 89

5.1 技術要求 89

5.2 在Dapr中使用pub/sub設計模式 90

5.3 在Dapr中使用Azure Service Bus 92

5.3.1 訂閱主題 94

5.3.2 配置發布/訂閱組件 96

5.3.3 發布到主題 98

5.3.4 檢查消息 99

5.4 實現saga設計模式 101

5.4.1 向Dapr發布消息 103

5.4.2 訂閱Dapr主題 104

5.4.3 測試saga設計模式 105

5.5 小結 107

第6章 資源綁定 109

6.1 技術要求 109

6.2 學習如何使用Dapr綁定 110

6.2.1 配置cron輸入綁定 111

6.2.2 測試cron綁定 112

6.3 在Dapr中使用Twilio輸出綁定 113

6.3.1 註冊Twilio試用賬戶 114

6.3.2 配置Twilio輸出綁定 115

6.3.3 通過輸出綁定發送信號 115

6.3.4 驗證通知 117

6.4 在C#中通過Azure Event Hubs輸入綁定攝取數據 119

6.4.1 創建Azure Event Hubs綁定 120

6.4.2 配置輸入綁定 121

6.4.3 實現Azure Event Hubs輸入綁定 122

6.4.4 產生事件 124

6.5 小結 125

第7章 actor的用法 127

7.1 技術要求 127

7.2 在Dapr中使用actor 128

7.2.1 actor模型簡介 128

7.2.2 配置Dapr actor狀態存儲 132

7.2.3 驗證狀態存儲 133

7.3 actor的生命周期、並發性和一致性 134

7.3.1 placement服務 134

7.3.2 並發性和一致性 135

7.3.3 actor的生命周期 137

7.4 在電子商務網站預訂系統中使用actor 138

7.4.1 創建actor項目 139

7.4.2 實現actor模型 140

7.4.3 在其他Dapr應用中訪問actor 143

7.4.4 查看actor的狀態 146

7.5 小結 147

第三部分 部署和伸縮

第8章 在Kubernetes中部署Dapr應用 151

8.1 技術要求 151

8.2 創建Kubernetes 152

8.2.1 創建Azure資源組 153

8.2.2 創建AKS集群 153

8.2.3 連接AKS集群 154

8.3 在Kubernetes中安裝Dapr 155

8.4 部署Dapr應用 158

8.4.1 構建容器鏡像 159

8.4.2 推送容器鏡像 162

8.4.3 在Kubernetes中管理密碼 164

8.4.4 Dapr應用部署 166

8.5 將Dapr應用暴露給外部客戶端 170

8.6 小結 177

第9章 追蹤Dapr應用 179

9.1 技術要求 179

9.2 觀測Dapr中的應用 180

9.3 使用Zipkin進行追蹤 182

9.3.1 設置Zipkin 182

9.3.2 配置Zipkin進行追蹤 184

9.3.3 在Dapr中啟用追蹤 185

9.3.4 使用Zipkin追蹤 187

9.4 使用Prometheus和Grafana分析指標 191

9.4.1 安裝Prometheus 192

9.4.2 安裝Grafana 193

9.4.3 導入Dashboard模板 193

9.5 小結 196

第 10章 負載測試和伸縮 197

10.1 技術要求 197

10.1.1 Bash 198

10.1.2 Python 198

10.1.3 Locust 199

10.1.4 Kubernetes配置 199

10.2 在Kubernetes中伸縮Dapr應用 200

10.2.1 副本 201

10.2.2 自動伸縮 202

10.2.3 資源請求和資源限制 204

10.3 使用Locust進行負載測試 207

10.4 Dapr應用的負載測試 209

10.4.1 通過埠轉發準備數據 209

10.4.2 在本地測試Locust 210

10.4.3 在ACI中運行Locust 213

10.4.4 配置HPA 215

10.5 使用KEDA進行自動伸縮 217

10.6 小結 217

附錄A 使用Dapr的微服務架構 219

A.1 發現微服務 219

A.1.1 服務 220

A.1.2 自治 221

A.1.3 自動化部署 221

A.1.4 有界上下文 222

A.1.5 松耦合 222

A.1.6 事件驅動架構 223

A.1.7 可觀察性 223

A.1.8 可持續性 223

A.2 採用微服務模式 224

A.3 構建一個電子商務網站架構 226

A.3.1 定義有界上下文 226

A.3.2 示例:銷售微服務 227

A.4 使用Dapr構建微服務 228

A.4.1 松耦合的微服務 228

A.4.2 自治的微服務 229

A.4.3 可觀察的微服務 229

A.4.4 可擴展的微服務 229

A.4.5 事件驅動的微服務 229

A.4.6 無狀態的微服務 230

A.5 小結 230