【翻譯】Orleans 3.0 發佈

来源:https://www.cnblogs.com/yyfh/archive/2019/11/29/11958182.html
-Advertisement-
Play Games

這是Orleans團隊的帖子。Orleans是用於使用.NET構建分散式應用程式的跨平臺框架。有關更多信息,請參見 "https://github.com/dotnet/orleans" 。 我們很高興宣佈Orleans 3.0版本。自Orleans 2.0以來,進行了大量改進和修複,並提供了一些新 ...


image

這是Orleans團隊的帖子。Orleans是用於使用.NET構建分散式應用程式的跨平臺框架。有關更多信息,請參見 https://github.com/dotnet/orleans

我們很高興宣佈Orleans 3.0版本。自Orleans 2.0以來,進行了大量改進和修複,並提供了一些新功能。這些變化是由許多人在各種各樣的場景和環境中在生產中運行基於Orleans的應用程式的經驗所驅動的,也是由全球Orleans社區的聰明才智和熱情所致,他們一直致力於使代碼庫更好,更快,更多。靈活。非常感謝以各種方式為該版本做出貢獻的所有人!

自Orleans2.0以來的重大變化

Orleans2.0於18個月前發佈,此後Orleans取得了長足的進步。自2.0版以來的一些標題更改是:

  • 分散式ACID事務-無論狀態存儲在何處,多個顆粒都可以加入事務
  • 一個新的調度程式,僅在某些情況下,其性能就提高了30%以上
  • 基於Roslyn代碼分析的新代碼生成器
  • 重寫集群成員資格以提高恢復速度
  • (Co-hosting)支持

以及許多其他許多改進和修複。

自開發Orleans 2.0以來,該團隊與.NET團隊密切協作,建立了一個實現或集成某些功能(例如通用主機,命名選項)的良性迴圈,然後才準備將這些功能納入.NET。核心版本,“上游”提供反饋和改進,在更高版本中,切換到.NET版本附帶的最終實現。在Orleans 3.0的開發過程中,這個周期一直持續著,直到Orleans 3.0.0-beta1最終將其作為.NET 3.0的一部分使用之前,都使用了基岩代碼。同樣,在TCP套接字連接上對TLS的支持是作為Orleans 3.0的一部分實現的,並且打算成為.NET Core未來版本的一部分。我們本著開放源源不斷的精神,將這種持續的合作視為對更大的.NET生態系統的貢獻。

使用用ASP.NET Bedrock替換網路層

一段時間以來,無論是社區還是內部合作伙伴,對使用TLS進行安全通信的支持一直是一個主要問題。在3.0版本中,我們引入了TLS支持,可通過Microsoft.Orleans.Connections.Security包獲得該支持。有關更多信息,請參見TransportLayerSecurity示例。

由於如何實現Orleans早期版本中的網路層,實現TLS支持是一項艱巨的工作:無法輕鬆地使用來支持SslStream,這是實現TLS的最常見方法。以TLS為動力,我們踏上了重寫Orleans網路層的旅程。

Orleans3.0取代了整個網路層,該層基於ASP.NET團隊的計劃Project Rock之上。Bedrock的目標是幫助開發人員構建快速,強大的網路客戶端和伺服器。

ASP.NET團隊和Orleans團隊一起設計支持網路客戶端和伺服器,與傳輸無關的抽象,並且可以使用中間件進行自定義。這些抽象使我們能夠通過配置更改網路傳輸,而無需修改內部或特定於Orleans的聯網代碼。Orleans的TLS支持作為基岩中間件實現,我們的目的是使之通用,以便可以與.NET生態系統中的其他人共用。

儘管這項工作的推動力是啟用TLS支持,但在我們的夜間負載測試中,我們平均看到吞吐量大約提高了30%。

網路層的重寫還涉及依賴於替換我們的自定義緩衝池,MemoryPool並且在進行此更改時,序列化現在可以利用的更多優勢Span。以前依賴於通過專用線程調用BlockingCollection進行阻止的某些代碼路徑現在Channel用於非同步傳遞消息。這樣可以減少專用線程的數量,從而將工作移至.NET線程池。

自最初發佈以來,Orleans的核心線協議一直保持不變。在Orleans 3.0中,我們增加了對通過協議協商逐步升級網路協議的支持。Orleans 3.0中添加的協議協商支持可實現將來的增強功能,例如自定義核心序列化程式,同時保持向後相容性。新網路協議的一個好處是支持全雙工筒倉到筒倉的連接,而不是以前在筒倉之間建立的單工連接對。協議版本可以通過進行配置ConnectionOptions.ProtocolVersion。

通過通用主機共同托管

現在,通過.NET Generic Host可以比以前更輕鬆地在同一過程中與其他框架(如ASP.NET Core)共同托管Orleans 。

這是使用以下命令將Orleans和ASP.NET Core一起添加到主機的示例UseOrleans:

var host = new HostBuilder()
  .ConfigureWebHostDefaults(webBuilder =>
  {
    // Configure ASP.NET Core
    webBuilder.UseStartup<Startup>();
  })
  .UseOrleans(siloBuilder =>
  {
    // Configure Orleans
    siloBuilder.UseLocalHostClustering();
  })
  .ConfigureLogging(logging =>
  {
    /* Configure cross-cutting concerns such as logging */
  })
  .ConfigureServices(services =>
  {
    /* Configure shared services */
  })
  .UseConsoleLifetime()
  .Build();

// Start the host and wait for it to stop.
await host.RunAsync();

