2010-01-13 34 views
1

我正在設計將使用WCF與客戶端進行通信的客戶端服務器應用程序。它可能會變得沉重負載,並希望以分佈式的方式進行設計。爲此,我已將應用程序分成若干服務。可以運行N個服務來處理這些請求。分佈式應用程序的WCF服務註冊

  • 登錄服務
  • 遊戲服務
  • 客房服務

登錄服務將能夠在其上具有負載平衡器。它會將請求發送給正在運行的其中一個遊戲服務(可能有N個遊戲服務在不同的機器上運行)。

我試圖找出是如何可以在登錄服務瞭解遊戲服務。我可以想到(在這一點上是一個真正的高層次)兩種解決方案:

1)當遊戲服務出現時,它會在數據庫中創建一個記錄,說明它是誰以及它在哪裏,登錄服務在那裏檢查找到所有的服務。這似乎有問題,服務下降,保持名單最新。

2)當一個新的服務加入其接觸登錄服務,(不知道如何會發生,假定某種如何很難編碼),並與服務註冊。然後,登錄服務可以維護DHT或其中的一些列表,以便他們知道在哪裏路由請求。

我是新來的整個分佈式應用程序世界,並試圖找出做事情的好辦法。這個項目部分是爲了我自己的知識和收穫,但也希望它能夠發展成爲一個有用的應用程序。

謝謝

回答

2

我會認爲這是一個服務總線的完美應用。讓它成爲你的服務所在的平臺。總線提供了一個關於網絡實際物理配置的抽象層,它是主機,允許可擴展性......這些都是基礎。

使用總線,您可以跨企業的關注跨服務進行通信,或者更重要的是,在發佈/訂閱的方式進行。

我會避免在#1的數據庫的方法保持服務的清單,而不是保持在公交車的運行配置信息。使用pub/sub方法,並且可能路由包含在其中的信息,您應該採用正確的方法。

看一看NServiceBusMassTransit

+0

邁克您好,我想這個回家的火車上今天已開始下了類似排序的道路。感謝您的描述和鏈接。 MassTransit實際上響了一聲鍾,就在前一段時間看到了一個研討會。 – Jon 2010-01-13 20:16:17

+1

喬恩, 有趣的是,我一直在聽NServiceBus Udi Dahan的一集Hanselminutes。 (http://www.hanselminutes.com/default.aspx?showID=194) 此外,不存在與從地下的球員的優雅的代碼播客(情節http://elegantcode.com/2009/03/18 /代碼鑄-25-masstransit /)。 我也沒有任何經驗,但我強烈尋找服務巴士的想法,在工作中的一些東西。 祝你好運! – 2010-01-13 21:13:10

+0

偉大的鏈接,謝謝 – Jon 2010-01-13 23:06:01