寻找使用 SQL 数据库作为队列来限制多个用户的 Web 服务请求的示例设计

fa1*_*n3r 5 database-design sql-server best-practices c#

我正在为多个用户设计一个系统,将他们的请求排队到一个 Web 服务,该服务接受诸如创建新条目、更改条目、请求数据之类的请求。我们将使用的许多 Web 服务调用将分层数据作为参数(设计用于匹配 c# 对象结构的层次结构),而其他调用(例如对允许的条目类型列表的请求)不需要参数。队列是必要的,因为 Web 服务有 5 秒左右的节流要求,并且多个用户只会使用一次 Web 服务登录。

从 Web 服务返回的 xml 数据最终会返回,由我们自己的服务器应用程序解析,并插入到某种类型的响应表中,以便用户应用程序可以知道已收到请求并获取返回的任何数据。

基本图片是

用户应用程序(多个用户)--> 服务请求队列 <--> 服务器应用程序 <--> 网络服务

和类似的回应

用户应用(多用户)<--服务响应队列<-->服务器应用<-->web服务

在此处输入图片说明

我自己正在创建用户应用程序和服务器应用程序,只是想了解如何设计将使用 sql server 的服务请求队列和响应队列,并试图弄清楚这些队列将有多少个表。请求和响应以分层形式出现(根据请求返回不同的层次类型),都以非分层形式出现。

此类对象由外部 Web 服务 API 指定。用户以该对象结构的不同相关形式发送不同类型的请求,这些请求将存储在队列系统/队列中,然后由服务器应用程序提取以进行出队以满足 Web 服务的节流要求。服务器应用程序也可能取消不相关的请求,例如如果时间过长并且它怀疑有错误或不相关的请求,或者如果用户应用程序与来自 Web 服务的数据流不同步。 在此处输入图片说明

任何人都有用于此目的的简单示例多用户 sql server 队列?有没有关于这个主题的好书?或者网络教程?似乎有必要限制任何 Web 服务的多个用户......

Rem*_*anu 10

我在 2008-2009 年的一个项目中正是这样做的,这是一个每天需要处理 100 万个电话的网络服务(计费)。我使用 SQL Server 表作为队列,并将该项目的经验提炼到文章使用表作为队列中。坚持我在那里制定的规则,特别是不要尝试在您的桌子上添加任何口哨和铃铛,将其专门用作队列。在负载下,我发现一个关键问题是批量出队(在一个 DB 操作中出队 100 个 Web 服务调用请求)并处理应用程序中的调度(将出队请求放入内存列表中,让 Web 调用处理程序开始工作从这个列表)。执行 web 服务调用异步是至关重要的。此外,您必须阅读有关ServicePointManager.DefaultConnectionLimit.