我的游戏需要一个大厅,玩家将在这里被分配一个专用/独立的服务器,然后他们将真正玩游戏。这个大厅相当简单,唯一的操作是Login,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();
}
}
}