Orleans 知多少 | 2. 核心概念一覽

Orleans 術語解讀

Orleans Core Concept

上面這張圖中包含了Orleans中的幾個核心概念:

  1. Grain
  2. Silo
  3. Orleans Cluster
  4. Orleans Client

從這張圖愧口,我們應該能理清他們之間的關系。

  1. Grain作為最小的執(zhí)行單元

  2. Silo 是 Grain 的宿主運行環(huán)境垃沦,用來暴露具體的服務

  3. Orleans Server 提供Silo的運行環(huán)境

  4. 一個Server可以運行多個Silo服務

  5. 多個Silo組成一個Cluster集群

  6. 一個Cluster中的Grain是可以直接進行交互

  7. 客戶端通過Orleans Client與Cluster建立連接

Orleans 的第一公民:Grain

Grain 簡介

上面已經提到奔誓,Grain是Virtual Actor的具體表現。那如何理解Grain呢。

簡單來說:Grain是一個可尋址的隔離的.NET對象實例剧董。

分解來看:

  1. Grain是一個對象實例:也就是說其是具體的某個Grain Type的一個內存實例兔仰。既然是對象茫负,也就是說Grain可以有自己的狀態(tài)和行為。

  2. 隔離的:是指Grain自身的狀態(tài)和行為不受外界干預乎赴。

  3. 可尋址:并不是指new一個對象返回的內存引用忍法。如果是在單機環(huán)境,通過內存引用還可以進行直接訪問榕吼。但對于分布式應用饿序,Grain可能分布在集群中的任一機器,簡單的內存引用羹蚣,是無法實現跨機器尋址的嗤堰。

Grain Identity

在面向對象編程中使用new創(chuàng)建對象時,獲取的引用可以表示其標識的實例所有方面度宦。但在分布式系統(tǒng)中踢匣,對象引用不能表示實例標識,因為引用通常僅限于單個地址空間戈抄。

那如何實現分布式環(huán)境Grain的可尋址呢离唬?

那就需要給Grain一個身份,也就是Grain Identity划鸽。以訂單舉例输莺,為了標識某一個具體訂單,我可以賦予訂單一個唯一的訂單編號裸诽,通過這個編號就可以找到具體的某個訂單嫂用。

Grain Identity 也就是這種思路。通過給Grain打上邏輯身份標識丈冬,一方面可以完成可尋址(方便其他Grain或Client進行調用)嘱函,一方面確保同一個Grain在集群中能夠按需創(chuàng)建。(單例埂蕊、多例往弓、指定數量的實例)。

默認grain 的身份標識可以是:

  • long

  • GUID

  • string

  • GUID + string

  • long + string

所以基于GrainType和Grain Identity就可以得到集群中唯一確定的Grain蓄氧。即 Unique Grain = Grain Type + Grain Identity函似。

Grain Lifecycle

Grain 的生命周期是由Silo管理的。主要分為以下幾個階段:

Grain Lifecycle
  • 其他Grain或Client調用目標Grain
  • Silo運行時去激活Grain (若Grain是有狀態(tài)的喉童,激活時會同時恢復狀態(tài))
  • Grain處理調用請求
  • Grain閑置
  • Silo運行時決定是否銷毀Grain
  • 銷毀Grain撇寞,從內存中移除(若Grain是有狀態(tài)的,則需要先持久化Grain的狀態(tài),以便下次激活時恢復狀態(tài))

Grain的運行環(huán)境: Silo

Grain作為Orleans中的最小執(zhí)行單元蔑担,需要一個運行環(huán)境運行以暴露服務露氮,而Silo就是這樣一個角色存在。如果說Grain是最小粒度的執(zhí)行單元钟沛,那么Silo就是最小的向外提供服務的執(zhí)行單元畔规。Silo通過將相關Grain進行組裝,暴露一組服務恨统,并在運行時管理Grain的生命周期叁扫。

Silo的宿主:Orleans Server

Silo本質上是一個進程單元,是需要運行在操作系統(tǒng)之上的畜埋,因為.NET Core的跨平臺特性莫绣,所以可以運行在Windows、Linux或Mac系統(tǒng)中悠鞍,當然也可以運行在相應的容器中对室。所以Orleans Server就是為Silo提供運行環(huán)境的宿主。

Silo的集群: Orleans Cluster

這里需要澄清一點咖祭,因為一個Orleans Server可以運行不同集群的Silo掩宜,所以Orleans Cluster 并非是指多個Orleans Server 組成的集群,而是指多個Silo(具有相同的ClusterId)組成的集群么翰。Orleans通過內置的成員協議提供集群管理牺汤,我們有時將其稱為Silo Membership。該協議的目標是讓所有Silo(Orleans Server)就當前活動的Silo集合達成一致浩嫌,檢測故障Silo檐迟,并允許新的Silo加入集群。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末码耐,一起剝皮案震驚了整個濱河市追迟,隨后出現的幾起案子,更是在濱河造成了極大的恐慌骚腥,老刑警劉巖敦间,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異桦沉,居然都是意外死亡每瞒,警方通過查閱死者的電腦和手機金闽,發(fā)現死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門纯露,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人代芜,你說我怎么就攤上這事埠褪。” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵钞速,是天一觀的道長贷掖。 經常有香客問我,道長渴语,這世上最難降的妖魔是什么苹威? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮驾凶,結果婚禮上牙甫,老公的妹妹穿的比我還像新娘。我一直安慰自己调违,他們只是感情好窟哺,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著技肩,像睡著了一般且轨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上虚婿,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天旋奢,我揣著相機與錄音,去河邊找鬼然痊。 笑死黄绩,一個胖子當著我的面吹牛,可吹牛的內容都是我干的玷过。 我是一名探鬼主播爽丹,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辛蚊!你這毒婦竟也來了粤蝎?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤袋马,失蹤者是張志新(化名)和其女友劉穎初澎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體虑凛,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡碑宴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了桑谍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片延柠。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖锣披,靈堂內的尸體忽然破棺而出贞间,到底是詐尸還是另有隱情贿条,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布增热,位于F島的核電站整以,受9級特大地震影響,放射性物質發(fā)生泄漏峻仇。R本人自食惡果不足惜公黑,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望摄咆。 院中可真熱鬧帆调,春花似錦、人聲如沸豆同。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽影锈。三九已至芹务,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸭廷,已是汗流浹背枣抱。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辆床,地道東北人佳晶。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像讼载,于是被迫代替她去往敵國和親轿秧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容

  • <<返回目錄 Grain 是 Orleans 中的重要素素咨堤。它是組成 Orleans 應用程序的基本組成部分菇篡,具有...
    _黑冰_閱讀 1,411評論 0 2
  • <<返回目錄 可用性 我可以在我的項目中使用Orleans了嗎? 當然可以一喘,Orleans使用MIT協議開源驱还,Nu...
    _黑冰_閱讀 1,828評論 0 1
  • feisky云計算、虛擬化與Linux技術筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,833評論 0 5
  • 引言 公司物聯網項目集成Orleans以支持高并發(fā)的分布式業(yè)務凸克,對于Orleans也是第一次接觸议蟆,本文就分享下個人...
    圣杰閱讀 2,345評論 1 13
  • 程序在運行過程中有時會莫名其妙出現代碼的某些約束或者執(zhí)行結果和理想狀況不一樣,正常邏輯怎么會出現這樣的情況萎战?到底發(fā)...
    BeckJin閱讀 8,285評論 1 12