问题标签 [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 回答
413 浏览

consensus - 分区下的筏复制

  1. 7 个成员集群,其中一个是领导者。
  2. 领导者尝试复制日志(一些写入)
  3. 发生网络分区。分别为 3 名和 4 名成员。
  4. 领导者最终进入少数派分区
  5. Leader 只达到 2 个 Follower → 复制失败

在这种情况下会发生什么?

据我了解:2 个追随者应用了“错误”写入,当网络分区修复时,他们将用多数领导者的历史记录覆盖该写入。但这违反了线性化。

0 投票
1 回答
367 浏览

multithreading - 为什么共识数在多线程中很重要?

所以 fetch-and-add 操作的共识数是 2

我很难理解这意味着什么以及它如何影响多线程编程?例如,与 compareandswap 相比,我会喜欢一些实际的例子来说明这将如何影响......非常感谢。

0 投票
1 回答
284 浏览

networking - 为什么 Docker 覆盖网络需要共识?

刚刚阅读了 Docker 覆盖网络,非常酷的东西。我似乎无法找到一件事的答案。

根据文档:

  • 如果你安装和使用 Docker Swarm,你会自动在你的 manager/worker 主机上获得覆盖网络,并且不需要再配置任何东西;但是……
  • 如果您只是想要跨多个主机的(非 Swarm)覆盖网络,则需要使用外部“KV 存储”(共识服务器)配置该网络,如 Consul 或 ZooKeeper

我想知道这是为什么。显然,覆盖网络需要对等点之间达成共识,但我不确定这些“对等点”为什么或是谁。

我只是猜测,使用 Swarm,有一些内部/幕后共识服务器开箱即用。

0 投票
1 回答
802 浏览

blockchain - How Consesus is reached in Hyperledger

In Hyperledger fabric consensus is acheived by orderers but on what basis each transaction is ordered and How many orderers are present in distributed network if there are more than one again how ordering done by each orderers are identical

0 投票
1 回答
142 浏览

distributed-computing - 不同上下文中的一致性(分布式系统 vs 内存模型 vs 数据库)

我对“一致性”一词感到困惑。它已在许多不同的环境中使用,即分布式系统、内存模型和数据库。People/Wikipedia 在同一页面中总结了所有不同的一致性模型。但我真的不认为它们被用来描述同一个问题。

例如,顺序/放松/弱/严格/处理器一致性等在内存模型中是有意义的(由现代架构和现代语言编译器提供)。另一方面,顺序/最终一致性在分布式系统中有意义(当您尝试构建复制状态机时)。类似 Paxos/raft 的共识算法可以帮助你建立 SC 模型,而 DynamoDB 是 EC 模型的一个例子。

但是,在构建复制日志时谈论发布/弱一致性以及谈论内存模型中的最终一致性确实没有意义。

就传统的关系数据库而言,它让我更加困惑。由于在 ACID 模型中,一致性似乎意味着不同的概念。它只要求在事务之后,数据库应该处于有效/一致的状态。但是,ACID 的隔离部分听起来更像是 Consistency Model,特别是 Sequential 一致性模型。

我在这里有什么误解吗?或者计算机人只是喜欢滥用术语和混淆人们......

如果我错了,请纠正我,即使只是小细节。我真的很想正确理解这些概念。谢谢 : )

0 投票
3 回答
13345 浏览

distributed-system - 领导选举的 paxos vs raft

看了paxos和raft论文后,我有以下困惑:paxos论文只描述了对单个日志条目的共识,相当于raft算法的leader选举部分。在 raft 的 leader 选举中,paxos 的方法相对于简单的随机超时方法有什么优势?

0 投票
2 回答
266 浏览

blockchain - 如果在invokeChaincode中改变Chaincode状态会发生什么可怕的事情?

假设我在 Hyperledger Fabric 中有两个链码,ChaincodeA 和 ChaincodeB。

ChaincodeA 中的一些事件将不得不改变 ChaincodeB 中的状态,例如,改变其余额。如果invokeChaincode()在 ChaincodeA 中使用来调用 ChaincodeB 中的某些逻辑,这些逻辑调用putState()来更改 ChaincodeB 的状态,那么在达成共识时可能会发生任何竞争条件?处理此问题的最佳做法是什么?

0 投票
5 回答
1654 浏览

algorithm - raft 如何处理前一个提交的条目?

牛皮纸第 5.4.2 节

如果领导者在提交条目之前崩溃,未来的领导者将尝试完成复制条目。但是,领导者不能立即断定上一任期的条目一旦存储在大多数服务器上就已提交。可能存在这样一种情况,即旧的日志条目存储在大多数服务器上,但仍可能被未来的领导者覆盖。

作者提到为了避免上述情况

为了消除图 8 中的问题,Raft 永远不会通过计算副本来提交先前条款的日志条目。只有来自领导者当前任期的日志条目通过计算副本来提交;一旦以这种方式提交了当前术语中的条目,则由于日志匹配属性,所有先前的条目都将间接提交。

但是不会还是会出现同样的问题吗?

鉴于作者提供的以下情况

边缘案例

S5被选为领导者时,它只查看其当前提交的日志,(term3, index1)这将覆盖term2所有追随者中的条目。

让领导者查看自己的提交日志如何解决问题?

0 投票
3 回答
1412 浏览

algorithm - 服务器中易失状态的 raft 协议中的 lastApplied 和 matchIndex 是什么?

我使用以下pdf作为参考。在此处输入图像描述

它说这lastApplied是应用于状态机的最高日志条目,但这与commitIndex?

领导者也matchIndex只是追随者的commitIndex吗?如果不是,有什么区别?

0 投票
1 回答
573 浏览

algorithm - 在 RAFT 中,是否可以对日志条目达成多数共识但该条目未提交?

在官方raft 网页中考虑这个模拟

在此处输入图像描述

为什么term 2 index 1尽管没有提交S2 (leader)S3并且S4同意日志?我运行了几分钟以确保所有通信都已进行。

奇怪的是,如果我再添加一个日志条目term 6 index 2,那么term 2 index 1将被提交。

有谁知道阻止term 2 index 1提交的规则是什么?