1. 程式人生 > 其它 >從.net開發做到雲原生運維(六)——分散式應用執行時Dapr

從.net開發做到雲原生運維(六)——分散式應用執行時Dapr

1. 前言

上一篇文章我們講了K8s的一些概念,K8s真的是帶來了很多新玩法,就像我們今天這篇文章的主角Dapr一樣,Dapr也能在K8s裡以雲原生的方式執行。當然它也可以和容器一起執行,或者是CLI執行,我們這篇文章只討論容器和K8s執行方式。

2. Dapr介紹

Dapr 是一個可移植的、事件驅動的執行時,它使任何開發人員能夠輕鬆構建出彈性的、無狀態和有狀態的應用程式,並可執行在雲平臺或邊緣計算中,它同時也支援多種程式語言和開發框架。

Dapr概覽

通過概覽圖我們能看到,Dapr在服務和基礎設定K8s之間又做了一部分的抽象。而我們的服務開發就在這個抽象之上進行。

在Asp.net core進行服務呼叫的時候我們如果採用GRPC,就要有一個服務端,客戶端還要注入客戶端配置,比如配置服務端的ip地址什麼的,但是如果採用Dapr的話,只要服務端引入Dapr的SDK做簡單的服務封裝,那麼客戶端就可以只通過服務端的應用名稱就能做到資料的互動。

服務呼叫官方文件

3. Dapr K8s邊車注入原理

K8s中的Dapr採用Sidecar(邊車掛載的形式),當一個工作負載部署到K8s中,通過部署檔案裡的註解就會進行校驗,如果符合條件就會動態修改部署檔案,然後加入一個Dapr的容器和服務一起執行。

這些操作需要大家瞭解K8s的一個名詞叫動態准入控制,讀完這個介紹大家就應該明白我剛才說的是什麼意思了。

如果大家在叢集安裝了Dapr,通過以下指令獲取對應的資源

kubectl get MutatingWebhookConfiguration

編輯指令編輯檢視

kubectl edit MutatingWebhookConfiguration dapr-sidecar-injector

4. Dapr具體的應用示例

.net core的微服務開發這篇文章裡的一個例子也有dapr的內容,但是隻是一個demo,我們可以參考下微軟社群的一個dapr實踐的例子。

eShop on Dapr

這是一個社群維護的商城簡單的dapr使用的架構圖

整體算是很完善的demo了,適合asp.net core參考dapr的開發使用。

推薦文件