真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

.NET的Actor模型Orleans是怎么樣的

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān).NET的Actor模型Orleans是怎么樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司是專業(yè)的天門網(wǎng)站建設(shè)公司,天門接單;提供做網(wǎng)站、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行天門網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

Orleans是微軟推出的類似Scala Akka的Actor模型,Orleans是一個(gè)建立在.NET之上的,設(shè)計(jì)的目標(biāo)是為了方便程序員開發(fā)需要大規(guī)模擴(kuò)展的云服務(wù), 可用于實(shí)現(xiàn)DDD+EventSourcing/CQRS系統(tǒng)。

傳統(tǒng)的三層體系結(jié)構(gòu)包括無(wú)狀態(tài)的前端,無(wú)狀態(tài)的中間層和存儲(chǔ)層在可伸縮性方面是有限制的,由于存儲(chǔ)層在延遲和吞吐量方面的限制,這對(duì)于每個(gè)用戶請(qǐng)求都有影響。通常辦法是在中間層和存儲(chǔ)層之間添加緩存層來(lái)提高性能。然而,緩存會(huì)失去了大部分的并發(fā)性和底層存儲(chǔ)層的語(yǔ)義保證。為了防止緩存和存儲(chǔ)池的不一致更新,應(yīng)用程序或緩存管理器需要實(shí)現(xiàn)一個(gè)并發(fā)控制協(xié)議。

無(wú)論是否使用緩存,無(wú)狀態(tài)中間層并不提供本地?cái)?shù)據(jù),因?yàn)樗褂玫氖菙?shù)據(jù)裝載范式: 對(duì)于每個(gè)請(qǐng)求,數(shù)據(jù)是來(lái)自存儲(chǔ)層或緩存加裝到中間層,如果是一個(gè)社會(huì)關(guān)系圖,一個(gè)請(qǐng)求將會(huì)激活關(guān)聯(lián)很多子實(shí)體對(duì)象,這就對(duì)緩存一致性帶來(lái)更大的挑戰(zhàn)。

Actor模型提供了一個(gè)解決這些挑戰(zhàn)的有吸引力的依靠函數(shù)裝載的范式。Actor允許建立一個(gè)有狀態(tài)的中間層,緩存的性能優(yōu)勢(shì)與封裝的數(shù)據(jù)局部性都通過(guò)特定于應(yīng)用程序的業(yè)務(wù)實(shí)體封裝協(xié)調(diào)了(DDD的聚合根用行為守衛(wèi)狀態(tài),聚合根保存在緩存中,聚合根實(shí)體的狀態(tài)字段也在緩存中,對(duì)狀態(tài)字段的操作只能通過(guò)實(shí)體行為,保證狀態(tài)一致性)。此外,Actor容易實(shí)現(xiàn)中間層中水平的、"社會(huì)"、實(shí)體之間的關(guān)系。

分布式系統(tǒng)編程的另一個(gè)觀點(diǎn)是面向?qū)ο缶幊?OOP)。雖然OOP是一個(gè)建立復(fù)雜系統(tǒng)模型直觀的方法,但是他被受歡迎的面向服務(wù)的體系結(jié)構(gòu)(SOA)邊緣化了。當(dāng)然人們?nèi)匀豢梢允芤嬗贠OP實(shí)現(xiàn)服務(wù)組件時(shí)。然而,在系統(tǒng)層面上,開發(fā)人員必須考慮松耦合的分區(qū)服務(wù),通常會(huì)導(dǎo)致和應(yīng)用程序的概念業(yè)務(wù)對(duì)象不匹配,這導(dǎo)致了目前主流方向由開發(fā)人員構(gòu)建分布式系統(tǒng)非常困難。Actor模型將OOP帶回了系統(tǒng)級(jí)開發(fā),開發(fā)人員非常像熟悉交互的對(duì)象的模型。

例如Erlang和Akka的Actor平臺(tái)在簡(jiǎn)化分布式系統(tǒng)編程方面是向前邁出了一步。然而,他們?nèi)匀回?fù)擔(dān)與許多分布式系統(tǒng)的復(fù)雜性,因?yàn)殚_發(fā)人員面臨相對(duì)低水平的抽象和系統(tǒng)服務(wù)。關(guān)鍵的挑戰(zhàn)是開發(fā)管理Actor生命周期的代碼,處理分布式競(jìng)爭(zhēng)、處理故障和恢復(fù)Actor以及分布式資源管理等等都很復(fù)雜,因此,如果建立一個(gè)應(yīng)用程序必須正確的解決這些問(wèn)題,開發(fā)人員則必須是一個(gè)分布式系統(tǒng)專家(難度太大)。

為了避免這些復(fù)雜性,微軟研究院建造了Orleans的編程模型,運(yùn)行時(shí)它提高了Actor的抽象級(jí)別。Orleans的目標(biāo)不是分布式系統(tǒng)專家級(jí)別的開發(fā)人員,雖然我們的專家客戶發(fā)現(xiàn)它也有吸引力。和現(xiàn)有的基于actor平臺(tái)有本質(zhì)差異,它是把Actor作為虛擬實(shí)體,而不是實(shí)際物理的。

首先,一個(gè)Orleans的Actor總是存在的,但是它不能被顯式地創(chuàng)建或銷毀。它的存在超越任何內(nèi)存中任何實(shí)例的生命周期,從而超越了任何特定服務(wù)器的生命周期。

第二,Orleans Actor是自動(dòng)實(shí)例化:如果內(nèi)存沒(méi)有Actor實(shí)例,它會(huì)自動(dòng)創(chuàng)建,發(fā)送到Actor的一個(gè)消息是當(dāng)前服務(wù)器上創(chuàng)建一個(gè)新的實(shí)例。一個(gè)未使用的Actor實(shí)例作為運(yùn)行時(shí)資源管理的一部分自動(dòng)回收。一個(gè)actor實(shí)例從來(lái)不會(huì)失敗: 如果服務(wù)器S崩潰, 發(fā)送給這個(gè)S中Actor的下一個(gè)消息將被自動(dòng)實(shí)例化到另外一個(gè)服務(wù)器A,消除應(yīng)用程序需要監(jiān)督和人為編碼顯式地重建失敗的Actor。

第三,Actor的位置實(shí)例對(duì)應(yīng)用程序代碼是透明的,這極大地簡(jiǎn)化了編程。

第四,Orleans可以自動(dòng)創(chuàng)建多個(gè)實(shí)例相同的無(wú)狀態(tài)的Actor,Actor可以無(wú)縫地?zé)釘U(kuò)展。

Orleans給開發(fā)人員一個(gè)虛擬"Actor空間",類似于虛擬內(nèi)存,使他們能夠調(diào)用系統(tǒng)中的任何Actor,不管它是否存在于內(nèi)存。虛擬化間接依賴從虛擬Actor到實(shí)際Actor的映射。這種級(jí)別的間接尋址為運(yùn)行時(shí)解決許多分布式系統(tǒng)問(wèn)題帶來(lái)機(jī)會(huì),否則開發(fā)人員必須直接自己解決這些復(fù)雜問(wèn)題,如Actor定位和負(fù)載平衡、失活未使用的Actor,復(fù)蘇因服務(wù)器失敗的Actor,這是出了名的困難。因此,虛擬Actor方法大大簡(jiǎn)化了編程模型。同時(shí)允許運(yùn)行時(shí)加載和透明地從失敗中恢復(fù)。

上述就是小編為大家分享的.NET的Actor模型Orleans是怎么樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標(biāo)題:.NET的Actor模型Orleans是怎么樣的
URL分享:http://weahome.cn/article/gceigd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部