问题标签 [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.
concurrency - 具有相同共识数的并发对象可以相互实现吗?
我的问题有点理论化。
首先,我们有并发对象和共识层次结构的定义。共识层次结构用共识编号对并发对象进行分类。
但是我想问一下具有相同共识数的对象是否可以相互实现。事实上,我知道答案是错误的。但是你能举一些例子吗,或者这是否意味着共识层次结构中的一些更精细的结构?
networking - 有效请求前的多条消息
在 2-generals 问题和整个 TCP 的背景下,我一直在想,在以下情况下,执行以下通信步骤是否会有任何优势。
考虑 ATM 与其银行通信以从客户账户中扣除 50 美元的情况,情况如下:
情况一:
自动柜员机——银行
扣除 50 美元 ->
<- 扣除 50 美元
ATM然后会释放钱
情况2:
自动柜员机——银行
我要扣除 50 美元 ->
<- 好的,如果你愿意,你可以要求我扣除 50 美元
扣除 50 美元 ->
<- 扣除 50 美元
ATM然后会释放钱
以下情况有什么优势吗?是否可以证明第一个沟通步骤完全没有必要?或者在第二种情况下是否有一些(可能是开箱即用的)优势?
提前致谢
discovery - Raft中的Leader地址/位置
这可能是一个非常简单的问题,但我还没有找到一个好的答案。也许有人可以帮助我。
一旦选出领导者——
- 客户端只会将所有请求发送给领导者。这个对吗?
- 鉴于领导者的位置(实际上是 IP 地址)是动态的,客户端如何知道集群中的这个 IP 地址?
bioinformatics - vcf-consensus 脚本错误:fasta 文件中未找到序列 N
我正在尝试将此脚本(vcf-consensus)与一个简单的示例一起使用,但我有一个错误:在 fasta 文件中找不到序列“7”。
语法是:
我的 FASTA 文件是:
我的 VCF 文件是:
我通过 bgzip 压缩并通过 tabix 索引 VCF 文件:
然后,我执行:
我收到此错误:在 fasta 文件中找不到序列“7”。
有人知道吗?
谢谢。
multithreading - FIFO队列的共识数
多出队队列的确切共识数是多少?
我知道它至少是 2:
queue.enq(1)
queue.enq(0)
线程 A 和 B 每次调用queue.deq()
。
得到 1 的线程将返回它自己的值。
得到 0 的线程将返回另一个的值。
但是我如何证明它恰好是 2?
我想我应该只使用 2-consensus 对象来实现一个队列,但我没能做到。
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
是客户端请求的最新更新,但最终选择了。为什么会这样?这可能会产生严重影响
感谢您的帮助,祝您新年快乐!
algorithm - 分布式系统中的投票算法
假设分布式系统网络。每个系统测量一个值。根据所有价值观,所有系统都需要以一致的方式做出正确的决定。通信链接可能会中断。这种情况下是否有投票和同步算法?
python - 当我尝试使用 biopython 获得共识序列时,我得到一个 AttributeError
看起来我在尝试时遇到了一个错误:
希望有人能帮助我。
干杯,
cassandra - Cassandra 的轻量级交易 & Paxos 共识算法
关于 Paxos 算法,我有一个非常特殊的问题,该算法在 Cassandra 的轻量级事务中实现:
如果两个节点同时发布相同的提案会发生什么?他们都得到 ' [applied]: true ' 吗?
例如,考虑这个表:
这个查询:
如果我执行这个查询,我会得到一个响应:
如果我再次执行它,那么它不会被接受,因为 next_id != 1,我得到:
我的问题是 - 如果我从两个节点并行执行这个查询会发生什么。他们都有机会被录取吗?
(我的用例在这个stackoverflow问题中描述)
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?