Dapr全稱
Distributed Application Runtime,分布式應用運行時
Dapr的口號
簡化云原生應用開發,聚焦在應用的核心邏輯,讓代碼簡單、可移植
Dapr的目標
- 最佳實踐的構建塊
- 任何語言或框架
- 一致性,可移植,開放的API
- 采納標準
- 可擴展和可插拔的組件
- 與平臺無關(本地,云計算,邊緣計算等)
- 社區驅動,供應商(廠商)中立

Dapr的設計思路
這里首先要先理解幾個問題,然后再看Dapr如何解決這些問題的
以下資料都有英文原圖,中文翻譯為個人理解,英文好的小伙伴可以直接看原圖,
微服務為什么很難
- 開發者要構建自己的運行時處理分布式應用問題
- 運行時支持的開發語言有限,且有嚴格控制的特性(功能)集合
- 運行時的可移植性有限,一般只支持特定的基礎架構平臺

分布式應用的需求
內容引自 Multi-Runtime Microservices Architecture https://www.infoq.com/articles/multi-runtime-microservice-architecture/
注意:二級內容不與圖片對應,把功能組合成場景
- 生命周期
- 更快的發布周期
- 自動化部署
- 從錯誤中恢復
- 自動化伸縮
- 網路
- 服務發現
- 跟蹤與遙測(可觀測性)
- 資訊交換:點對點、發布/訂閱,智能路由
- 狀態
- 服務編排、作業流
- 分布式單例(Actor)
- 臨時調度(Cron)
- 冪等性
- 有狀態錯誤恢復
- 快取
- 系結
- 轉換協議
- 支持不同的訊息交換模式:輪詢、事件驅動、請求/應答等
- 轉換訊息格式
- 執行自定義錯誤恢復程序
- 安全機制

傳統中間件和云原生對比
傳統中間件以各種SDK的方式提供能力,而云原生平臺則通過各種外圍的Runtime,目前來看比較有趣的是,大家不約而同的選擇了Sidecar,

多運行時微服務邊界
-
K8s和容器在多語言應用程式的生命周期管理方面取得了巨大的飛躍,并為未來的創新奠定了基礎
-
Service Mesh在K8s上得到了改進,具有先進的網路功能,并開始深入應用程式
-
Knative通過快速伸縮來關注無服務器的作業負載,解決了服務編排和事件驅動的系結需求
-
Dapr以K8s、Knative和Service Mesh的思想為基礎,深入研究應用程式運行時,處理有狀態的作業負載、系結和集成需求,充當現代分布式中間件
主要分為3個部分,K8s、機甲運行時(網關、Dapr + Knative)、業務邏輯,
Dapr的出現可以讓開發者更專注于業務邏輯,而業務邏輯則作為服務運行時,

多運行時的好處
業務邏輯和不斷增加的分布式系統關注點之間的松耦合,
業務邏輯經常變化,取決于業務優先級,
而分布式原語則由軟體供應商提供,作為庫、容器、服務來使用,這些代碼會根據供應商優先級、發布周期、安全補丁、開源治理規則等而變化,
他們互相看不到對方,也無法控制對方,

Dapr的優勢:Any language, anywhere
與語言無關,與平臺無關

分布式應用運行時
官方解釋
幫助開發人員構建事件驅動的、彈性的分布式應用程式, 無論是在本地、云中還是在邊緣設備上,都可以幫助你解決構建微服務所帶來的挑戰,并保持代碼與平臺無關,
可以看到Dapr更具象化了
- 與應用程式通過HTTP和gRPC通信
- 內部有一些構建塊
- 運行在云上

Dapr與服務網格
- 開發者更聚焦在代碼層面,通過SDK(圖中沒有標注)與dapr的構建塊通信,面向localhost編程
- 運維更關注安全性、可觀測性、健壯性等問題上,而流量管控的部分,dapr(可能是暫時的)沒有,

Sidecar的世界
- 應用于Sidecar通信是通過Dapr API(已經被封裝成不同開發語言的SDK),這個程序中通過OpenTelemetry支持了可觀測性(即跟蹤、日志、指標)
- 應用之間通過Sidecar通信,支持mTLS,這個指服務呼叫(即Service Invocation)
- Sidecar 之間通過gRPC(圖片中沒有顯示),Bindings,Pub/Sub都可以通信
- 可觀測性無處不在,通過Prometheus、Zipkin、Fluentd等,可視化OpenTelemetry中的部分資料
但目前據我所知沒有一個可以統一接管完整OpenTelemetry的,如果有的話歡迎糾錯,
- 狀態管理也是由Sidecar代理的

對于.Net的意義
- .Net SDK是微軟親兒子,讓.Net和Java一起在新起點站在了同一起跑線
- 分布式應用運行時給.Net的新架構帶來了新的思路和機遇
- 加速.Net技術堆疊的更新迭代
- 共享開源生態
我們正在行動,新的框架、新的生態
我們的目標是自由的、易用的、可塑性強的、功能豐富的、健壯的,
所以我們借鑒Building blocks的設計理念,正在做一個新的框架MASA Framework,它有哪些特點呢?
- 原生支持Dapr,且允許將Dapr替換成傳統通信方式
- 架構不限,單體應用、SOA、微服務都支持
- 支持.Net原生框架,降低學習負擔,除特定領域必須引入的概念,堅持不造新輪子
- 豐富的生態支持,除了框架以外還有組件庫、權限中心、配置中心、故障排查中心、報警中心等一系列產品
- 核心代碼庫的單元測驗覆寫率90%+
- 開源、免費、社區驅動
- 還有什么?我們在等你,一起來討論
經過幾個月的生產專案實踐,已完成POC,目前正在把之前的積累重構到新的開源專案中
目前原始碼已開始同步到Github(檔案站點在規劃中,會慢慢完善起來):
MASA.BuildingBlocks
MASA.Contrib
MASA.Utils
MASA.EShop
BlazorComponent
MASA.Blazor
QQ群:7424099
微信群:加技術運營微信(MasaStackTechOps),備注來意,邀請進群

轉載自:(鬼谷子)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/354378.html
標籤:.NET Core
