应用分片通信最佳实践?

时间:2016-11-26 14:35:14

标签: c# sockets architecture server client-server

大家早上好,

我正在开发一个客户端 - 服务器游戏应用程序,考虑到这种连接架构: enter image description here

我刚刚完成了登录部分:Google Play上的客户端身份验证,将令牌+用户ID发送到一个登录服务器,登录服务器使用google play验证数据并在该数据库上为该用户创建会话。

我的想法是成功登录,登录服务器与其中一个主服务器通话以注册预期的客户端,关闭与登录服务器的连接,然后客户端连接到该服务器。我希望有多个主服务器用于扩展和本地化,但问题是当客户端在不同的主服务器上时如何管理客户端 - 客户端交互?什么是最佳做法?

让我们考虑一个简单的“朋友连接”通知系统。因此,想象一下架构上的所有客户端都是朋友,客户端2和3已经连接,客户端1连接,主服务器在客户端1连接上构建客户端模型,该客户端模型将具有朋友列表(包含在线状态和连接的服务器ID,如果线上)。它将按服务器对在线朋友进行分组,并向这些主服务器发送批量friend_connected数据包,这些数据包通知用户(如果是同一服务器只是将friend_connected发送给每个用户)。

那么我应该在所有主服务器之间创建TCP套接字连接吗?我是第一次构建多服务器结构,因此不确定是否有更好/更简单的方法来管理它。我想过一个中间服务器来管理主服务器之间的消息传递,但是当你的系统有数百台服务器时,这可能是值得的,因此每个主服务器只有一个套接字到最近的消息管理器。

登录服务器不需要互连,因为没有客户端 - 客户端通信,它只管理一个incomming connex,验证客户端并设置会话。

1 个答案:

答案 0 :(得分:0)

这是一个很好的方案,可以为您的主服务器使用负载均衡器,如果您需要客户端始终连接到同一服务器,您应该使用cookie,这称为& #34;粘性会话"。

这个解决方案有几个候选人,我的建议是:

如果需要,我可以继续提供帮助/指导:)