问题标签 [consensus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
94 浏览

concurrency - 具有相同共识数的并发对象可以相互实现吗?

我的问题有点理论化。

首先,我们有并发对象和共识层次结构的定义。共识层次结构用共识编号对并发对象进行分类。

但是我想问一下具有相同共识数的对象是否可以相互实现。事实上,我知道答案是错误的。但是你能举一些例子吗,或者这是否意味着共识层次结构中的一些更精细的结构?

0 投票
1 回答
22 浏览

networking - 有效请求前的多条消息

在 2-generals 问题和整个 TCP 的背景下,我一直在想,在以下情况下,执行以下通信步骤是否会有任何优势。

考虑 ATM 与其银行通信以从客户账户中扣除 50 美元的情况,情况如下:

情况一:

自动柜员机——银行

扣除 50 美元 ->

<- 扣除 50 美元

ATM然后会释放钱

情况2:

自动柜员机——银行

我要扣除 50 美元 ->

<- 好的,如果你愿意,你可以要求我扣除 50 美元

扣除 50 美元 ->

<- 扣除 50 美元

ATM然后会释放钱

以下情况有什么优势吗?是否可以证明第一个沟通步骤完全没有必要?或者在第二种情况下是否有一些(可能是开箱即用的)优势?

提前致谢

0 投票
1 回答
716 浏览

discovery - Raft中的Leader地址/位置

这可能是一个非常简单的问题,但我还没有找到一个好的答案。也许有人可以帮助我。

一旦选出领导者——

  1. 客户端只会将所有请求发送给领导者。这个对吗?
  2. 鉴于领导者的位置(实际上是 IP 地址)是动态的,客户端如何知道集群中的这个 IP 地址?
0 投票
1 回答
476 浏览

bioinformatics - vcf-consensus 脚本错误:fasta 文件中未找到序列 N

我正在尝试将此脚本(vcf-consensus)与一个简单的示例一起使用,但我有一个错误:在 fasta 文件中找不到序列“7”。

语法是:

我的 FASTA 文件是:

我的 VCF 文件是:

我通过 bgzip 压缩并通过 tabix 索引 VCF 文件:

然后,我执行:

我收到此错误:在 fasta 文件中找不到序列“7”。

有人知道吗?

谢谢。

0 投票
2 回答
1111 浏览

multithreading - FIFO队列的共识数

多出队队列的确切共识数是多少?

我知道它至少是 2
queue.enq(1)
queue.enq(0)
线程 A 和 B 每次调用queue.deq()
得到 1 的线程将返回它自己的值。
得到 0 的线程将返回另一个的值。

但是我如何证明它恰好是 2
我想我应该只使用 2-consensus 对象来实现一个队列,但我没能做到。

0 投票
1 回答
401 浏览

distributed-computing - 如果更新值与接受者发送的最高提案编号不同步,paxos 是否会“忽略”更新值的请求?

此处的标题可能具有误导性。我会尽力通过一个例子来解释我的疑问。

我正在从 wiki 和其他来源阅读有关 paxos 算法的信息。

1)想象一个客户更新值的请求(X在下面的例子中)被处理的情况。在一轮 Paxos 之后,Vb会选择一个值,因为 Acceptors 对 Proposers 的回复包含他们之前接受的 Proposal 编号和相应的值。在下面的情况下,三个接受者发送(8,Va),(9,Vb),(7,Vc)给当前拥有的提议者(10,X)。因为它是它收到的最高(9,Vb)提案编号,所以它会接收并将该值广播(10,Vb)给所有接受者以供接受。X因此,处理这一整轮 Paxos的初始值从未得到更新。那么在这种情况下更新到 X 的客户端事务是否失败?

在这之后 Acceptors 的最终状态是什么?它们是否都具有(10,Vb)最高接受的提案编号和价值,因此是同步的?

2)现在是一个更复杂的情况,其中提出了两个提案,但在试图达成共识时在不同的时间点。想象一下这样一种情况:区域 A 中的客户端 C1 正在修改一些数据X并且尚未达成共识,而区域 B 中的客户端 C2 正在修改相同的数据X。客户的其中一项请求是否被拒绝?请注意 C2 比 C1 发生得晚,但尚未达成共识。如果按照顺序,必须完成 C1 请求,接受共识,然后处理 C2 请求。根据我对这篇博客的理解,在这种情况下,选择了 C1 请求值。

那么C2请求被放弃了吗?这可能不是一个好的选择。

示例(来自博客的版权):

在此处输入图像描述

在这种情况下,v=8尽管 request forV=5是客户端请求的最新更新,但最终选择了。为什么会这样?这可能会产生严重影响

感谢您的帮助,祝您新年快乐!

0 投票
2 回答
2538 浏览

algorithm - 分布式系统中的投票算法

假设分布式系统网络。每个系统测量一个值。根据所有价值观,所有系统都需要以一致的方式做出正确的决定。通信链接可能会中断。这种情况下是否有投票和同步算法?

0 投票
1 回答
1938 浏览

python - 当我尝试使用 biopython 获得共识序列时,我得到一个 AttributeError

看起来我在尝试时遇到了一个错误:

希望有人能帮助我。

干杯,

0 投票
2 回答
933 浏览

cassandra - Cassandra 的轻量级交易 & Paxos 共识算法

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

如果两个节点同时发布相同的提案会发生什么?他们都得到 ' [applied]: true ' 吗?

例如,考虑这个表:

这个查询:

如果我执行这个查询,我会得到一个响应:

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

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

(我的用例在这个stackoverflow问题中描述)

0 投票
2 回答
572 浏览

algorithm - 为什么使用 no-op 来填补 paxos 事件之间的空白是合法的?

我正在学习 Paxos 算法(http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf),有一点我不明白。

我们知道事件遵循及时的顺序,并且它发生在例如事件 1-5 和 10 已决定,但之后的 6-9 和 11 尚未决定时。在上面的论文中,它说我们只是用无操作值填充 6-9 之间的空白,并简单地记录从 11 开始的新事件。

所以在这种情况下,由于已经记录了事件 10,我们知道在 5 到 10 之间肯定发生了某些类型的事件,但由于某些故障而没有被 Paxos 记录。如果我们简单地填写 no-op 值,这些事件将在我们的记录中丢失。

更糟糕的是,如果正如我上面链接的论文所说,事件实际上是来自客户端的命令,那么中间缺少一些命令可能会使整个操作集非法(如果不能跳过任何命令或命令其中很重要)。

那么为什么 Paxos 为事件之间的间隙填充 no-op 值仍然是合法的呢?(如果整个记录集可能由于我上面提到的 no-op 值而无效。)另外,有没有更好的方法来从这些间隙中恢复而不是使用 no-op?