繁体   English   中英

应用程序分片通信最佳实践?

[英]Application sharding communication best practice?

大家,早安,

我正在考虑此连接体系结构的情况下开发客户端-服务器游戏应用程序: 在此处输入图片说明

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

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

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

那么我应该在所有主服务器之间创建一个TCP套接字连接吗? 我是第一次构建多服务器结构,因此不确定是否有更好/更轻松的方法来管理它。 我考虑过要使用一台中间服务器来管理主服务器之间的消息传递,但是可能只有在您的系统具有数百台服务器时才值得,因此每个主服务器只有1个与最近的消息管理器的套接字。

由于不存在客户端与客户端之间的通信,因此登录服务器不需要进行互连,它仅管理传入的连接,对客户端进行身份验证并设置会话。

将负载平衡器用于“主服务器”是一个很好的方案,如果您需要客户端始终连接到同一台服务器,则应为此使用cookie,这称为“粘性会话”。

此解决方案有一些候选人,我的建议是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM