Ben*_*eri 6 java architecture http redis server
我有一个将在几个实例上运行的游戏服务器。
世界1,世界2,世界3
每个世界都是一台运行在不同IP地址上的服务器。
列出了游戏应具备的功能:
我可以想到两种方法来做到这一点:
方法1-登录服务器TCP / IP
创建一个中间人服务器。当客户端连接到世界时,该世界服务器将发送登录请求数据包以输入所输入的用户凭据,并且登录服务器将检查数据库并响应身份验证结果,如果成功,则将在世界。
Login Server将始终使用在线玩家列表,每个玩家的状态,他所处的世界等等来更新所有世界。
方法2
与方法1相同,但代替登录服务器,使用HTTP API服务器,并使用Redis服务器通过事件相互更新。我为什么认为这更好?因为将Web应用程序集成到游戏中会更容易,所以允许用户通过Web应用程序进行连接和彼此聊天。
为了在方法1中做到这一点,您需要向TCP / IP登录服务器添加新的隧道以支持WebSocket连接。
对不起,图纸不好。
方法2是否可行?您认为哪种方法更好?如果还有其他方法可以考虑?
您尚未给出许多考虑因素,但我将尝试给出一个概括性的答案。执行此操作的典型方法是使用负载平衡器,该负载平衡器在后端的计算机(世界)之间分配初始连接。您没有说用户是应该连接到特定的世界,还是只是任何一个。有多种方法可以使负载均衡器具有粘性,但是如果用户在登录时选择自己的世界,则可能需要其他方法。无论如何,它可能看起来像这样:
然后,您将使用数据库获取登录凭据,每个世界都将对每个登录进行验证。然后,您将使用Redis(可以使用数据库,但是Redis更快)来跟踪当前用户,他们所处的世界等。您还可以使用它来发送消息,或者可以将消息队列(带有源/沉入每个世界)。此方法也非常可扩展。如果您需要更多世界,只需在负载均衡器后面添加更多完全相同的计算机,而无需更改任何代码。
就像我说的,这只是一个一般性的答案,您情况的具体细节可能会使其他方法更具吸引力。
归档时间: |
|
查看次数: |
106 次 |
最近记录: |