- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有不同的共识算法,用于权限导向的区 block 链,例如
哪些共识算法是同步的和异步的,为什么?请详细说明。谢谢
最佳答案
*我不是分布式系统方面的专家,但我会尝试回答您的问题。
在分布式系统中,人们使用一个底层模型,该模型假定一些关于时间的属性(“这条消息需要多长时间才能到达?”)和一些关于故障类型的属性(“协议(protocol)中的节点如何做错误的东西?”)。
通常用于分布式系统的时序模型主要有三种类型:同步模型、异步模型和部分同步模型。这些模型中的每一个都对在协议(protocol)执行的给定轮次中节点之间的消息交换之间可能发生的时间长度(“延迟”)做出了一些保证。这种分类很重要,因为在分布式设置中,单个节点无法区分发生故障的对等节点和需要很长时间响应的对等节点。
在同步模型中,从节点发送消息到您可以确定接收节点听到消息之间的时间存在某个最大值(“上限”)T。您还有一个关于节点之间速度相对差异的上限 P(因此您可以考虑处理器速度较慢的机器)。
在异步模型中,我们删除了上限 T 和 P。消息可以花费任意长的时间到达对等点,每个节点可以花费任意长的时间来响应。当我们说任意时,我们包括“无限”,这意味着某些事件需要永远发生。
混合了两者的部分同步模型:T 和 P 存在上限,但协议(protocol)设计者不知道它们,任务是设计根据这一事实仍能达成共识的机制。在实践中,鉴于现代网络/机器的现实特征(消息通常到达它们要去的地方)并使用超时等策略来指示节点何时应重试发送消息,协议(protocol)实现者可以实现类似于此模型的系统。
记住以上事实,Paxos和Raft都属于部分同步模型。
拜占庭将军问题是任何分布式计算机系统网络都面临的经典问题。目的是在存在恶意节点的情况下在所有参与节点上保持相同的状态。
在分布式系统中,有许多您需要不断处理的难题。
Things fail. You can never count on anything being reliable. Even if you have
perfectly bug-free software, and hardware that never breaks, you’ve still got
to deal with the fact that network connections can break, or messages within a
network can get lost, or that some bozo might sever your network connection
with a bulldozer. (That really happened while I was at Google!)
Given (1), you can never rely on one copy of anything, because that copy might
become unavailable due to a failure. So you need to keep multiple copies, and
those copies need to be consistent – meaning that at any time, all of the
copies agree about their contents.
There’s no way to maintain a single completely consistent view of time between
multiple computers. Due to inconsistencies in individual machine performance,
and variable network delays, variable storage latency, and several other
factors, there’s no canonical way of saying that for two events X and Y, “X
happened before Y”. What that means is that when you try to maintain a consistent set of data, you can’t just say “Run all of the events in order”, because while one server maintaining one copy might “know” that X happened before Y, another server maintaining another copy might be just as certain that Y happened before X.
简而言之,任何事情都可能随时失败;失败后,参与者可以恢复并重新加入系统;系统的任何部分都不会以积极的对抗方式运行(拜占庭故障可能是由于恶意软件造成的)。
为了解决这个问题,我们有共识算法,目的是让所有参与者就同一状态达成一致。共识涉及多个服务器就值(value)观达成一致。一旦他们就某个值做出决定,该决定就是最终决定。当大多数服务器可用时,典型的共识算法会取得进展。Paxos 和 Raft 是解决公共(public)或私有(private)分布式网络中拜占庭一般问题的共识算法。
关于algorithm - 哪种共识算法本质上是同步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52154747/
我在一本书(Interview Question)中读到这个问题,想在这里详细讨论这个问题。请点亮它。 问题如下:- 隐私和匿名化 马萨诸塞州集团保险委员会早在 1990 年代中期就有一个绝妙的主意
我最近接受了一次面试,面试官给了我一些伪代码并提出了相关问题。不幸的是,由于准备不足,我无法回答他的问题。由于时间关系,我无法向他请教该问题的解决方案。如果有人可以指导我并帮助我理解问题,以便我可以改
这是我的代码 public int getDist(Node root, int value) { if (root == null && value !=0) return
就效率而言,Strassen 算法应该停止递归并应用乘法的最佳交叉点是多少? 我知道这与具体的实现和硬件密切相关,但对于一般情况应该有某种指南或某人的一些实验结果。 在网上搜索了一下,问了一些他们认为
我想学习一些关于分布式算法的知识,所以我正在寻找任何书籍推荐。我对理论书籍更感兴趣,因为实现只是个人喜好问题(我可能会使用 erlang(或 c#))。但另一方面,我不想对算法进行原始的数学分析。只是
我想知道你们中有多少人实现了计算机科学的“ classical algorithms ”,例如 Dijkstra's algorithm或现实世界中的数据结构(例如二叉搜索树),而不是学术项目? 当有
我正在解决旧编程竞赛中的一些示例问题。在这个问题中,我们得到了我们有多少调酒师以及他们知道哪些食谱的信息。制作每杯鸡尾酒需要 1 分钟,我们需要使用所有调酒师计算是否可以在 5 分钟内完成订单。 解决
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我开始学习 Nodejs,但我被困在中间的某个地方。我从 npm 安装了一个新库,它是 express -jwt ,它在运行后显示某种错误。附上代码和错误日志,请帮助我! const jwt = re
我有一个证书,其中签名算法显示“sha256rsa”,但指纹算法显示“sha1”。我的证书 SHA1/SHA2 的标识是什么? 谢谢! 最佳答案 TL;TR:签名和指纹是完全不同的东西。对于证书的强度
我目前在我的大学学习数据结构类(class),并且在之前的类(class)中做过一些算法分析,但这是我在之前的类(class)中遇到的最困难的部分。我们现在将在我的数据结构类(class)中学习算法分
有一个由 N 个 1x1 方格组成的区域,并且该区域的所有部分都是相连的(没有任何方格无法到达的方格)。 下面是一些面积的例子。 我想在这个区域中选择一些方块,并且两个相邻的方块不能一起选择(对角接触
我有一些多边形形状的点列表,我想将其包含在我页面上的 Google map 中。 我已经从原始数据中删除了尽可能多的不必要的多边形,现在我剩下大约 12 个,但它们非常详细以至于导致了问题。现在我的文
我目前正在实现 Marching Squares用于计算等高线曲线,我对此处提到的位移位的使用有疑问 Compose the 4 bits at the corners of the cell to
我正在尝试针对给定算法的约束满足问题实现此递归回溯函数: function BACKTRACKING-SEARCH(csp) returns solution/failure return R
是否有包含反函数的库? 作为项目的一部分,我目前正在研究测向算法。我正在使用巴特利特相关性。在 Bartlett 相关性中,我需要将已经是 3 次矩阵乘法(包括 Hermitian 转置)的分子除以作
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
问题的链接是UVA - 1394 : And There Was One . 朴素的算法是扫描整个数组并在每次迭代中标记第 k 个元素并在最后停止:这需要 O(n^2) 时间。 我搜索了一种替代算法并
COM 中创建 GUID 的函数 (CoCreateGUID) 使用“分散唯一性算法”,但我的问题是,它是什么? 谁能解释一下? 最佳答案 一种生成 ID 的方法,该 ID 具有一定的唯一性保证,而不
在做一个项目时我遇到了这个问题,我将在这个问题的实际领域之外重新措辞(我想我可以谈论烟花的口径和形状,但这会使理解更加复杂).我正在寻找一种(可能是近似的)算法来解决它。 我有 n 个不同大小的容器,
我是一名优秀的程序员,十分优秀!