有些人应该知道什么是登录队列。你开始你的游戏,像魔兽世界,英雄联盟,.,输入你的用户名和密码,点击“登录”,然后发生:登录队列,位置: x。
我想问的是,服务器端的登录队列实际上是什么?我的意思是,如果您使用英雄联盟和klick登录,服务器将首先检查您的日志数据,然后将您放在loginqueue中(如果您的密码是错误的,请不要)。所以我不明白的是,为什么会有一个队列。如果服务器有足够的时间检查您的日志数据,那么只设置"is-loggedin“标志会有什么问题呢?为什么需要排队?
发布于 2014-12-08 09:58:50
(如果是WoW特定的问题,那么论坛或游戏堆栈交换是一个更好的地方-我的答案更通用,也来自企业系统中使用的模式)
登录队列通常用于服务器端软件系统,这些软件系统的总资源和服务质量参数有限,要求用户在服务器上至少分配一定数量的资源,以获得可接受的用户体验。
在在线游戏的情况下,每个用户都需要一定数量的CPU周期和内存空间来获得可接受的用户体验(比如没有延迟)。因此,游戏服务器实现了一个队列,这样太多的用户不会阻塞服务器,从而给所有用户带来糟糕的使用体验。因此,如果身份验证系统在验证您的凭据后简单地设置了一个"is-loggedin“标志,那么并发用户的总数将不会被限制,从而降低用户的性能。
在企业系统中,这种机制用于大量按需资源,如远程桌面等.
发布于 2014-12-08 15:48:54
在最简单的级别上,服务器接收到用户名和密码,并询问数据库‘您是否有与此匹配的用户名和密码哈希’。然后数据库上写的是yay或or。这是快速的,不需要太多的队列。出于用户体验的原因,这是以优先级完成的,因为您不希望用户等待5分钟才发现他们输入了错误的密码。
但是,在一个人真正“进入”系统之前,通常需要做更多的工作。例如,您是第一次使用。你的订阅付款了吗。你有什么新的通知在等你吗?应该给你什么安全权限。运行任何应该在用户登录上运行的逻辑如何?所有这些都需要资源,然后才能获得欢迎屏幕。正如我所提到的,由于用户体验的原因,“是密码正确”是以更高的优先级完成的,但其余部分则需要坐在队列中。
对于大多数应用程序来说,这是一个非常小的需求,直到您使用应用程序中要求更高的部分时才会看到队列。对于许多业务系统来说,登录并不需要队列,但运行报表却需要队列。但是,系统可能会遇到这样的需求,即它没有资源立即显示欢迎屏幕,因此必须将您放在队列中,直到有足够的资源准备好处理您的请求为止。
应该注意的是,复杂的系统可能需要登录队列的不同部分,即使您实际上不需要重新认证。例如,登录到系统,就会被放入队列,直到有足够的资源来判断访问级别、确定通知和运行后台业务逻辑。然后单击报表按钮,将其卡在短队列中,直到有足够的资源在报表系统中对您进行身份验证(使用从前一个系统传入的信息)并返回可以运行的报表列表。然后单击报表,输入数据,并将其放入更长的报表队列,同时等待足够的资源来运行报表。
特别是对于在线游戏,有一个进入主界面的队列,另一个进入游戏的队列,因为用户界面/帐户管理通常由于各种原因而与实际的游戏分离(例如,将所有帐户服务器放在一个位置,即使它给一些用户带来更大的延迟,也不是一个问题,因为75 as与300 as的延迟相比,处理帐户交互并不是什么大事,但您希望您的游戏服务器尽可能地减少延迟,因为75 as对300 as在游戏中是一大问题)。
发布于 2014-12-08 15:35:45
除了Jit的答案之外,我认为特别是对于LoL来说,这不仅仅是因为你可以登录,而是你可以开始一个游戏。开始一个游戏似乎需要相当多的服务器端资源,有一个游戏运行,也。因此,如果所有的人同时登录并开始一个游戏和玩,就会出现一个巨大的高峰,对服务器资源的需求。但是,如果你要等20分钟才能登录,一些玩家已经完成了他们的游戏。
https://softwareengineering.stackexchange.com/questions/264860
复制相似问题