主頁 > .NET開發 > 【翻譯】Orleans 3.0 發布

【翻譯】Orleans 3.0 發布

2020-09-20 09:45:36 .NET開發

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/

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/87840.html

標籤:.NET Core

上一篇:在ASP.NET Core 3.1中使用Swagger

下一篇:記錄一次Mac VSCode運行Grpc模板專案

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more