20190127-Orleans與SF小夥伴的部分問答
Orleans
- 怎麼部署到伺服器?
- 方式1:Orleans 服務端寄宿在Web應用中,將Web應用部署到伺服器
- 方式2:通過SF/K8s部署到伺服器
- 不同伺服器上的穀倉和谷如何調配?
- 由Orleans框架排程。當部署到有一組節點的叢集時,Orleans在內部實現了一組協議,來發現和維護叢集中Orleans silo的成員身份,包括檢測節點故障和自動重新配置。
-
谷和穀倉如何連線
var silo = new SiloHostBuilder() [...] // Endpoints .ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000) [...]
Orleans silo有兩種典型型別的端點配置:
- silo-to-silo端點(siloPort),用於同一叢集中的silo之間的通訊
- client-to-silo端點(gatewayPort),用於同一叢集中的客戶端和silo之間的通訊
在示例中,我們使用幫助方法.ConfigureEndpoints(siloPort: 11111, gatewayPort: 30000),將用於silo-to-silo通訊的埠設定為11111和用於閘道器的埠設定為30000。
- 介面、服務、actor概念的邊界
- 結合OrleansSample.zip示例程式理解介面、服務、actor的概念
- 明確穀倉的含義
- Grain的集合
-
結合OrleansSample.zip示例程式理解
Actor
- 無狀態的Actor上資料如何處理
- 通過呼叫actor的方法,對actor的欄位資料CRUD
示例:
Grain:
public class HelloGrain : Orleans.Grain, IHello { private readonly ILogger logger; private string tempData; public HelloGrain(ILogger<HelloGrain> logger) { this.logger = logger; } Task<string> IHello.SayHello(string greeting) { var result = string.IsNullOrEmpty(tempData) ? $"You said: '{greeting}', I say: Hello!" : $"You said:'{tempData}-{greeting}'"; return Task.FromResult(result); } public Task SetValue(string temp) { tempData = temp; return Task.CompletedTask; } }`
呼叫:
public class HomeController : Controller { private IClientFactory clientFactory; public HomeController(IClientFactory clientFactory) { this.clientFactory = clientFactory; } public async Task<IActionResult> Index() { var client = clientFactory.GetClient(); var actor = client.GetGrain<IHello>(0); var r = await actor.SayHello("Kiwi"); return Content(r); } public async Task SetValue(string str) { var client = clientFactory.GetClient(); var actor = client.GetGrain<IHello>(0); await actor.SetValue(str); } }
- Actor持續化的過程怎麼實現
- 多個物理分離的服務如何連線在一起
orleansmembershiptable
- Orleans+Actor 怎麼部署 實際使用
-
相關回答 Orleans 問題 1
SF
- SF與IIS的區別是什麼?
-
Internet Information Service(IIS)是windows開設web網頁服務的元件,提供Web、FTP、SMTP等服務,是用來搭載
網站執行程式
的平臺。 - Service Fabric 是一款分散式系統平臺,可方便使用者輕鬆打包、部署和管理可縮放的可靠微服務和容器。
-
Service Fabric 可幫助你構建使用微服務方法的應用程式,它提供:
- 提供系統服務的平臺,用於部署、升級、檢測和重啟失敗的服務、發現服務、路由訊息、管理狀態和監視執行狀況。
- 能夠部署在容器中執行或作為程序執行的應用程式。 Service Fabric 是容器和程序 Orchestrator。
- 有助於以微服務形式生成應用程式的程式設計模型,如:ASP.NET Core、Reliable Actors。
- SF的節點之間如何保證同步(例:一個節點死掉之後,再復原的時候依據的資料是怎麼獲得的)
-
可靠性子系統通過使用複製器、故障轉移管理器和資源平衡器提供一種機制,使得 Service Fabric 服務的狀態高度可用。
複製器確保主服務副本中的狀態更改會自動複製到輔助副本,從而維護服務副本集中主副本和輔助副本之間的一致性。 複製器負責副本集中副本間的仲裁管理。 它與故障轉移單元進行互動以獲取要複製的操作列表,重新配置代理為其提供副本集的配置。 該配置指示操作需要複製到哪些副本。 Service Fabric 提供名為 Fabric Replicator 的預設複製器,程式設計模型 API 可使用它來使服務狀態高度可用和高度可靠。
故障轉移管理器確保向群集新增節點或從群集中刪除節點時,會自動在可用節點間重新分發負載。 如果群集中的節點失敗,群集會自動重新配置服務副本以維持可用性。
Resource Manager 在群集中的失敗域之間放置服務副本,並確保所有故障轉移單元正常執行。 Resource Manager 還會平衡群集節點基礎共享池中的服務資源,從而獲得最佳的統一負載分佈。 - SF中的微服務支援備份還原、容錯域等概念實現高可用
- 相關參考Reliable Services 概述
- SF與docker的關係
- SF是否可以做到負載均衡
- 一般sf上的微服務之前,會配置專門的負載均衡器。
- 支援。
- 在SF中,是否一個node對應多個伺服器
- Service Fabric 群集是一組通過網路連線在一起的虛擬機器或物理計算機,微服務會在其中部署和管理。
- 群集可以擴充套件到成千上萬臺計算機。
- 屬於群集一部分的計算機或 VM 稱為節點。需為每個節點分配節點名稱(字串)。 節點具有各種特徵,如放置屬性。 每個計算機或 VM 都有一個自動啟動 Windows 服務 FabricHost.exe,此服務在引導時開始執行,並啟動兩個可執行檔案:Fabric.exe 和 FabricGateway.exe。 這兩個可執行檔案構成了節點。在開發或測試方案中,可以通過執行 Fabric.exe 和 FabricGateway.exe 的多個例項,在單臺計算機或 VM 上託管多個節點。
總結:
上面表述摘自官方文件,可以理解為:生產環境,一個node對應一個伺服器(一臺物理機或一個VM);測試開發環境,單臺計算機或VM可以託管多個node
- actor如何跨伺服器通訊
-
Silo對訊息進行路由的過程分為以下3步
- 查詢本地的Actor Activation資料字典,如果找到了,直接路由到本地的Actor Activation進行訊息處理
- 如果本地的Actor Activation資料字典中沒有這個Grain,則查詢快取字典,找到後根據字典中的Silo地址,然後將訊息路由到對應的Silo
- 如果快取中也沒找到,會根據GrainId,通過Consistent Hash來獲得目標Silo,進行遠端的Silo查詢GrainId對應的啟用,然後儲存到本地的快取字典中
- 相關參考 Orleans問題3和Actor問題3
- 如果SF部署兩個cloud,是兩個不同程序嗎?
- Service Fabric 是容器和程序Orchestrator。能夠部署在容器中執行或作為程序執行的應用程式。
- sf叢集中的協調器,幫助執行其他程序。協調器的數量和機制沒有看到相關文件。
- 如果Cloud_A下有一個應用程式專案;Cloud_B下有一個應用程式專案,是兩個程序。