gpt4 book ai didi

asp.net - 使用数据库或 MSMQ 进行排队?

转载 作者:行者123 更新时间:2023-12-02 23:11:18 26 4
gpt4 key购买 nike

我正在开发的应用程序的一部分是一个 swf,它显示了包含大约 80 个问题的测试。每个问题都通过WebORB和ASP.NET保存在SQL Server中。

如果考生完成了测试,则需要验证 session 。问题是,有时 350 个考生同时完成测试,Web 服务器和 SQL Server 上的 CPU 会爆炸(同时进行 350 个验证)。

现在,我应该如何在这里实现排队呢?在数据库中,有一个表,其中包含每个 session 的记录。一列保存状态。 1已完成,2已验证。

我可以通过两种方式实现排队(据我所知,也许您有其他建议):

  • 检查表中状态为 1 的记录的进程。如果找到,则验证 session 。因此, session 会被一一验证。
  • 如果候选者完成其 session ,则会向 MSMQ 队列发送一条消息。另一个进程监听队列并逐个验证 session 。

现在:

  • 最好的方法是什么?
  • 从哪里开始验证 session 的流程?在你的global.asax(application_start)中?作为 Windows 服务?作为在 application_start 中启动的网站根目录下的 exe?

对我来说,使用表并查找状态为 1 的记录似乎是最简单的方法。

最佳答案

MSMQ 方法 decouples来自验证逻辑服务和数据库的面向 Web 的应用程序。

这带来了许多优点,其中一些:

  • 验证逻辑每秒可以处理 5 个 session ,并且一次接收 300 个 session 的情况会更容易处理。否则,您将不得不处理复杂的超时、重新尝试等。

  • 对验证服务进行维护会更容易,而不必中断应用程序的其余部分。当验证服务关闭时,消息将在 MSMQ 中排队,并在启动后立即再次处理。

  • 数据库维护同上。

关于asp.net - 使用数据库或 MSMQ 进行排队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com