手把手教你学Dapr - 2. 必须知道的概念
Sidecar 邊車
Dapr API提供Http和gRPC兩種通訊方式。
運行方式則可以是容器也可以是進(jìn)程(Windows開發(fā)推薦使用Self Hosted,后續(xù)會解釋)。
這樣的好處是與運行環(huán)境無關(guān),且獨立運行不需要應(yīng)用包含Dapr運行時的代碼。只需要通過SDK集成即可,這使得Dapr與應(yīng)用的邏輯分離。
Building blocks 構(gòu)建塊
官方解釋:可通過標(biāo)準(zhǔn)HTTP或gRPC api訪問的模塊化最佳實踐
通俗一點來說,就是API
目前支持的構(gòu)建塊如下,但1.5很快會出一個新的Configuration API(從這個新的API又印證了構(gòu)建塊的本質(zhì)),由阿里-敖小劍牽頭整理的
Github Issue: https://github.com/dapr/dapr/issues/2988
這個提案很長,很曲折。仔細(xì)看會發(fā)現(xiàn)中外開發(fā)大環(huán)境下的一些思想碰撞。微軟相對保守,阿里相對激進(jìn)但也更務(wù)實。最終長達(dá)幾個月的激烈討論下定版。
期間本人也有幸與阿里-敖小劍和阿里-儀式(Layotto的研發(fā)同學(xué),Layotto兼容Dapr協(xié)議,是螞蟻在做)開過語音會議一起聊過對于Configuration API的一些設(shè)計問題。
服務(wù)調(diào)用
狀態(tài)管理
發(fā)布訂閱
綁定
Actor(這個不建議翻譯回中文)
可觀測性
安全
Components 組件
官方解釋:被用于構(gòu)建塊和應(yīng)用程序的模塊化功能
Dapr 使用模塊化設(shè)計,將功能作為組件來提供。每個組件都有接口定義。所有組件都是可插拔的,因此您可以將組件換為另一個具有相同接口的組件。
結(jié)合構(gòu)建塊來看,組件有接口定義。而構(gòu)建塊則通過接口將組件的功能串聯(lián)起來
基于對Dapr設(shè)計的理解,我們的MASA Framework也定義出了 BuildingBlocks 和 Contrib,與dapr會有些許不同
原因如下:
由BuildingBlocks定義標(biāo)準(zhǔn)、串業(yè)務(wù)流程
讓Contrib變成我們的最佳實踐,并允許開發(fā)重新定義BuildingBlocks的具體實現(xiàn),在保證功能完整的前提下提供更符合業(yè)務(wù)場景的功能又有參考代碼
聚焦核心代碼穩(wěn)定性,提供單元測試覆蓋率保障,共享大眾智慧
組件與構(gòu)建塊并不是一一對應(yīng)的,組件可以被不同的構(gòu)建塊復(fù)用,比如Actor構(gòu)建塊內(nèi)的狀態(tài)管理也是用的狀態(tài)存儲組件
狀態(tài)存儲
服務(wù)發(fā)現(xiàn)
中間件
發(fā)布訂閱代理
綁定
密鑰存儲
Configuration 配置
官方解釋:變更Dapr Sidecar或全局Dapr系統(tǒng)服務(wù)的行為
配置定義和部署形式為YAML文件
在官方文檔的Component sepcs可以看到每個組件提供了多少種實現(xiàn),每個實現(xiàn)特性支持情況
除此之外不同組件的配置文件格式也是應(yīng)有盡有
官方文檔對于組件配置的講解非常詳細(xì),這里舉個例子,Redis狀態(tài)管理的配置文件格式
你需要變更的部分已經(jīng)用<*>和 # * 做了標(biāo)記
參考自:https://docs.dapr.io/reference/components-reference/supported-state-stores/setup-redis/
apiVersion:?dapr.io/v1alpha1 kind:?Component metadata: name:?<NAME> namespace:?<NAMESPACE> spec: type:?state.redis version:?v1 metadata: -?name:?redisHostvalue:?<HOST> -?name:?redisPasswordvalue:?<PASSWORD> -?name:?enableTLSvalue:?<bool>?# Optional. Allowed: true, false. -?name:?failovervalue:?<bool>?# Optional. Allowed: true, false. -?name:?sentinelMasterNamevalue:?<string>?# Optional -?name:?maxRetriesvalue:?# Optional -?name:?maxRetryBackoffvalue:?# Optional -?name:?ttlInSecondsvalue:?<int>?# OptionalObservability 可觀測性
官方解釋:通過跟蹤、指標(biāo)、日志和健康狀況監(jiān)視應(yīng)用
在構(gòu)建應(yīng)用程序時,了解系統(tǒng)如何運行是運維的一個重要部分——這包括有能力觀測應(yīng)用程序的內(nèi)部調(diào)用,評估其性能并在發(fā)生問題時立即意識到問題
這對任何系統(tǒng)都是一種挑戰(zhàn),而對于由多個微服務(wù)組成的分布式系統(tǒng)來說更是如此
分布式跟蹤
配置發(fā)送跟蹤數(shù)據(jù),輕松集成多個監(jiān)控后端
OpenTelemetry collector
配置OpenTelemetry收集器,使用支持OpenTelemetry的監(jiān)控后端
Dapr Sidecar和系統(tǒng)服務(wù)的可觀測性
配置收集Dapr Sidecar和相關(guān)服務(wù)的指標(biāo)和日志
Security 安全性
Dapr 用于加密傳輸中數(shù)據(jù)的安全機(jī)制之一是 相互認(rèn)證(mutual authentication)TLS 或簡寫為 mTLS
雙向身份驗證
通過加密通道通信
Sidecar與應(yīng)用通信
Dapr Sidecar通過localhost與應(yīng)用通信,并提供Token API級別身份驗證
Sidecar之間的通信
Dapr默認(rèn)開啟mTLS(可以手動關(guān)閉,有一定的性能損耗,大多數(shù)情況下可以忽略不計)。Dapr利用Sentry的系統(tǒng)服務(wù)充當(dāng)證書頒發(fā)機(jī)構(gòu),包括證書輪換。
證書默認(rèn)有效期為24小時,時鐘偏差為15分鐘。
Self Hosted mTLS
K8s mTLS
Sidecar與系統(tǒng)服務(wù)之間的通信
Dapr Sidecar和Dapr系統(tǒng)服務(wù)之間是強(qiáng)制性mTLS的,包括Sentry(證書頒發(fā)機(jī)構(gòu))、Placement(Actor安置服務(wù))和K8s Operator
K8s中系統(tǒng)服務(wù)的mTLS
Dapr Sidecar與Dapr系統(tǒng)服務(wù)(Actor Placement, Sidecar Injector, Sentry, Operator)之間是通過mTLS
Kubelet與Dapr Sidecar之間也是通過mTLS
Dapr Sidecar或者Dapr系統(tǒng)服務(wù)與Components之間也是通過mTLS
Dapr Sidecar與應(yīng)用之間不是
其實Dapr在安全方面做的工作很多,這里就不繼續(xù)一一列舉了
我們正在行動,新的框架、新的生態(tài)
我們的目標(biāo)是自由的、易用的、可塑性強(qiáng)的、功能豐富的、健壯的。
所以我們借鑒Building blocks的設(shè)計理念,正在做一個新的框架MASA Framework,它有哪些特點呢?
原生支持Dapr,且允許將Dapr替換成傳統(tǒng)通信方式
架構(gòu)不限,單體應(yīng)用、SOA、微服務(wù)都支持
支持.Net原生框架,降低學(xué)習(xí)負(fù)擔(dān),除特定領(lǐng)域必須引入的概念,堅持不造新輪子
豐富的生態(tài)支持,除了框架以外還有組件庫、權(quán)限中心、配置中心、故障排查中心、報警中心等一系列產(chǎn)品
核心代碼庫的單元測試覆蓋率90%+
開源、免費、社區(qū)驅(qū)動
還有什么?我們在等你,一起來討論
經(jīng)過幾個月的生產(chǎn)項目實踐,已完成POC,目前正在把之前的積累重構(gòu)到新的開源項目中
目前源碼已開始同步到Github(文檔站點在規(guī)劃中,會慢慢完善起來):
MASA.BuildingBlocks
MASA.Contrib
MASA.Utils
MASA.EShop
BlazorComponent
MASA.Blazor
QQ群:7424099
微信群:加技術(shù)運營微信(MasaStackTechOps),備注來意,邀請進(jìn)群
總結(jié)
以上是生活随笔為你收集整理的手把手教你学Dapr - 2. 必须知道的概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手把手教你学Dapr - 4. 服务调用
- 下一篇: 精彩回顾 | Dapr闪电说系列