首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra的轻量级事务& Paxos协商一致算法

Cassandra的轻量级事务& Paxos协商一致算法
EN

Stack Overflow用户
提问于 2015-04-02 08:12:45
回答 2查看 981关注 0票数 3

关于Paxos算法,我有一个非常特殊的问题,它是在Cassandra的轻量级事务中实现的:

,如果两个节点同时发出相同的建议,会发生什么?他们都能得到“applied:true”吗?

例如,考虑一下这个表:

代码语言:javascript
复制
ids:
+-------------------+---------------+
| id_name (varchar) | next_id (int) |
+-------------------+---------------+
| person_id         |             1 |
+-------------------+---------------+

这个问题是:

代码语言:javascript
复制
UPDATE ids
SET next_id = 2
WHERE id_name = 'person_id'
IF next_id = 1

如果执行此查询,将得到以下响应:

代码语言:javascript
复制
[{[applied]: True}]

如果我再次执行它,那么它将不会被接受,因为next_id != 1,我得到:

代码语言:javascript
复制
[{[applied]: False, next_id: 2}]

我的问题是-如果我并行地从两个节点执行这个查询,会发生什么。他们俩都有被录取的机会吗?

(本堆栈过流问题描述了我的用例)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-02 11:32:33

不可能同时执行这两个查询。对于每个查询,将创建一个提案,用于基于paxos达成共识。这将基于与该提案相关的时间戳,在该提案中,两个提案中的一个相同的时间戳仍将失效。

票数 1
EN

Stack Overflow用户

发布于 2015-04-02 11:36:18

Paxos的作用是查询被“线性化”:在两个不同的节点上同一行同时执行的两个查询将导致其中一个被执行。而第二条则不适用。显然,这两个查询都必须使用CAS才能工作。更多信息,这里这里

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

https://stackoverflow.com/questions/29408075

复制
相关文章

相似问题

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