【发布时间】:2017-04-10 16:57:50
【问题描述】:
大家早上好,
我正在开发一个考虑到这种连接架构的客户端-服务器游戏应用程序:
我刚刚完成了登录部分:google play 上的客户端身份验证,将令牌+用户 ID 发送到一个登录服务器,登录服务器使用 google play 对数据进行身份验证,并为该用户在数据库上创建一个会话。
我的想法是成功登录,登录服务器与主服务器之一进行对话以注册预期的客户端,关闭与登录服务器的连接,然后客户端连接到该服务器。我想拥有多个主服务器来进行扩展和本地化,但是问题是当客户端位于不同的主服务器上时如何管理客户端与客户端的交互?最佳做法是什么?
让我们考虑一个简单的“好友已连接”通知系统。所以想象模式上的所有客户端都是朋友,客户端 2 和 3 已经连接,客户端 1 连接,主服务器在客户端 1 连接上构建一个客户端模型,该模型将有一个朋友列表(如果包含在线状态和连接的服务器 ID,如果在线的)。它将按服务器对在线朋友进行分组,并向这些主服务器发送一个批量的friend_connected数据包并通知用户(如果是同一台服务器,只需将friend_connected发送给每个用户)。
那么我应该在所有主服务器之间创建一个 TCP Socket 连接吗?我是第一次构建多服务器结构,所以不确定是否有更好/更简单的方法来管理它。我考虑过使用中间服务器来管理主服务器之间的消息传递,但可能只有在您的系统有数百台服务器时才值得,因此每个主服务器只有一个到最近的消息管理器的套接字。
登录服务器不需要互连,因为没有客户端-客户端通信,它只是管理一个传入的连接,验证客户端并设置会话。
【问题讨论】:
标签: c# sockets architecture server client-server