2016-08-09 49 views
1

因此,我正在研究如何將Service Fabric用於非常大的應用程序。我需要的一件事是按名稱進行分區的服務,這在應用程序清單級別看起來相當微不足道。服務結構動態分區

但是,我真的希望能夠在不需要重新發布應用程序的情況下即時添加和刪除命名分區。

每個分區都代表我們的承租人,我們希望有一個後端管理應用程序來添加新租戶。

每個分區將是一個長時間運行的應用程序,它啓動一個使用自定義協議的TCP服務器,我需要能夠通過羣集中的名稱查詢地址。

服務結構是否可行?如果有的話,是否有關於此的任何文檔,或者我應該尋找的東西?

回答

6

每個分區代表我們的承租人的等價物,我們希望有一個後端管理應用程序來添加新承租人。

您需要重新考慮您的模型。分區用於分配數據,以便快速讀取和讀取數據。但在同一個邏輯容器內。

如果您想在Service Fabric中執行一些多租戶,則可以多次將應用程序部署到羣集。

從Visual Studio看來,你只能有一個應用程序的實例。這是因爲在ApplicationManifest.xml中定義了DefaultServices。這對於在本地服務結構集羣上開發是可以的。對於生產,您可能想考慮使用powershell部署應用程序,這將開放多次使用每個實例的設置部署相同應用程序的可能性(如:租戶名稱,安全性...)

而且不僅應用程序可以多次部署,也是有狀態/無狀態的服務。所以你可以有一個應用程序,併爲每個租戶部署一個特定類型的服務。可以通過Service Fabric內的命名服務找到服務,請參閱FabricClient類獲取更多相關信息。

+1

謝謝。我發現我也可以使用FabricClient創建服務實例,所以我不需要在後端弄亂PowerShell。看起來這是要走的路。 – Gerald

4

無法更改現有應用程序的分區計數。 從https://azure.microsoft.com/en-us/documentation/articles/service-fabric-concepts-partitioning/#plan-for-partitioning(重點煤礦):

在極少數情況下,你可能會需要更多的分區,比你最初選擇。由於在事實後無法更改分區計數,因此需要應用一些高級分區方法,例如創建相同服務類型的新服務實例。您還需要實施一些客戶端邏輯,根據客戶端代碼必須維護的客戶端知識將請求路由到正確的服務實例。

我們鼓勵您進行前期容量規劃,以確定您將需要的最大分區數 - 如果您最終需要更多分區,則需要實施一些特殊的客戶端處理以應對。

2

我們遇到了同樣的問題,最終爲每個租戶創建了一個服務實例。這很容易做到,並且可以擴展到任何數量的租戶。