express / node.js中的请求之间的同步问题

Bruce Lu

我在node.js中提出了一个花哨的同步问题,但我找不到一个优雅的解决方案:

我设置了express / node.js Web应用程序,用于从单行数据库表中检索统计数据。

  • 如果该表为空,则通过冗长的计算任务填充该表
  • 如果表中的记录从现在起早于15分钟,则通过冗长的计算任务对其进行更新
  • 否则,以显示DB中记录的网页作为响应。

问题是,当多个用户同时发出请求时,如果记录很旧,则长计算任务将对每个请求执行一次,而不是仅执行一次。

有什么优雅的方法,只有一个请求触发计算任务,而所有其他请求都等待更新的数据库记录?

怪异的

是的,它称为locks

在表中增加一列,例如lock,它将是时间戳类型。一旦流程开始处理该记录,就会花一些now+timeout时间(根据经验,我选择超时为平均处理时间的2倍)。当进程停止处理时,请使用NULL更新该列

在处理开始时,请检查该列。如果value > now满足条件,则向客户端返回一些状态代码(不要强迫客户端等待,这是糟糕的用户体验,除非处理时间很短,否则他不知道发生了什么)409 Conflict否则,开始处理(理想情况下,处理也将在单独的线程/进程中进行,这样用户就不必等待:以类似的适当状态代码进行响应202 Accepted)。

now+timeout如果您的处理过程崩溃,则需要值(因此我们避免死锁)。还请记住,由于竞争条件,您必须在事务中“检查并设置”此锁定列(如果使用类似MongoDB的数据库,可能会非常困难)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

express / node.js中的请求之间的同步问题

来自分类Dev

Express / Node 中的阻塞问题

来自分类Dev

Node JS:Express入门

来自分类Dev

请求之间的Node.js同步

来自分类Dev

如何在Express Node JS中获取删除请求的参数

来自分类Dev

无法在Node.js / Express中访问请求正文数据

来自分类Dev

Node.js中的模块作用域-同时Express请求

来自分类Dev

Node.js / Express Netflix问题

来自分类Dev

node.js / express / mongoose noob问题

来自分类Dev

Node.JS Express承诺问题

来自分类Dev

无法下载 Express Node JS

来自分类Dev

限制Node JS Express中的api访问

来自分类Dev

Node.js Express HBS中的RegisterHelper

来自分类Dev

什么是 express node.js 中的 %s

来自分类Dev

使用Node.js(express),Angular和MongoDB进行PUT请求时遇到问题

来自分类Dev

带有Express异步的Node.js API:多个请求出现问题

来自分类Dev

如何逐步同步执行后端(Node.js Express)中的命令?

来自分类Dev

使用Node JS和Express JS的HTTPS请求缓慢?

来自分类Dev

Angular JS Express JS Node JS文件上传问题

来自分类Dev

Node.js / Express.js路径问题

来自分类Dev

处理来自Node(Express)的MongoDB连接问题

来自分类Dev

处理来自Node(Express)的MongoDB连接问题

来自分类Dev

无法使用Express从Node.js请求对象访问文件

来自分类Dev

使用node.js / express和AngularJS的CORS请求

来自分类Dev

Node.js-使用Express获取原始请求正文

来自分类Dev

使用Express的Node.js:如何重定向POST请求

来自分类Dev

在Node Express JS的请求正文中传递数组

来自分类Dev

Node.js,Express无法路由参数化的GET请求

来自分类Dev

node.js + express + thread_a_gogo阻止请求

Related 相关文章

热门标签

归档