我們建議學生使用兩種類型的專案:
第一種類型包括探勘、開放式、研究導向的專案,以在 中 Orleans啟用新功能。 這些專案通常具有廣泛的範圍,並通常適合最後一年學習的M.S.或Ph.D.學生,以及高級本科生。 這些項目的最終目標是將想法和設計貢獻給 Orleans。 我們不一定預期這些項目中產生的程式代碼會直接參與此存放庫,不過,這很好。
第二種類型包括學生教育的想法。 這些是可以建立在 Orleans 之上的有趣應用程式,或者是為 Orleans 新增功能的一些新構想。 這些專案適用於進階本科或研究生課程,讓學生了解雲端運算和現代分散式技術,並想要獲得建置雲端應用程式的實際實際經驗。 我們並不預期這些專案中產生的程式代碼會直接參與此存放庫。
研究專案
自動調整縮放:在此專案中,學生可以從探索現有的自動調整縮放機制開始,藉以控制 Azure 自動調整縮放中的資源配置。 下一個步驟包括探索由 Orleans 收集的各種統計數據及資源消耗指標,並將這些指標作為 Azure 自動調整的輸入。 此專案的進階階段可能涉及改善回應彈性變更的內部 Orleans 機制,例如實作即時動作專案移轉以減少利用新資源所花費的時間。
自動生成的 Orleans 雲端服務前端:此項目可無縫地將行為者模型延伸 Orleans 至 HTTP 世界。 專案的啟動階段包括根據 .NET 介面和元數據動態生成演員的 HTTP 端點。 主要部分牽涉到自動產生前端以支援 Web 套接字和雙向串流數據,這需要以優化來產生複雜的程式代碼,才能達到高效能。 它也需要注意容錯,以維護伺服器重新啟動和用戶端重新連線和移轉的串流會話高可用性,這是一個重大的研究挑戰。
Entity Framework 的儲存提供者:此專案牽涉到 Orleans 讓物件將其狀態儲存在資料庫中,然後查詢它。 這可能包括在 SQL Azure Database 上使用 Entity Framework (EF) 新增對Orleans物件持久性的支援,EF 是 Microsoft 的開放原始碼 .NET 物件–關係型對應程式,並透過 LINQ 查詢公開該數據。 您可以使用標準資料庫基準檢驗和/或自訂 Orleans' 應用程式來評估和調整實作。
分散式系統效能評定:定義適用於分散式系統的基準檢驗清單,例如 Orleans。 基準檢驗應用程式可能與 TPC 資料庫基準檢驗 或 UC Berkeley「平行矮人」類似,而且可用來描述分散式架構的效能和延展性。 請考慮針對 Orleans 開發新的基準檢驗,例如,比較儲存供應商的效能。
基於流的宣告式數據流語言:定義及建置類似 Trident-Storm 的宣告式語言於 Orleans 流。 開發優化工具,以設定串流處理,以將整體成本降至最低。
用戶端裝置的程式設計模型:延伸 Orleans 至用戶端裝置,例如感測器、手機、平板電腦和桌面計算機。 啟用粒紋邏輯以在用戶端上執行。 可能支援階層分割,也就是動態決定在裝置上執行哪些部分的程序代碼,以及哪些部分會卸除至雲端。
針對粒紋/動作項目類別、次要索引的查詢:建置分散式、可調整且可靠的粒紋索引。 這包括正式定義查詢模型並實作分散式索引。 索引本身可以實作為Orleans粒子和/或儲存在資料庫中。
大規模模擬: Orleans 非常適合用來建置大規模的模擬。 探索 Orleans 在不同仿真中的應用,例如蛋白質互動、模擬退火、網路模擬等。
課程專案
物聯網應用程式:例如,應用程式可讓感測器/裝置向雲端報告其狀態,雲端中每個裝置由Orleans行為者表示。 用戶可以使用網頁瀏覽器連線到代表其裝置的實體,並檢查其狀態或進行控制。 此專案牽涉到掌握數種現代化雲端技術,包括 Azure、最小 OrleansWeb API、ASP.NET Core SignalR,以將命令從雲端串流回裝置,以及撰寫感測器/裝置/手機應用程式。
大型可擴展的類 Twitter 雲端聊天服務基於 Orleans:每個使用者都可以使用 Orleans 來表示角色,其中包含其追隨者清單。
以 Facebook 為基礎的類似 Facebook 社交應用程式 Orleans:每個使用者都可以被表示為一個 角色,其中包括朋友清單和一個牆壁讓朋友可以留言。
簡單記憶體提供者:為記憶體系統新增記憶體提供者,例如索引鍵/值存放區或資料庫系統。 簡單的程式可以使用 Orleans 串行化器,如同現有的 Azure 表格儲存服務提供者一樣。 更複雜的方法會將 類別的狀態變數 Orleans 對應至儲存系統的細部結構。 上述研究項目中提到的,複雜的部分是 Entity Framework 儲存提供者。 比較不同儲存提供者的不同類型和動作項目狀態大小的效能。
與其他分散式應用程式架構的比較:採用針對其他應用程式架構撰寫的範例應用程式,例如 Google App Engine 或 Akka,並將其轉譯為 Orleans。 藉由比較應用程式,摘要說明每個架構的相對優缺點。
結束的研究專案
以下是先前成功研究項目的數個範例:
分散式記錄分析、相互關聯和偵錯:偵錯大規模分散式系統是一項具有挑戰性的工作,因為分散式元件之間的大量數據和複雜的動態互動,在不同進程和不同的計算機上執行。 此專案的目標是分析本主題的先前技術,提出解決方案,然後實作原型工具,以收集、關聯和分析跨多台計算機分散式應用程式運行環境的應用程式錯誤記錄檔數據。 這涉及從各種觀點探索問題空間,包括:
從分散式 Orleans 運行時間環境中各種記錄擷取機制,有效記錄、收集和分析失敗資訊的方法。
機器學習的可能應用用於尋找記錄中能發出嚴重生產問題訊號的模式,然後以近乎即時的方式將這些模式偵測為生產監控的工具。
幫助個別開發人員即時偵錯他們應用程式運行中的問題的方法。
此專案已成功執行,併產生已發佈的 論文 PAD:多伺服器分散式系統中的效能異常偵測 ,以及分散式記錄分析工具的概念實作證明。
Horton - 分散式圖形資料庫:Horton 是一個研究專案,用來建置系統來儲存、管理和查詢大規模的分散式圖表。 它完全實作為 Orleans 應用程式。 該項目產生了一些 出版物 和幾個非常成功的學生專案。