2016-11-05 49 views
0

我們開發了類似TeamViewer的服務,其中客戶端通過SSL連接到我們的中央服務器。其他客戶端也可以連接到服務器,並且我們可以通過我們的服務設置隧道以允許在沒有NAT或防火牆問題的情況下實現點對點連接。服務結構和TCP連接

這適用於Azure雲服務,但我們希望從Azure雲服務中移除。 Service Fabric似乎是要走的路,因爲它支持ARM,並且允許更多細粒度的服務,並使系統的更新部分更加容易。

我知道Service Fabric中的微服務可以是有狀態的,但所有示例都使用持久數據作爲狀態。在我的情況下,TCP連接也是該州的一部分。是否可以使用TCP與服務結構?

TCP端點應該在相同的實例上保持活動狀態(幾天),所以這會使整個服務結構模型變得更加困難。

回答

1

當然,你可以讓用戶通過任何你想要的協議連接到你的服務。您的服務對我來說聽起來非常有狀態,就像用戶會話狀態有狀態一樣 - 您希望用戶返回到其數據所在的相同位置。在你的情況下,這個「數據」是一個TCP連接。但是不能保證TCP端點將在任何日子裏保持活動系統 - 機器失敗,軟件崩潰,操作系統被修補等。服務結構有狀態服務對此非常重要。有狀態服務對另一臺機器的故障切換非常快(毫秒)。當然,您實際上不能複製實時連接,但您確定可以複製重新建立連接時需要的所有元數據。

+0

當TCP連接終止時(客戶端簡單地重新連接到一個可能的不同實例),我們很有彈性。同時,結果被緩衝(在有限的時間段內)。我仍然懷疑是否使用服務結構。 Docker羣可能對我們的服務有用,我猜Azure中Docker對Windows的支持將會在不久的將來出現。 –