“最终一致性”与“强最终一致性”与“强一致性”?

2023-12-29

我遇到了“强最终一致性”的概念。 它是否应该比“最终一致性”强但比“强一致性”弱?有人可以用适用的例子解释这三个概念之间的区别吗?

http://en.wikipedia.org/wiki/Eventual_consistency#Strong_Eventual_Consistency http://en.wikipedia.org/wiki/Eventual_consistency#Strong_Eventual_Consistency http://en.wikipedia.org/wiki/Conflict-free_replicated_data_type http://en.wikipedia.org/wiki/Conflict-free_replicated_data_type

非常感谢。


免责声明:下面的文字应该让您大致了解最终一致性、强最终一致性和强一致性之间的区别。但它们在某种程度上过于简单化了。所以对它们持保留态度;)


首先,当我们谈论一致性我们指的是不同实体(节点)拥有自己的某些数据对象副本的场景。现在,出现冲突是因为每个节点都可以更新自己的副本(例如,因为有客户端,每个节点都连接到某个节点,要求它们这样做),所以如果我从不同的节点读取数据,我会看到不同的值。这就是最终一致性(EC)、强最终一致性(SEC)和强一致性(SC)发挥作用的地方。

最终一致性可能会出现冲突,但节点会相互传达其更改以解决这些冲突,因此它们会及时就最终值达成一致。因此,如果在一段时间内不再对数据应用任何更改,则所有节点都将同意数据值(即它们最终会同意),因此数据的读者最终将看到相同的值。

示例:两个节点 A 和 B (nA and nB) 拥有一个字符串的每个副本,该字符串通过操作进行更新read() and write(string)。假设每个人都有自己的客户(cliA and cliB)。假设最初两个节点存储相同的值“Joe”,但在某个时刻nA将其更新为“Frank”(调用write("Frank")). Then nA会告诉nB该值已更新;由于两个值不同,因此出现了冲突,但可以使用某些策略(例如最后写入获胜)来解决nB终于将其记录也更新为“Frank”。在冲突解决之前cliA and cliB将看到不同版本的数据(read()op 结果会有所不同),但最终两者都会再次看到相同的值。

请记住,如果两个节点同时更新其值,则冲突解决仍然是可能的,但会更加复杂。这就是 SEC 的闪光点。

强最终一致性这是 EC 的特殊情况,仅对某些数据类型有效。

假设共享的数据对象是一个计数器,并且更新是通过add(int value) and substract(int value)运营。在这种情况下,我们应用更新的顺序并不重要!所以如果两者nA and nB从计数器值 0 开始,如果然后 nA 运行add(10) and nB runs substract(5)(同时),它们只需要互相发送更新操作,而不关心冲突解决,最终确保它们达到相同的值(记住,相反,在前面的 EC 示例中,可以进行一些冲突解决)必需的)!

不幸的是,SEC 仅适用于具有特定属性(交换性等)的某些数据类型和操作。此类数据类型表示为无冲突复制数据类型 (CRDT) .

