首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >paxos是否提供真正的线性一致性?

paxos是否提供真正的线性一致性?
EN

Stack Overflow用户
提问于 2019-12-08 21:47:46
回答 1查看 565关注 0票数 2

我想我在这里可能混淆了一些概念,但在我看来,paxos会为实现它的系统提供线性一致性。

我知道卡桑德拉用过它。我不完全清楚是如何做到的,但是假设一个领导者是被选举出来的,而且所有的写作都是由单个领导者完成的,那么通信是同步的,并且实现了实时线性化,对吗?

但是,像paxos这样的协商一致算法通常被认为是部分同步的,因为存在仲裁(不是节点通信的100% )--这是否也意味着它也不是真正的线性化?

也许因为只有一个仲裁,一个节点可能会失去同步,这会打破线性化吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-18 20:07:05

可线性化系统不需要是同步的。Linearizability是一种安全属性:它说“没有什么不好的事情发生”,但是如果没有什么好的事情发生,它不会影响线性化。在检查线性化时,可以忽略不返回(或返回错误)的任何读或写。这意味着,即使一个或多个节点出现故障、分区或运行缓慢,系统也完全可以线性化。

Paxos通常用于实现复制状态机:一次在多个节点上执行一系列操作的系统。由于操作是确定性的,节点都同意要运行的操作和运行它们的顺序,所以节点都收敛到相同的状态(最终)。

您可以使用Paxos实现一个可线性化的系统,方法是让序列中的操作被写入和读取,使用的事实是,这些操作被Paxos协议放置在一个全序序列(即线性化)中。

重要的是,将读取和写入放在序列中。假设您只使用Paxos来商定写操作,并直接从节点的本地状态提供读取服务。如果为读取服务的节点被从其他节点分割,那么它将提供陈旧的读取,从而违反了线性化。每次读取都必须涉及一个节点的仲裁,以确保返回的值是新的,这意味着(实际上)将读取与写入一起放入序列中。

(有一些技巧可以使读的效率略高于写操作,考虑到读取彼此之间通勤,并且不需要持久化到磁盘,但您无法逃避为读写操作与一定数量的节点联系的需要)

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

https://stackoverflow.com/questions/59240198

复制
相关文章

相似问题

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