1.1 Orleans 整體介紹

<<返回目錄

背景

Orleans
是微軟開源的Actor模型開發(fā)框架房维。

Actor模型
此模型解決了并發(fā)編程時對資源競爭使用的問題,將對同一個業(yè)務數(shù)據(jù)的訪問從并行變?yōu)榇袌?zhí)行抬纸,降低了多線程編程的難度咙俩,使普通編程人員也能輕松編寫高并發(fā)應用。

特點

Orleans的主要特點是通過框架提升開發(fā)人員的效率湿故,并默認提供對應用系統(tǒng)橫向擴展的能力阿趁,即使是普通開發(fā)人員也能輕松的完成。

提高開發(fā)效率

Orleans通過提供以下這些關鍵抽象坛猪、運行保證脖阵、系統(tǒng)服務來提高開發(fā)人員的效率,并不在意開發(fā)人員是否是并發(fā)編程專家墅茉。

熟悉的OOP

IGrain聲明了一些異步的方法命黔, Grains負責實現(xiàn)他們,是不是很熟悉就斤?我們可以像調用本地方法一樣去調用這些遠程的Grain方法悍募,Orleans負責將它們轉換為消息并在網(wǎng)絡上傳輸、調度洋机。

Grain的單線程執(zhí)行

Orleans保證了一個Grain不會在多個線程上執(zhí)行(通過primaryKey區(qū)分Grain)坠宴,編程人員永遠不用擔心在Grain層面的并發(fā)問題,也不需要使用鎖或其它同步機制來保證對共享數(shù)據(jù)的訪問绷旗。

透明激活

Grain僅當要處理消息時才會激活喜鼓,不同于普通的類實例需要實例化或釋放副砍,Grain只有激活和休眠兩種狀態(tài),并且可以在不同的硬件設備中遷移颠通,實現(xiàn)動態(tài)址晕、自適應的負載均衡,并且開發(fā)人員不需關心這些具體細節(jié)顿锰。

透明傳輸

開發(fā)人員調用Grain時谨垃,不需要知道Grain的物理位置在哪一個硬件設備上,只需要創(chuàng)建對Grain的邏輯引用硼控。

集成持久化

Orleans允許將Grina的內(nèi)存狀態(tài)持久化到存儲設備刘陶。它允許擴展或定制持久化提供程序,并保證只有在成功更新持久狀態(tài)后才調用者才能收到結果牢撼。

自動傳遞錯誤

運行時使用異步和分布式try / catch的語義自動在調用鏈上傳播未處理的錯誤匙隔。 因此,錯誤不會在應用程序中丟失熏版。

這允許程序員將錯誤處理邏輯放在適當?shù)奈恢梅自穑鵁o需在每個級別手動傳播錯誤的繁瑣工作。

默認情況下透明可伸縮性

Orleans 通過提供以下特性幫助開發(fā)人員將系統(tǒng)應用的可擴展性提升幾個數(shù)量級撼短;這是通過將最佳實踐和成熟的模型相融合再膳,并通過提供高效率、低學習成本的系統(tǒng)來達成這一目標曲横。

應用狀態(tài)的隱式細粒度劃分

Orleans 使用 Grain 作為可直接訪問的實體喂柒,程序員隱式地打破了應用程序的單體狀態(tài)。Orleans 并沒有規(guī)定 Grain 應該是多大或多小禾嫉,但絕大多數(shù)情況下會有大量的 Grain灾杰,每個 Grain 代表了應用中的自然實體,例如用戶熙参、訂單中艳吠,每個用戶是一個單獨的Grain,可通過UserId做為primaryKey來區(qū)分各個UserGrain尊惰。由于Grain的獨立性讲竿,并且物理位置被抽象為了邏輯位置,所以Orleans在負載均衡和熱點處理方面具有極大的靈活性弄屡,并且不需要開發(fā)人員考慮這些部分。

自適應的資源管理

當 Grain 互相調用時鞋诗,它們不需要去猜測其它 Grain 的位置膀捷。因為框架具有位置透明的特性,Runtime 可以動態(tài)管理和調整可用硬件資源的分配削彬,通過對集群中的 Grain 的動態(tài)遷移來保證負載全庸,而不會使傳入的請求失敗秀仲。通過創(chuàng)建特定Grain的多個副本,保證吞吐量壶笼,而無需修改應用程序代碼神僵。

多路通信

Grain 采用的是邏輯地址,并且它們之間的消息傳遞在Tcp socket上多路復通覆劈,這允許Runtime 托管數(shù)百萬個具有極低開銷的Grain保礼。另外,激活和停用 Grain 不會產(chǎn)生 Socket 成本责语。

高效的調度

Runtime 可以執(zhí)行大規(guī)模的單線程 Grain 調度炮障,使用非阻塞、基于連續(xù)方式編寫 Grain坤候,應用程序以非常有效的協(xié)程方式運行胁赢,這使系統(tǒng)通夠達到高吞吐量并以非常高的CPU利用率運行,并具有極高的穩(wěn)定性白筹。事實上智末,系統(tǒng)中的Grain數(shù)量增加和負載的增加不會導致額外的線程或其它的系統(tǒng)開銷,這有利于單個節(jié)點和整個系統(tǒng)的擴展徒河。

顯式異步

Orleans 框架中分布式應用程序的異步特點明確系馆,旨在指導程序員編寫非阻塞異步代碼。結合異步消息傳遞和高效的調度虚青,開發(fā)人員無需使用多線程編程技術即可實現(xiàn)大規(guī)模的分布式并行性和總體吞吐量它呀。

原文

Orleans Benefits

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市棒厘,隨后出現(xiàn)的幾起案子纵穿,更是在濱河造成了極大的恐慌,老刑警劉巖奢人,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谓媒,死亡現(xiàn)場離奇詭異,居然都是意外死亡何乎,警方通過查閱死者的電腦和手機句惯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來支救,“玉大人抢野,你說我怎么就攤上這事「髂” “怎么了指孤?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我恃轩,道長结洼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任叉跛,我火速辦了婚禮松忍,結果婚禮上,老公的妹妹穿的比我還像新娘筷厘。我一直安慰自己鸣峭,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布敞掘。 她就那樣靜靜地躺著叽掘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪玖雁。 梳的紋絲不亂的頭發(fā)上更扁,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音赫冬,去河邊找鬼浓镜。 笑死,一個胖子當著我的面吹牛劲厌,可吹牛的內(nèi)容都是我干的膛薛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼补鼻,長吁一口氣:“原來是場噩夢啊……” “哼哄啄!你這毒婦竟也來了?” 一聲冷哼從身側響起风范,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咨跌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后硼婿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锌半,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年寇漫,在試婚紗的時候發(fā)現(xiàn)自己被綠了刊殉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡州胳,死狀恐怖记焊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栓撞,我是刑警寧澤亚亲,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站腐缤,受9級特大地震影響捌归,放射性物質發(fā)生泄漏。R本人自食惡果不足惜岭粤,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一惜索、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧剃浇,春花似錦巾兆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至淘讥,卻和暖如春圃伶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒲列。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工窒朋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝗岖。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓侥猩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親抵赢。 傳聞我的和親對象是個殘疾皇子欺劳,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容