[英]Configuration per Service Fabric Instance
我正在設計一種服務結構無狀態服務,它需要每個實例的配置數據。 我最初的想法是創建命名分區,並使用PartitionInfo
獲取命名密鑰,使用共享只讀字典來加載每個實例的設置。 問題是,現在在內部訪問此實例(來自其他服務)需要一個分區鍵。 由於使用此方法的所有分區都將在內部提供相同的數據,因此我連接到哪個分區並不重要(我希望它是隨機的)。 所以,這給了我許多可能的方法來解決這個問題:
ServiceProxy.Create
隨機訪問分區(在我上面的嘗試中)。 以下解決方案不涉及分區:
以上所有都將解決我的問題。 這些方法有可能嗎?
編輯:我正在嘗試創建的服務示例:
假設我們有一個stackoverflow問題服務(簡稱SOQS)。 為了這個例子,假設一個用戶可以在任何時候連接到stackoverflow的websocket。 SOQS內部方法(發布到我的服務結構)有一個方法: GetQuestions()
。 每個SOQS都需要使用唯一的用戶名/密碼連接到stackoverflow,並且當通過websocket推送新問題時,它們會添加到內部問題列表中。 SOQS的GetQuestions()
方法(從我的服務結構內部調用)將提供相同的問題列表。 然后,我可以通過添加更多實例來加載平衡(只要我有更多的用戶名/密碼),然后可以分發我的結構內部的負載。 我可以調用ServiceProxy.Create<SOQS>()
連接到一個隨機實例來獲取我的問題列表。
聽起來你正在尋找擁有多個actor的服務類型,每個actor都有自己的配置。 它們不是具有唯一配置的相同服務的多個副本,它將是一個(當然具有副本)服務實例作為單例,以及每個實例的各個actor。
作為一個例子,您可以擁有用戶服務(猜測自提及用戶名字符串后的內容)從某些外部存儲機制讀取的用戶名列表以及每個用於內部跟蹤的實例ID的長度。 然后,該服務將為每個創建一個actor,並具有自己的配置信息。 然后,用戶服務將成為與各個參與者之間進行消息傳遞的路由器。
我不完全確定這是你正在尋找的,但另一種選擇可能是創建一個額外的配置服務來為每個實例提供獨特的配置。 在啟動無狀態服務時,您只需請求一個隨機(或非隨機)配置對象(如json字符串),並在初始化期間引導服務。 這樣,您就不必亂用分區,因為每個無狀態實例都會觸發它自己的Startup.cs(或等效的)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.