2013-01-05 51 views
0

我正在開發一個應用程序,該應用程序應該在具有不同任務/角色但同步的多臺機器上運行(某些負載均衡(遊戲)服務器,其中一些機器處理不同的世界,一臺機器處理聊天和庫存,其他機器處理傳入的網絡連接...)。分佈式服務器:網絡連接

剛開始時,應用程序實例應該在彼此之間創建TCP連接。但是,我將如何在C#中實現這一點?

+0

爲什麼原始TCP連接?爲什麼不在框架中使用WCF或更高一些的東西。你有什麼嘗試? – KingCronus

+0

@KingCronus它可能是錯誤的配置,但我的測試表明,WCF是(即使與TCP綁定)比原始tcp慢一個數量級。 –

+1

確定存在開銷,但從長遠來看,它會更有彈性(更不用說更容易編程)。聽起來像對我來說過早優化。 – KingCronus

回答

1

首先,您需要可以聯繫正確的遊戲服務器的負載平衡服務器。這可能是架構中最薄弱的一點。您可以通過使用DNS循環和多個負載平衡器來限制風險。

如果您的所有服務器都放在同一網絡上,則可以使用UDP廣播來讓負載平衡器自動發現所有遊戲服務器。這些數據包就像是「嘿,我是一個庫存服務器,連接到我」,然後負載平衡服務器將創建一個TCP連接,它僅用於監視遊戲服務器(CPU使用等等,以確保服務器沒有太多的工作)。