首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重写设计为在一台机器上以分布式方式运行的TCPM意愿服务器?

如何重写设计为在一台机器上以分布式方式运行的TCPM意愿服务器?
EN

Software Engineering用户
提问于 2012-03-08 20:32:57
回答 3查看 259关注 0票数 1

我使用winsockets在C++上运行一个M意愿服务器。我的服务器不会支持200多个玩家。我有重新设计它的想法,所以它将使用多台服务器,而不是一台,所以,例如,每台服务器都可以照顾很多玩家,如果太晚,它可以将播放器的响应性转移到另一台服务器。不过,我不知道如何编写这样一个一致的游戏逻辑。这有什么技巧吗?

EN

回答 3

Software Engineering用户

发布于 2012-03-08 21:33:24

你有两个问题要问。

第一,要将单个服务器转换为分布式计算环境,我需要做什么?

您需要学习如何编写分布式计算应用程序。有很多关于这个的书。甚至还有大学课程教授这种技能。你也可以找到一些在线课程。一旦您了解到您将需要重新设计您的游戏,以便在分布式系统中工作。可能需要对您的代码进行几乎完全的修改。

第二,如何处理来自竞争对手的DDOS攻击?这里不讨论这个话题,但对于IT安全SE来说是个好问题

票数 2
EN

Software Engineering用户

发布于 2012-10-30 21:38:22

首先要考虑的是分区。也就是说,将玩家分成不同的组,通常不进行互动。有了更多的分区,您就可以拥有更多的服务器(您可以使用PCAM方法来更多地对http://www.mcs.anl.gov/~itf/dbpp/text/node15.html进行分区)。另一方面,让您这样思考的系统通常会同时将客户端连接到多个服务器上,以便进行故障转移(但这更难做到)。

票数 1
EN

Software Engineering用户

发布于 2012-10-30 23:10:13

你必须做的第一件事是分析是什么使它变慢或“滞后”。了解问题所在。这是操作系统的限制(打开的套接字太多了)吗?服务器是否使用100%的CPU?DDOS是否淹没了网络并减缓了它的速度?如果没有,您能否对代码进行任何分析以确定当前的瓶颈是什么?

你的代码是多线程的吗?如果没有,如果您的游戏是CPU绑定,一个很好的改进可能是有多个线程。这也是迈向分布式系统的第一步。您可以拥有一个客户端处理程序/连接池程序和一个单独的线程,该线程表示游戏状态,并从处理程序执行操作并应用它们。如果不了解更多的程序结构,就很难进行推测。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/138866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档