2013-01-05 186 views
0

我正在开发一个应用程序,该应用程序应该在具有不同任务/角色但同步的多台机器上运行(某些负载均衡(游戏)服务器,其中一些机器处理不同的世界,一台机器处理聊天和库存,其他机器处理传入的网络连接...)。分布式服务器:网络连接

刚开始时,应用程序实例应该在彼此之间创建TCP连接。但是,我将如何在C#中实现这一点?

+0

为什么原始TCP连接?为什么不在框架中使用WCF或更高一些的东西。你有什么尝试? – KingCronus

+0

@KingCronus它可能是错误的配置,但我的测试表明,WCF是(即使与TCP绑定)比原始tcp慢一个数量级。 –

+1

确定存在开销,但从长远来看,它会更有弹性(更不用说更容易编程)。听起来像对我来说过早优化。 – KingCronus

回答

1

首先,您需要可以联系正确的游戏服务器的负载平衡服务器。这可能是架构中最薄弱的一点。您可以通过使用DNS循环和多个负载平衡器来限制风险。

如果您的所有服务器都放在同一网络上,则可以使用UDP广播来让负载平衡器自动发现所有游戏服务器。这些数据包就像是“嘿,我是一个库存服务器,连接到我”,然后负载平衡服务器将创建一个TCP连接,它仅用于监视游戏服务器(CPU使用等等,以确保服务器没有太多的工作)。