我的游戏需要一个玩家聚集的大厅,然后再分配一个专用/单独的服务器,他们将在其中实际玩游戏。这个大厅相当琐碎,唯一的操作是登录、Ping、StartGame。服务器只需要保留有关客户端的基本信息,他是否登录,而不需要保留太多其他资源。
我用一个简单的 TCP 服务器做了一些测试,在开销得到我之前,我最多可以支持大约 10000 个连接。因此,为了支持 100000 名玩家,我需要部署一个服务器场,至少 10 台机器,并在服务器之间添加同步......
我正在研究使用 UDP 做同样的事情的可能性。我不担心 UDP 的无连接或不可靠的性质,我理解这一点,并且有大量的 UDP 与 TCP 文章。我的问题本质上是实用的/建筑的。在上述场景中,实际限制是多少,单个 UDP 服务器每秒可以处理多少个数据包?期望 UDP 服务器每秒可以处理 100000 个数据包是否现实?哪台机器?Amazon EC2 可以提供的任何东西。
任何见解或进一步阅读将不胜感激。
编辑:评论表明我可以获得无限(100000+)个 TCP 连接......我一定遗漏了一些东西,但是,任何人都可以让下面的代码达到 100000 个连接。
public class Server
{
public static void main(String[] args)
{
System.out.println("Listening...");
try
{
ServerSocket ss = new ServerSocket(22222);
ArrayList<Socket> sockets = new ArrayList<Socket>();
while (true)
{
sockets.add(ss.accept());
if (sockets.size() % 100 == 0)
{
System.out.println(String.format("Received %d connections.", sockets.size()));
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
和
public class Client
{
public static void main(String[] args)
{
ArrayList<Socket> sockets = new ArrayList<Socket>();
try
{
while (true)
{
sockets.add(new Socket("localhost", 22222));
}
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}