【问题标题】:Understanding of C++ application load balancingC++应用负载均衡的理解
【发布时间】:2012-08-11 13:00:39
【问题描述】:

说,我有 1 个 CPU 密集型 C++ 控制台应用程序(游戏服务器)。我是否需要专门对其进行编程才能在多台机器上扩展 1 个应用程序,或者是否有特殊的软件可以使 2-3 个服务器充当单个服务器?

更新:我的登录服务器与游戏服务器分开。服务器有一个所有玩家聚会的地方,但没有这样的cpu工作。最多的游戏线程,玩家创建一个游戏 - 1个线程。

据我了解,我需要对应用程序进行编程才能在另一台服务器计算机上创建游戏实例?

【问题讨论】:

  • 如果你不让它在不同的实例上工作,你可能会遇到一些有趣的事情,比如用户能够同时登录应用程序的不同实例。
  • 是的,我没有将它编程为与不同机器上的不同服务器实例一起工作。首先我想在不重新编码的情况下找到解决方案

标签: c++ performance scalability load-balancing


【解决方案1】:

您必须以这样一种方式对服务器进行编程,使其知道自己可能存在其他实例 - 例如,通过仅将部分任务作为其责任,其他实例将知道其他人正在这样做不要吃两次。

对于负载平衡 - 有一些软件可以自动负载平衡,但负载平衡只有在实际服务器支持的情况下才能正常工作。

【讨论】:

  • 那么,不可能只启动软件,将 3 台服务器刀片相互连接并运行会认为它是单个服务器的单个应用程序吗?
  • 这真的取决于服务器。如果它只是输入-处理-输出,那么它可能会起作用。但如果它执行一些更复杂的逻辑、保持状态、缓存等,那么答案很可能是“不”。
【解决方案2】:

您需要在编程时考虑到负载平衡。

如果您已经在运行它,请尝试使尽可能多的东西可线程化,以使其能够在多 CPU/多核机器上使用额外的内核/额外的 CPU。

然后看看将元游戏信息移动到单独的机器上来处理登录信息等。

【讨论】: