2017-03-03 66 views
0

我在具有動態端點的多個節點上有無狀態服務。通過Azure服務結構中的RPC端點連接到節點實例

我想與他們的動態端點使用ServiceProxy像這樣的:

localhost:32010+dd1d0a27-1dec-49db-8960-83bf001355be-131329828855327547

如何使用ServiceProxy連接到使用該端點的特定節點的實例?

我實例化ServiceProxy這樣的:

ServiceProxy.Create<T>(new Uri("fabric:/XXX));,這隻能找到實例節點之一。我想指定要通過端點連接的節點。我怎麼做?

+0

您是否嘗試過傳遞listenerName參數? – cassandrad

+0

@cassandrad不會幫助,因爲所有的偵聽器名稱都是相同的,因爲它們都是相同的,只是在不同的節點上 – jugg1es

+0

我認爲有可能指定具有不同端口的n個端點 - 每個實例一個 - 並註冊在每個特定的節點上只有一個節點,那麼Remoting將能夠在命名服務的幫助下找到特定的實例。那是我的計劃。我不知道這是行不通的。 – cassandrad

回答

0

無法使用Service Remoting連接到無狀態服務的特定實例。您只能針對有狀態服務的特定分區/副本。

看看this SO answer

您的選項基本上都是:

  • 更改爲HTTP通信
  • 重新設計,你可能要問自己是爲什麼有狀態服務

另一件事,你希望定位特定的實例或節點?這是因爲你不會有一些性能優勢嗎?您是否有其他類型的客戶端到您想要定位的服務?

+0

我想定位一個特定的實例,因爲我正在編寫一個負載均衡器,並且我正在使用本地羣集(我們無法使用Azure),並且沒有任何負載均衡可用於本地羣集部署告訴。 – jugg1es

+0

對於SF反向代理,您可以通過查看[此項目](https://github.com/spoorendonk/service-fabric-reverse-proxy)獲得一些幫助,這不完全是您想要做的,但在那裏是一些相似的部分。 – yoape