Dapr與.NET微服務(wù)實戰(zhàn)
鏈接:https://pan.baidu.com/s/1QJxq-P8M54oysYEIzrGXPg?pwd=riao?
提取碼:riao

.由淺入深,逐層遞進。本書涵蓋Dapr開發(fā)的概念、原理與實踐,幫助讀者淺顯易懂并且有代入感地了解如何使用Dapr開發(fā)微服務(wù)應(yīng)用。
.囊括熱門微服務(wù)開發(fā)框架。Dapr是微軟力主推薦的微服務(wù)開發(fā)框架,目前已經(jīng)在微軟的多款產(chǎn)品中進行應(yīng)用。
.實踐性強。目前針對Dapr方面的實踐指導(dǎo)類書籍在國內(nèi)市場仍然處于空白。國內(nèi)諸多行業(yè)缺乏對Dapr實施的認知與經(jīng)驗指導(dǎo)。
.貼合實際開發(fā),助力開發(fā)人員實戰(zhàn)。本書提供諸多Dapr在實施過程中所面臨的問題與解決方法,具備較高的參考價值。
內(nèi)容簡介
本書通過開發(fā)微服務(wù)示例程序來講解Dapr的各項功能,并介紹其眾多構(gòu)建塊的功能及使用方法。本書首先介紹了Dapr的基礎(chǔ)知識以及相關(guān)環(huán)境的配置工作,以幫助讀者快速進入Dapr的世界。其次,介紹了Dapr的核心概念、發(fā)布 訂閱機制、資源綁定構(gòu)建塊與虛擬actor模型等相關(guān)知識,讓讀者進一步了解Dapr的相關(guān)功能。最后,介紹了Dapr的實際運用,包括Dapr應(yīng)用的部署與可觀測性,以及在Kubernetes環(huán)境中對服務(wù)和actor等進行伸縮操作。本書可以幫助讀者快速熟悉微服務(wù)架構(gòu),并運用Dapr來管理應(yīng)用的復(fù)雜性和克服異構(gòu)系統(tǒng)等問題。
本書適合希望探索微服務(wù)架構(gòu)并在Dapr應(yīng)用中通過Microsoft .NET Core來實現(xiàn)這些架構(gòu)的開發(fā)人員閱讀。
作者簡介
Davide Bedin是云原生架構(gòu)專家,他在云計算領(lǐng)域擁有豐富的經(jīng)驗。作為獨立軟件開發(fā)商的首席技術(shù)官,Davide帶領(lǐng)企業(yè)進行數(shù)字化轉(zhuǎn)型,探索出基于Microsoft Azure云服務(wù)的新解決方案。Davide尤其關(guān)注分布式計算向面向服務(wù)的架構(gòu)及微服務(wù)架構(gòu)的發(fā)展和演進過程。他大部分的開發(fā)生涯都投入網(wǎng)絡(luò)服務(wù)相關(guān)的研發(fā)工作中。
精彩書評
這是開發(fā)人員基于 Dapr 構(gòu)建分布式系統(tǒng)應(yīng)備的參考書。
——馬建國,微軟高級工程師
自 2019 年首次發(fā)布以來,Dapr 受到越來越多開發(fā)者的追捧。這本書由淺入深地介紹了 Dapr 的各個方面,從基礎(chǔ)知識到核心概念,再到應(yīng)用實戰(zhàn)。這本書既有廣度,又有深度,是一本關(guān)于 Dapr 應(yīng)用開發(fā)的好書。
——韓駿,VS Code 中文社區(qū)創(chuàng)建人,《Visual Studio Code 權(quán)威指南》作者
對開發(fā)人員而言,這本書的優(yōu)勢在于實戰(zhàn)性。這本書注重實戰(zhàn)應(yīng)用,可以幫助讀者輕松入門 Dapr。在這本書的指導(dǎo)下,讀者可以快速完成云應(yīng)用的開發(fā)、部署和監(jiān)控。這是一本了解 Dapr 的好書。
——蔡邦宇,B 站算法經(jīng)理
云原生時代,如何將現(xiàn)有應(yīng)用快速、平穩(wěn)、可持續(xù)地上云,是大部分企業(yè)面臨的挑戰(zhàn)。由微軟 Azure 團隊出品的開源項目 Dapr 有效地解決了這一問題。Dapr 具有強大跨編程語言、跨平臺的特性,以及易用的管理、部署和監(jiān)控工具,使得企業(yè)以適合自己的方式優(yōu)雅地上云。這本書通過大量應(yīng)用案例和樣例程序深入淺出地指導(dǎo)讀者逐步操作——一線開發(fā)人員和運維人員學(xué)習(xí)與實踐應(yīng)用上云的有效方式。
——沈翼洲,eBay 廣告系統(tǒng)架構(gòu)師
目錄
第 一部分 Dapr基礎(chǔ)
第 1章 Dapr簡介 3
1.1 技術(shù)要求 3
1.2 Dapr概述 4
1.3 Dapr架構(gòu) 7
1.4 設(shè)置Dapr啟動環(huán)境 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 開發(fā)第 一個Dapr示例程序 14
1.6 小結(jié) 19
第 2章 調(diào)試Dapr解決方案 21
2.1 技術(shù)要求 21
2.2 在VS Code中配置和調(diào)試Dapr 22
2.2.1 連接調(diào)試器 22
2.2.2 檢驗調(diào)試配置 24
2.3 調(diào)試一個多項目的Dapr解決方案 29
2.3.1 創(chuàng)建.NET解決方案 29
2.3.2 啟動配置 30
2.3.3 任務(wù) 32
2.3.4 啟動獨立的調(diào)試會話 33
2.3.5 啟動組合的調(diào)試會話 34
2.4 結(jié)合Tye使用Dapr 35
2.4.1 安裝Tye 36
2.4.2 使用Tye 36
2.5 小結(jié) 40
第二部分 使用Dapr構(gòu)建微服務(wù)
第3章 服務(wù)間調(diào)用 43
3.1 技術(shù)要求 43
3.2 服務(wù)如何在Dapr中工作 44
3.2.1 示例程序架構(gòu) 45
3.2.2 服務(wù)間調(diào)用 45
3.2.3 名稱解析 47
3.3 使用.NET SDK進行服務(wù)調(diào)用 47
3.3.1 為order service創(chuàng)建一個項目 48
3.3.2 在ASP.NET中配置Dapr 48
3.3.3 通過ASP.NET控制器實現(xiàn)Dapr 49
3.3.4 為reservation service創(chuàng)建一個項目 50
3.3.5 準(zhǔn)備調(diào)試配置 51
3.3.6 通過ASP.NET路由實現(xiàn)Dapr 51
3.3.7 回顧 56
3.4 Dapr服務(wù)的HTTP和gRPC調(diào)用 56
3.4.1 在ASP.NET中使用gRPC 56
3.4.2 微服務(wù)的自治 57
3.4.3 通過gRPC降低延遲 65
3.5 小結(jié) 66
第4章 狀態(tài)管理 67
4.1 技術(shù)要求 67
4.2 Dapr狀態(tài)管理 68
4.2.1 服務(wù)的狀態(tài)——無狀態(tài)和有狀態(tài) 68
4.2.2 Dapr中的狀態(tài)存儲 69
4.2.3 事務(wù) 70
4.2.4 并發(fā)性 70
4.2.5 一致性 71
4.2.6 與狀態(tài)存儲的交互 71
4.3 電子商務(wù)網(wǎng)站的有狀態(tài)服務(wù) 73
4.3.1 有狀態(tài)的reservation-service 74
4.3.2 在ASP.NET控制器中處理Dapr狀態(tài) 75
4.4 基于Azure Cosmos DB的狀態(tài)存儲 78
4.4.1 創(chuàng)建Azure Cosmos DB 79
4.4.2 配置狀態(tài)存儲 80
4.4.3 測試狀態(tài)存儲 82
4.4.4 Azure Cosmos DB分片 84
4.4.5 補充 86
4.5 小結(jié) 87
第5章 發(fā)布 訂閱 89
5.1 技術(shù)要求 89
5.2 在Dapr中使用pub sub設(shè)計模式 90
5.3 在Dapr中使用Azure Service Bus 92
5.3.1 訂閱主題 94
5.3.2 配置發(fā)布 訂閱組件 96
5.3.3 發(fā)布到主題 98
5.3.4 檢查消息 99
5.4 實現(xiàn)saga設(shè)計模式 101
5.4.1 向Dapr發(fā)布消息 103
5.4.2 訂閱Dapr主題 104
5.4.3 測試saga設(shè)計模式 105
5.5 小結(jié) 107
第6章 資源綁定 109
6.1 技術(shù)要求 109
6.2 學(xué)習(xí)如何使用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 通過輸出綁定發(fā)送信號 115
6.3.4 驗證通知 117
6.4 在C#中通過Azure Event Hubs輸入綁定攝取數(shù)據(jù) 119
6.4.1 創(chuàng)建Azure Event Hubs綁定 120
6.4.2 配置輸入綁定 121
6.4.3 實現(xiàn)Azure Event Hubs輸入綁定 122
6.4.4 產(chǎn)生事件 124
6.5 小結(jié) 125
第7章 actor的用法 127
7.1 技術(shù)要求 127
7.2 在Dapr中使用actor 128
7.2.1 actor模型簡介 128
7.2.2 配置Dapr actor狀態(tài)存儲 132
7.2.3 驗證狀態(tài)存儲 133
7.3 actor的生命周期、并發(fā)性和一致性 134
7.3.1 placement服務(wù) 134
7.3.2 并發(fā)性和一致性 135
7.3.3 actor的生命周期 137
7.4 在電子商務(wù)網(wǎng)站預(yù)訂系統(tǒng)中使用actor 138
7.4.1 創(chuàng)建actor項目 139
7.4.2 實現(xiàn)actor模型 140
7.4.3 在其他Dapr應(yīng)用中訪問actor 143
7.4.4 查看actor的狀態(tài) 146
7.5 小結(jié) 147
第三部分 部署和伸縮
第8章 在Kubernetes中部署Dapr應(yīng)用 151
8.1 技術(shù)要求 151
8.2 創(chuàng)建Kubernetes 152
8.2.1 創(chuàng)建Azure資源組 153
8.2.2 創(chuàng)建AKS集群 153
8.2.3 連接AKS集群 154
8.3 在Kubernetes中安裝Dapr 155
8.4 部署Dapr應(yīng)用 158
8.4.1 構(gòu)建容器鏡像 159
8.4.2 推送容器鏡像 162
8.4.3 在Kubernetes中管理密碼 164
8.4.4 Dapr應(yīng)用部署 166
8.5 將Dapr應(yīng)用暴露給外部客戶端 170
8.6 小結(jié) 177
第9章 追蹤Dapr應(yīng)用 179
9.1 技術(shù)要求 179
9.2 觀測Dapr中的應(yīng)用 180
9.3 使用Zipkin進行追蹤 182
9.3.1 設(shè)置Zipkin 182
9.3.2 配置Zipkin進行追蹤 184
9.3.3 在Dapr中啟用追蹤 185
9.3.4 使用Zipkin追蹤 187
9.4 使用Prometheus和Grafana分析指標(biāo) 191
9.4.1 安裝Prometheus 192
9.4.2 安裝Grafana 193
9.4.3 導(dǎo)入Dashboard模板 193
9.5 小結(jié) 196
第 10章 負載測試和伸縮 197
10.1 技術(shù)要求 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應(yīng)用 200
10.2.1 副本 201
10.2.2 自動伸縮 202
10.2.3 資源請求和資源 204
10.3 使用Locust進行負載測試 207
10.4 Dapr應(yīng)用的負載測試 209
10.4.1 通過端口轉(zhuǎn)發(fā)準(zhǔn)備數(shù)據(jù) 209
10.4.2 在本地測試Locust 210
10.4.3 在ACI中運行Locust 213
10.4.4 配置HPA 215
10.5 使用KEDA進行自動伸縮 217
10.6 小結(jié) 217
附錄A 使用Dapr的微服務(wù)架構(gòu) 219
A.1 發(fā)現(xiàn)微服務(wù) 219
A.1.1 服務(wù) 220
A.1.2 自治 221
A.1.3 自動化部署 221
A.1.4 有界上下文 222
A.1.5 松耦合 222
A.1.6 事件驅(qū)動架構(gòu) 223
A.1.7 可觀察性 223
A.1.8 可持續(xù)性 223
A.2 采用微服務(wù)模式 224
A.3 構(gòu)建一個電子商務(wù)網(wǎng)站架構(gòu) 226
A.3.1 定義有界上下文 226
A.3.2 示例:銷售微服務(wù) 227
A.4 使用Dapr構(gòu)建微服務(wù) 228
A.4.1 松耦合的微服務(wù) 228
A.4.2 自治的微服務(wù) 229
A.4.3 可觀察的微服務(wù) 229
A.4.4 可擴展的微服務(wù) 229
A.4.5 事件驅(qū)動的微服務(wù) 229
A.4.6 無狀態(tài)的微服務(wù) 230
A.5 小結(jié) 230
查看全部↓