首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多nodejs进程并发文档更改的解决方案?

多nodejs进程并发文档更改的解决方案?
EN

Stack Overflow用户
提问于 2016-08-18 17:32:17
回答 2查看 48关注 0票数 0

有一段时间我处理这个问题,但我找不到好的解决办法。假设有一个CRUD节点应用程序与cassandra集群通信:)

例如,应用程序有以下路由:

代码语言:javascript
复制
curl -X POST 127.0.0.1:8080/characters -d '{"id":1, "name": "boba fett"}' 
curl -X PUT 127.0.0.1:8080/characters/1 -d '{"name": "Boba Fett"}' #<-- the problem 
curl -X GET 127.0.0.1:8080/characters/1 
curl -X DELETE 127.0.0.1:8080/characters/1

现在,您应该能够使用相同的逻辑运行多个nodejs进程,但可以防止两个进程对数据库中的同一文档进行更改的可能性。

我的想法是:

  • 只有一个进程可以修改文档。
  • 每个进程都获得一系列id (例如,进程a用偶数id修改文档,进程b用奇数id修改文档)。

还有其他想法吗?

EN

回答 2

Stack Overflow用户

发布于 2016-08-19 08:01:02

如果您确定这些是您的应用程序的要求,那么您可以使用Cassandra的轻量级事务来控制INSERTUPDATE的行为。

这个链接应该给你一个简单的介绍:轻量级事务

票数 1
EN

Stack Overflow用户

发布于 2016-08-19 10:50:30

你的问题是一个经典的种族条件。为了解决这个问题,Cassandra为每个突变操作提供了一个时间戳。Cassandra使用时间戳来解析,这是最近的数据修改。

您可以为CQL查询中的突变操作指定时间戳。

一篇关于CQL时间戳和竞赛条件的好文章

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39024260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档