【问题标题】:Distributed server: Network connections分布式服务器:网络连接
【发布时间】:2012-12-19 20:34:54
【问题描述】:

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

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

【问题讨论】:

  • 为什么是原始 TCP 连接?为什么不在框架中使用 WCF 或更高级别的东西。你试过什么?
  • @KingCronus 可能配置错误,但我的测试表明 WCF(即使使用 TCP 绑定)比原始 tcp 慢一个数量级。
  • 当然会有开销,但从长远来看,它会更有弹性(更不用说更容易编程了)。对我来说,这听起来像是过早的优化。
  • 听起来你只是在问如何在 C# 中使用套接字。是否有某些原因打开 TCP 连接通常不适合您的需求?

标签: c# networking load-balancing distributed-computing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-11-09
    • 2020-03-20
    • 2018-04-18
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多