Dapr 檔案:https://docs.dapr.io
Orleans 檔案:https://learn.microsoft.com/zh-cn/dotnet/orleans
Dapr | Orleans |
---|---|
runtime 執行時 | framework 框架 |
actor 只是其中的一個元件 | actor + state |
無分散式事務方案 | 提供最終一致性保障 |
依賴於 dapr 執行時 | 無除了 .net 環境的依賴 |
比較難進行 debug | 偵錯開發無差別 |
docker 與 k8s 支援 | 裸金屬/docker/k8s 支援 |
多種語言 sdk 支援 | 僅 C# 語言 |
1.8 版本 | 3.6 版本,4.0 即將釋出 |
我們有個工作 jd001,就是一個 actor,它會有一個 internal state,狀態裡面會有一個 identity,它是唯一的,不可改變的
有一個瀏覽工作的訊息,它把工作的 id,以及當前的瀏覽者資訊傳入進來,呼叫 jd001
jd001 會建立一個 activity actor ac001,然後呼叫 ac001 把瀏覽記錄下來,有一個活動型別 view
actor 在 Orlean 中叫作 grain 穀倉
執行時保證 grain 每次永遠不會在多個執行緒上執行,通過結合與其他 grain 的隔離,程式設計師絕不會在 grain 級別面臨並行情況,因此絕不會需要使用鎖或者其他同步機制來控制對共用資料的存取,非專家級程式設計師只需此功能便可方便地控制分散式應用程式的開發
Orlean 中的 grain 具有邏輯終結點,它們之間的訊息傳送跨一組固定的全交換物理連線(TCP 通訊端)進行多路複用,這使得執行時能夠託管數百萬個可定址實體,並且每個 grain 的作業系統開銷很低,此外,在註冊/取消註冊物理終結點(例如 TCP 埠或 HTTP URL)甚至關閉 TCP 連線時,啟用和取消啟用 grain 都不會產生成本
高效能
grain = identity + behavior [ + state ]
啟用 grain 時,會自動讀取 grain 狀態,但 grain 需要負責在必要時顯示觸發任何已更改的 grain 狀態的寫入
IPersistentState<TState>
Grain<TState>
(已過時)
通過 MongoDB 持久化
Orleans.Providers.MongoDB: https://github.com/OrleansContrib/Orleans.Providers.MongoDB
Timer && Reminder:https://learn.microsoft.com/zh-cn/dotnet/orleans/grains/timers-and-reminders
Orleans silo 生命週期概述:https://learn.microsoft.com/zh-cn/dotnet/orleans/host/silo-lifecycle
Kubernetes 託管:https://learn.microsoft.com/zh-cn/dotnet/orleans/deployment/kubernetes
哪些應用適合採用 Orleans
哪些不適合
本作品採用知識共用署名-非商業性使用-相同方式共用 4.0 國際許可協定進行許可。
歡迎轉載、使用、重新發布,但務必保留文章署名 鄭子銘 (包含連結: http://www.cnblogs.com/MingsonZheng/ ),不得用於商業目的,基於本文修改後的作品務必以相同的許可釋出。
如有任何疑問,請與我聯絡 ([email protected]) 。