一致性强与另外两个截然不同。这里要求在更新操作时,所有节点在使新值对客户端可见之前就新值达成一致。这样,所有客户端“同时”都可以看到更新,因此他们将始终读取相同的值。现在这引入了更新操作中一些阻塞的要求。在 EC 和 SEC 中,一旦本地副本更新,更新操作就结束(然后该操作被广播到其他节点)。这里,直到所有节点就数据值达成一致之后,客户端更新才会返回,并且在完成此操作时,对该数据的任何副本的所有访问都被“锁定”(因此其他客户端读取被阻止)。在我们的 EC 示例中,如果cliA runs write("Frank"), cliA将被阻止,直到双方同意更新nA and nB,然后它将对双方都可见cliA and cliB同时,即read()从那时起操作应该返回相同的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“最终一致性”与“强最终一致性”与“强一致性”? 的相关文章

  • 在区块链中保存文件的最佳实践

    将文件保存为区块链数据的一部分的最佳实践是什么 我有非常大的文件需要保存 我们不能将这些文件保存在云存储 像 dropbox 这样的集中式解决方案 上 并使用文件哈希将它们与区块链数据链接起来吗 还是使用IPFS这样的分布式文件存储更好 或
  • 在 Apache Spark 中,是否可以为混洗 RDD 或联合分组 RDD 指定分区的首选位置?

    对于 Spark 1 6 唯一支持自定义分区位置的 API 是在创建 RDD 时 Distribute a local Scala collection to form an RDD with one or more location pr
  • PySpark 中未加载 Elephas:没有名为 elephas.spark_model 的模块

    我正在尝试在集群上分发 Keras 训练并使用 Elephas 来实现这一点 但是 当运行 Elephas 文档中的基本示例时 https github com maxpumperla elephas from elephas utils
  • C++ Winsock P2P

    Scenario 有没有人有任何使用 Winsock 在 C 中进行点对点 p2p 网络的好例子 这是我对特别需要使用这项技术的客户的要求 天知道为什么 我需要确定这是否可行 任何帮助将不胜感激 EDIT 我想避免使用库 以便我可以理解底层
  • 不同主机上的 OpenMP 程序

    我想知道是否可以在多个主机上运行 OpenMP 程序 到目前为止 我只听说过可以在多线程上执行但都在同一台物理计算机上执行的程序 是否可以在两个 或更多 客户端上执行程序 我不想使用 MPI 是的 可以在分布式系统上运行 OpenMP 程序
  • 什么是spark.driver.maxResultSize?

    The ref http spark apache org docs latest configuration html says 每个分区的所有分区的序列化结果总大小的限制 激发行动 例如收集 应至少为 1M 或 0 无限 如果总大小超过
  • C# 中的分布式计算

    我有一个特定的 DLL 其中包含一些语言处理类和方法 其中一种方法获取一个单词作为参数 并进行大约 3 秒的一些计算 并将相关结果保存在 SQL Server 数据库上 我想在 900k 字上运行这个 DLL 方法 并且这项工作可能每周重复
  • Spark 中的任务是什么? Spark Worker如何执行jar文件?

    阅读了一些文档后http spark apache org docs 0 8 0 cluster overview html http spark apache org docs 0 8 0 cluster overview html 我有
  • 如何在 spmd 块中索引共分布式数组

    我正在做一个非常大的计算 大气吸收 其中有很多单独的窄峰 最后全部加起来 对于每个峰 我预先计算了峰形函数值高于我选择的阈值的范围 然后我逐行将峰添加到我的光谱中 下面给出了一个最小示例 X 1 1e7 K numel a count th
  • CAP定理是否意味着ACID对于分布式数据库是不可能的?

    有NoSQL ACID 分布式 数据库 https stackoverflow com questions 2608103 is there any nosql that is acid compliant 尽管有 CAP 定理 这怎么可能
  • 如何将事件分发到(Wildfly)集群中的所有节点?

    当我的进程中运行时间较长的进程的状态时 我想通知集群中的所有节点JavaEE 7WebApp 发生变化 因此每个节点都可以通过 WebSocket 依次通知其客户端该变化 我正在集群环境中使用 Wildfly 10 What JavaEE
  • 为什么 Hadoop 不使用 MPI 来实现?

    如果我错了 请纠正我 但我的理解是 Hadoop 不使用 MPI 进行不同节点之间的通信 造成这种情况的技术原因是什么 我可以冒险进行一些猜测 但我对 MPI 是如何 在幕后 实现的了解不够 无法知道我是否正确 想想看 我对 Hadoop
  • Dask 分布式。如何在正在计算的函数中获取任务密钥ID?

    我使用 dask distributed 进行的计算包括创建名称包含 UUID4 的中间文件 用于标识该工作块 pairs n n n format list1 list2 list3 file path os path join job
  • 适用于商品 Linux 存储场的最佳分布式文件系统 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有很多闲置的英特尔 Linux 服务器 数百台 并且希望将它们用于 Web 托管和文件共享环境中的分布式文件系统 这不适用于 HPC 应用程序
  • 大规模分布式系统中的日志文件

    我在网格和 HPC 领域做了很多工作 对于分布在数百 或在某些情况下数千 服务器上的系统 我们面临的最大挑战之一是分析日志文件 当前日志文件本地写入每个刀片上的磁盘 但我们也可以考虑使用 UDP Appender 等发布日志信息并集中收集
  • LRPC 的意义何在?为什么有人想要对同一台机器进行远程过程调用?

    根据我对 RPC 远程过程调用 的理解 它们提供了一种向远程计算机发送函数调用 调用等的方法 这样做的明显优点是 您可以拥有一个在机器集群上运行的单个程序 并且可以处理更多请求 更多数据等 但我很困惑LRPC 轻量级RPC http www
  • 网络断开后,raft follower如何重新加入?

    我在木筏上遇到了问题 在论文 寻找一种可理解的共识算法 扩展版 中写道 要开始选举 追随者会增加其当前的 任期并过渡到候选状态 第 5 2 节 它还说 AppendEntries RPC 和 RequestVot RPC 中的接收者应为 R
  • Javascript分布式计算[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么没有任何 Javascript 分布式计算框架 项目 这个想法对我来说绝对很棒 因为 客户端就是浏览器 可以使用AJAX进行迭代 网站管理
  • Apache Spark 中的混洗与非混洗合并

    在将 RDD 写入文件之前执行以下转换时 它们之间有什么区别 合并 1 随机播放 true 合并 1 随机播放 假 代码示例 val input sc textFile inputFile val filtered input filter
  • 内存缓存 VS。分布式系统中的集中式缓存

    我们目前正在寻找最合适的解决方案来访问分布式系统上的关键数据 并且我们正在考虑是否使用内存缓存而不是集中式缓存 有关我们希望存储 访问的数据的一些信息 数据量非常小 数据很冷 这意味着它几乎不会改变 并且只有当人们改变我们后台系统中的某些内

随机推荐

  • 使用样式或 Javascript 使图像变亮

    我想使用 css 或 javascript 在鼠标悬停时使网页上的图像变亮 我见过一些在样式中使用不透明度和滤镜的示例 但它们似乎对我不起作用 提前致谢 CP UPDATE 一个纯 CSS 解决方案是使用CSS 过滤器 https deve
  • 在 R 中读取二进制文件

    在以下代码中 可以导入具有这些属性的部分 LAS 文件版本 1 1 列表 项目格式 尺寸要求 X长4字节 Y长4字节 Z长4字节 强度无符号短 2 字节 返回编号 3 位 位 0 1 2 3 位 返回数 给定脉冲 3 位 位 3 4 5 3
  • 将页面映射到不同进程的地址空间

    可以使用以下命令读取和修改另一个进程地址空间中的内存ptrace 2 or process vm readv 2 process vm writev 2 但是我找不到系统调用来在另一个进程的地址空间中分配新内存 我目前能想到的唯一方法是向进
  • undefined 不是对象(评估 '_react.PropTypes.object')

    刚刚使用react native init创建了一个新项目 使用 react 16 0 0 react native 0 51 0 从 xcode 运行项目我收到以下错误 未处理的 JS 异常 模块 AppRegistry 不是已注册的可调
  • Antlr4:如何在语法中隐藏和使用令牌

    我正在解析一种定义两种类型的语句的脚本语言 控制语句和非控制语句 非控制语句总是以 而控制语句可能以以下结尾 or EOL n 语法的一部分如下所示 script statement EOF statement control statem
  • 在 PowerShell 中选择数组的所有对象的一个​​属性的值

    假设我们有一个对象数组 objects 假设这些对象有一个 Name 属性 这就是我想做的 results objects results Name 这可行 但是可以用更好的方式来完成吗 如果我做类似的事情 results objects
  • 无法绑定Margin属性?

    我正在尝试制作一种动画电影片段 其中在给定时刻只有一个字段可见 就像相机中的胶片一样 当前只有一个胶片场放置在镜头下方并准备被照亮 我尝试将其实现为一个带有另一个网格的网格 Film strip 在下面的代码中称为 pageContaine
  • 为什么x86很丑?为什么与其他人相比,它被认为是劣等的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我的 redis 密钥不会过期

    当生存时间达到 0 时 我的 Redis 服务器不会删除键 这是示例代码 redis cli gt SET mykey ismykey gt EXPIRE mykey 20 check TTL gt TTL mykey gt integer
  • 配置两节点 hazelcast 集群 - 避免多播

    上下文 Hazelcast 集群的两个节点 每个节点都位于一个离散的子网上 因此多播不适合也不适合节点定位 我想使用最少的 XML 配置文件 比如说hazelcast xml 将 Hazelcast 配置为使用 TCP IP 连接两个节点
  • 如何根据闪亮的输入选择对数据框进行子集化并用传单进行绘图

    我正在尝试使用 Rstudio 制作一个闪亮的应用程序来生成传单输出 请注意 shiny 是我以前从未使用过的包 因此脚本中可能存在除我当前遇到的错误之外的其他错误 我正在使用一个包含不同个体轨迹的数据帧 我想从中子集并绘制一只动物的轨迹以
  • 32位校验和算法比CRC32质量更好?

    是否有具有以下任一功能的 32 位校验和算法 输入数据大小 碰撞的分布更加均匀 这些与 CRC32 相关 由于 32 位存储空间的限制 我实际上不依赖第一个属性 但第二次 似乎就在那里could予以改进 有任何想法吗 谢谢 我需要具体的实现
  • 使用struts2使用动态参数进行重定向不起作用

    我在尝试使用动态参数重定向映射时遇到问题 我在 Struts2 中映射的方式
  • Facebook:应用程序配置不允许给定 URL

    从本周末开始 我们的一些较旧的 Facebook 游戏将无法加载 我认为这是由于游戏未获得访问令牌而导致的问题 因此无法代表用户 即 me 等 进行调用 我在 Javascript 控制台中看到以下内容 应用程序配置不允许给定 URL 应用
  • 'Zend_Db_Statement_Exception' 并显示消息 '无效的绑定变量名称 ':1'

    再会 背景信息 客户的托管服务器正在从 PHP 5 2 升级到 PHP 5 3 在 PHP 5 3 上测试时 客户端的应用程序崩溃了 具体来说 插入和更新方法是破坏应用程序的方法 该应用程序在 Zend Framework v1 7 2 中
  • WebAuthenticationBroker.AuthenticateAsync 引发异常

    我的代码使用 WebAuthenticationResult WebAuthenticationResult await WebAuthenticationBroker AuthenticateAsync WebAuthentication
  • 具有任意顺序的 JavaScript 依赖解决方案包括

    问题是这样的 我包含一个脚本 它使用另一个脚本 但是如果该依赖项还需要准备另一个脚本怎么办 这意味着加载它是不够的 但我还需要确保在执行之前调用了它的初始化回调 如果允许依赖项需要更多依赖项并在加载后显示它们 则 DOM 中脚本标签的顺序可
  • 小数和百分比行高有什么区别

    这个问题最初引用了w3c学校 我已经更正了该引用 根据w3c http www w3 org TR CSS21 visudet html propdef line heightCSSline height值可以设置如下
  • SQL Azure - 如何从 SQL Azure 中的主数据库中选择 sysdatabases 表?

    在 SQL Azure 中 我尝试这样做 从 master dbo sys 数据库中选择 并得到这个错误 此版本的 SQL Server 不支持引用 master dbo sysdatabases 中的数据库和 或服务器名称 我应该怎么做才
  • “最终一致性”与“强最终一致性”与“强一致性”?

    我遇到了 强最终一致性 的概念 它是否应该比 最终一致性 强但比 强一致性 弱 有人可以用适用的例子解释这三个概念之间的区别吗 http en wikipedia org wiki Eventual consistency Strong E