使用通用主機生成器,Orleans將與其他托管服務共用服務提供商。這將使這些服務可以訪問Orleans。例如,開發人員可以將其插入IClusterClient或IGrainFactory插入ASP.NET Core MVC控制器中,並直接從其MVC應用程式調用粒度。

此功能可用於簡化部署拓撲或向現有應用程式添加其他功能。一些團隊在內部使用聯合托管,通過ASP.NET Core Health Checks將Kubernetes的活躍性和就緒性探針添加到他們的Orleans silos。

可靠性提高

現在,得益於擴展了Gossip,群集從故障中恢復的速度更快。在以前的Orleans版本中,silos 會向其他silos 發送成員Gossip消息,指示他們更新成員信息。八卦消息現在包括集群成員身份的版本化,不變的快照。這樣可以縮短silos 加入或離開集群後的收斂時間(例如,在升級,擴展或發生故障後),並減輕共用成員存儲上的爭用,從而加快集群轉換的速度。故障檢測也得到了改進,具有更多的診斷消息和改進功能以確保更快,更準確的檢測。故障檢測涉及群集中的silos ,這些silos 相互協作監視,每個向其他silos的子集發送定期運行狀況探測。

現在,可以更一致地處理消息錯誤,從而將提示錯誤傳播回調用者。這有助於開發人員更快地發現錯誤。例如,當消息無法完全序列化或反序列化時,詳細的異常將傳播回原始調用方。

增強的可擴展性

Streams 可以具有自定義數據適配器,從而允許它們以任何格式提取數據。這使開發人員可以更好地控制Streamitems在存儲中的表示方式。它還使Stream提供者可以控制如何寫入數據,從而允許Streams與老系統和Orleans服務集成。

Grain擴展允許通過自己的通信介面附件新的組件,從而在運行時向Grain添加其他行為。例如,Orleans事務使用Grain擴展對用戶透明的向Grain中添加事務生命周期方法,如“準備”、“提交”和“中止”。Grain擴展現在也可用於Grain服務和系統目標。

現在,自定義事務狀態可以聲明其在事務中能夠扮演的角色。例如,將事務生命周期事件寫入服務匯流排隊列的事務狀態實現不能滿足事務管理器的職責,因為它(該事務狀態的職責)是只寫的。

預定義的放置策略現在可以公開訪問,因此在配置期間可以替換任何放置控制器。

共同努力

既然Orleans3.0已經發佈,我們就將註意力轉向未來的版本-我們有一些令人興奮的計劃!快來加入我們在GitHub和Gitter上熱情友好的社區,幫助我們實現這些計劃。

Orleans團隊

概要

翻譯:https://devblogs.microsoft.com/dotnet/orleans-3-0/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.在一個文件夾名為www.html3.com的web項目來實現,首先到nginx的配置文件nginx.conf做如下配置 python和html混合編寫的文件,我以文件尾碼為.phtml,通過伺服器配置讓它重定向到 /rewrite/ 2.進去項目目錄下的static/html/ 編寫一個1.ph ...
  • 函數1 函數2 函數3 —————————————————————————————————————————————————————————————————— 1調用2,將變數a的地址做實參,傳給2的指針變數b。形如&a —》 *b。 2調用3,若仍以&b —》*c,則在指針變數c中,存入的是b的地址 ...
  • A いっしょ / Be Together (結論/暴力) "題目鏈接" 題目大意: 有 $n$ 個數字,要將它們變成相等,對每一個數字最多操作一次,如將 $a \to b$ 的代價為 $(a b)^2$ ,求出最小的代價。 大致思路: 根據不等式的知識可以知道,假設最後數字變為 $x$,那麼 $x$ ...
  • 恢復內容開始 每次講爬蟲的時候都會從“發送請求” 開始講,講到解析頁面的時候可能大部分讀者都會卡住,因為這部分確實需要一點XPATH或者CSS選擇器的前置知識。那麼有沒有不需要這麼複雜的操作就能把頁面信息讀取出來的方法呢? 答案是:有。 Lassie是一個超簡單的頁面信息檢索工具,它能夠通過幾行代碼 ...
  • 明天又雙叒叕是一年一度的七夕戀愛節了! 又是一波絕好的機會!恩愛秀起來! 購物車清空!禮物送起來!朋友圈曬起來! 等等! 什麼?! 你還沒準備好七夕禮物麽? 但其實你不知道要送啥? 原來又雙叒叕要到了 全民不知道送什麼禮物的系列日子了… 需要Python軟體工具和學習資料的小伙伴可以點擊下方鏈接自行 ...
  • 下載安裝 從 "https://golang.org/dl/" 下載最新的安裝包。 windows直接執行exe,按指示進行安裝(預設安裝目錄是:C:\Go) linxu解壓後複製到你喜歡目錄就行(一般放在:/usr/local/go) 配置環境變數 首先,應在全局環境變數里增加: ,指定 的安裝位 ...
  • Springcloud Aibaba現在這麼火,我一直想寫個基於Springcloud Alibaba一步一步構建微服務架構的系列博客,終於下定決心從今天開始本系列文章的第一篇 基礎環境準備。 該系列文章內容主要基於三個微服務:用戶服務 ,訂單服務 ,產品服務 用到的組件有: 註冊中心、配置中心 N ...
  • 關鍵詞:工作流定時任務 流程引擎定時任務設置 工作流系統定時任務配置 開源工作流引擎 開源工作流系統 一、定時任務的作用 發送郵件,發送簡訊。 處理節點自動執行的任務。比如:一個節點的待辦工作是機器執行的,需要等到滿足一定的條件才能運行下去,我們稱為自動執行任務節點,這個任務叫自動執行任務。 啟動定... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...