Orleans 優點

Orleans 的主要優點包括:

  • 開發人員生產力,甚至是非專家程式設計人員。
  • 預設即有透明延展性,無須程式設計人員特別努力。

開發人員生產力

Orleans 程式設計模型將藉由提供下列關鍵抽象概念、保證和系統服務,提升專業與非專業程式設計人員的產能。

熟悉的物件導向程式設計 (OOP) 範例

粒紋為 .NET 類別,會使用非同步方法實作宣告的 .NET 精細度介面。 程式設計人員將粒紋視為可以直接叫用其方法的遠端物件。 這將提供程式設計人員熟悉的 OOP 範例,透過將呼叫方法轉為訊息、路由至正確的端點、叫用目標粒紋的方法,及以透明的方式處理錯誤和極端案例。

單一執行緒執行粒紋

執行階段保證粒紋永遠不會同時執行一個以上的執行緒。 結合隔離其他粒紋,程式設計人員永遠不會面臨粒紋層級的並行存取,且絕對不需要使用鎖定或其他同步處理機制來控制共用資料的存取。 單靠這項功能就能讓非專業程式設計人員開發分散式應用程式更易處理。

透明的啟動過程

此執行階段只會在收到處理訊息後,才會啟動粒紋。 這將清楚分隔建立粒紋的參考,對應用程式程式碼而言為可見及可控制的,與在記憶體中實體啟動,對應用程式而言為透明的粒紋。 這類似於虛擬記憶體,因為其決定何時要「移出分頁」(停用) 或「置入分頁」(啟動) 細微性;無論細微性在任何特定時間點是否位於實體記憶體中,應用程式都無法中斷存取以邏輯方式所建立細微性的完整「記憶體空間」。

透明啟動能夠透過粒紋硬體資源集區的放置和移轉,啟用可調整的動態負載平衡。 這項功能是傳統動作項目模型的重大改善,其中動作項目存留期是受應用程式所管理。

位置透明度

粒紋參考 (proxy 物件),為程式設計人員用來叫用粒紋的方法,或用於傳遞到其他僅包含邏輯粒紋身分識別的元件。 粒紋的邏輯身分識別翻譯至其實體位置及對應的訊息路由,是由 Orleans 執行階段以透明的方式完成。

應用程式程式碼會與粒紋進行通訊,同時保持遺忘其實體位置,這可能會因為失敗或資源管理、或是因為呼叫時停用粒紋,而隨時間變更。

與永續性存放區的透明整合

Orleans 允許將粒紋記憶體內部狀態的宣告式對應至永續性存放區。 它會同步處理更新,以透明方式保證呼叫端只有在持續狀態成功更新之後才會收到結果。 擴充和/或自訂可用的現有持續性儲存體提供者集十分簡單。

自動傳播錯誤

執行階段會以非同步和分散式 try/catch 的語意,自動將未處理的錯誤傳播至呼叫鏈。 因此,應用程式內不會遺失錯誤。 這可讓程式設計人員將錯誤處理邏輯放在適當的位置,而不需要繁瑣地手動傳播每個層級的錯誤。

預設為透明延展性

Orleans 程式設計模型的設計目的,是要引導程式設計人員透過數個規模順序來調整應用程式或服務時可能成功的路徑。 這是藉由納入經過實證的最佳做法和模式,並提供有效率的低層級系統功能實作來完成。

以下是一些讓啟用延展性和效能的關鍵因素:

應用程式狀態的隱含粒紋資料分割

程式設計人員可使用粒紋做為可直接定址的實體,隱含地細分其應用程式的整體狀態。 雖然 Orleans 程式設計模型並未規定粒紋應該多大或多小,但在大多數情況下,最好有相當大量的粒紋 (數百萬或更多),其中每個都代表應用程式的自然實體,例如使用者帳戶或採購單。

透過個別可定址及執行階段所抽象化的實體位置,Orleans 在平衡負載並透明且一般地處理作用點方面具有極大的彈性,且一般而言,不需要應用程式開發人員提供任何想法。

調適性的資源管理

當其他粒紋與其他粒紋進行互動時,不會假設其位置。 因為位置透明,所以執行階段能夠以非常動態的方式管理及調整可用硬體資源的配置。 執行階段的做法是為計算叢集中所放置和移轉的粒紋進行決策微調,以因應載入連入要求不會失敗的通訊模式。 藉由建立多個特定粒紋的複本,執行階段必要時可以增加粒紋的輸送量,而不需對應用程式程式碼進行任何變更。

多工通訊

Orleans 中的粒紋有邏輯端點,而其之間的訊息透過一組固定的全部對全部實體連線 (TCP 通訊端),進行多工傳送。 這可讓執行階段裝載數以百萬計可定址實體,而每個粒紋只會造成低 OS 負荷。 此外,啟用及停用粒紋並不會產生註冊/取消註冊實體端點的成本,例如 TCP 通訊埠或 HTTP URL,或甚至關閉 TCP 連線。

有效率的排程

執行階段會使用經效能最佳化的 .NET 執行緒集區排程大量單一執行緒精細度的執行。 以非封鎖接續型樣式 (Orleans 程式設計模型的需求) 撰寫粒紋目程式碼,應用程式程式碼就會在沒有爭用的情況下,以非常有效率的「合作」多執行緒方式執行。 這可讓系統達到高輸送量,並在絕佳穩定性下以非常高的 CPU 使用率 (高達 90%) 執行。

事實上,粒紋數目在系統中的成長和負載增加,並不會導致額外執行緒或其他作業系統的基本型別,將有助於個別節點和整個系統的延展性。

明確的非同步

Orleans 程式設計模型使非同步性質的分散式應用程式更明確,並輔助程式設計人員撰寫非封鎖的非同步程式碼。 這會結合非同步傳訊與有效率的排程,可啟用大量的分散式平行處理原則和整體輸送量,而不需要明確使用多執行緒。