Successfully reported this slideshow.
Your SlideShare is downloading. ×

.NET 7 家族新成員: Microsoft Orleans v7

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 21 Ad

More Related Content

More from twMVC (20)

Recently uploaded (20)

Advertisement

.NET 7 家族新成員: Microsoft Orleans v7

  1. 1. .NET 7 家族新成員: Microsoft Orleans v7 Microsoft Orleans快速簡介
  2. 2. Microsoft Orleans 是什麼? • RPC + Virtual Actor Model 分散式運算框架, 為 .NET 基金會所有(MIT授權) • GitHub: https://aka.ms/orleans • Doc: https://aka.ms/orleans-docs • 原 Microsoft Research 專案,用在 Xbox Halo 即時網路遊戲後端分散式運算框架 • 從.NET 7開始跟 ASP.NET Core 7整合,提供 ASP.NET Core的跨主機狀態同步服務
  3. 3. Build 2022: https://youtu.be/-4BelRbFOVo
  4. 4. Orleans 適用場景 https://learn.microsoft.com/training/modules/orleans-product-introduction/4-when-to-use-orleans
  5. 5. Orleans的使用方法 • Virtual Actor Model: • Orleans 運算單元(Grains)的 RPC(Remote Procedure Call) 方法不會同時執行 • Virtual Actor Model 讓應用開發者不必自行管理 Actor Model運算單元(在 Orleans 術語叫 『Grain』)的物件生命週期 • 本機/遠端Grain的RPC呼叫方式均相同: 1. DI注入 IGrainFactory / IGrainClient 物件 2. 利用上述DI注入物件呼叫 GetGrain<IGrainInterface>(identity) 以取得”特定Grain”的RPC呼叫參考實體 3. 呼叫RPC參考實體提供的非同步方法
  6. 6. Orleans的開發方法 – 定義Grain • Grain 程式碼分為: • RPC 介面宣告 (Grain Interface) • RPC方法實作類別 (Grain Class) • Grain Class在 Orleans v3.x 一定得繼承自 Orleans.Grain 類別 • 在 Orleans v7+ 可使用 POCO (Plain Old CLR Object) 類別來定義,不過Grain Class必需實作 IGrainBase 介面的 GrainContext 屬性 • Grain Class 內可用 .NET Core/5+ 內建 Dependency Injection取得各種服務物件 • Grain生命週期可以有 IGrainBase 介面方法實作, 週期狀態轉移時由Orleans框架呼叫
  7. 7. Orleans的開發方法 – Grain狀態(State)儲存 • Grain 本身可為無狀態或有狀態設計,如有狀態 變數,需使用注入的 IPersistentState 物 件,搭配 Silo 配置搭配的資料庫或雲端儲存體 Persistence provider,以便 Grain 休眠前將狀 態變數資料寫入儲存 • 開發者需自己呼叫 WrtieStateAsync()才會 儲存資料 • Grain 生命週期啟動時 Orleans Runtime 自動 呼叫 ReadStateAsync()將儲存資料載入 • ClearStateAsync()可清除Grain存於資料庫/ 雲端儲存體的資料 https://dotnet.github.io/orleans/docs/grains/grain_persistence/index.html
  8. 8. Orleans的運營環境配置元件 - Silo • 『Silo 裝著 Grains』,即 Grains 實際在執行時是跑在叫 Silo 的執行環境上 • 萬一 Grains 在某 Silo上執行時當掉,Orleans會負責在 別的 Silo 上把當時正執行的 Grains重新復活 • Silo 有單獨 Generic Host 或合併在 ASP.NET Core 的 Web服務一起執行(Co-Host)的方式 • Silo 負責提供一堆 Grains 的 Orleans API 功能所需底層 服務,由加入/設定 Provider 的方式寫在ASP.NET Core Builder配置程式碼(Program.cs / Startup.cs)的 “SiloBuilder”
  9. 9. Orleans範例 - 短網址服務 • 原本MS Learn課程的程式碼範例: https://learn.microsoft.com/training /modules/orleans-build-your-first- app • 課程範例的上雲補完版,增加 第三方 OrleansDashboard( https://github.c om/OrleansContrib/OrleansDashbo ard )整合、部署至 Azure App Service 的 Bicep IaC(Infra as Code) scripts、 OpenTelemetry 收集遙測資料至 Azure Application Insight: https://github.com/windperson/Orle ansNet7UrlShortener • Bicep教學可看IThome 30天鐵人賽 Microsoft Orleans雲原生開發框架從 小白到大神系列 第 37 篇: https://ithelp.ithome.com.tw/articles /10309646
  10. 10. 短網址服務的架構 - Smart Cache Pattern • https://github.com/OrleansContrib/DesignP atterns/blob/master/Smart%20Cache.md • 利用 Orleans 的 Grain 可有狀態且保持在記憶 體上存活一陣子的特性,達到 Redis Cache / Memcached 的替代功能
  11. 11. 相關進階參考資源 • GitHub: aka.ms/orleans • Contributor's repo: github.com/OrleansContrib • Discord: aka.ms/orleans-discord • Official Docs: aka.ms/orleans-docs • MS Learn tutorial: learn.microsoft.com/en-us/training/modules/orleans-product-introduction learn.microsoft.com/en-us/training/modules/orleans-build-your-first-app • Microsoft Orleans雲原生開發框架從小白到大神: https://ithelp.ithome.com.tw/users/20130498/ironman/5259 • YouTube video: https://youtu.be/WUZw78P-Zg8 https://youtu.be/7OVU9Mqqzgs https://youtu.be/3NT7uMV8GhQ • Book: Concurrent Patterns and Best Practices: https://www.packtpub.com/product/concurrent-patterns-and-best-practices/9781788627900 • Book: Distributed .NET with Microsoft Orleans: https://www.packtpub.com/product/distributed-net-with-microsoft-orleans/9781801818971 • Book: Orleans:构建高性能分布式 Actor 服务 https://www.tenlong.com.tw/products/9787111691099

×