簡體   English   中英

每個服務結構實例的配置

[英]Configuration per Service Fabric Instance

我正在設計一種服務結構無狀態服務,它需要每個實例的配置數據。 我最初的想法是創建命名分區,並使用PartitionInfo獲取命名密鑰,使用共享只讀字典來加載每個實例的設置。 問題是,現在在內部訪問此實例(來自其他服務)需要一個分區鍵。 由於使用此方法的所有分區都將在內部提供相同的數據,因此我連接到哪個分區並不重要(我希望它是隨機的)。 所以,這給了我許多可能的方法來解決這個問題:

以下解決方案不涉及分區:

  • 基於每個實例的配置。 這篇文章對於提出解決方案沒有太大幫助。 每個實例獨有的配置部分將是最理想的解決方案。
  • 創建命名實例,並使用該名稱作為用戶名(基本上將字符串附加到非分區實例)
  • 通過索引獲取實例,並對共享的只讀字典使用索引來獲取用戶名。
  • 以某種方式使用InitializationData(請參閱此文章 )獲取用戶名字符串(如果InitializationData每個實例可以是唯一的)。

以上所有都將解決我的問題。 這些方法有可能嗎?

編輯:我正在嘗試創建的服務示例:

假設我們有一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM