consistency - etcd:强、线性和顺序一致性
问题描述
我在 etcd 的首页上阅读了以下内容:
etcd 是一种高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它在网络分区期间优雅地处理领导者选举,并且可以容忍机器故障,即使在领导者节点中也是如此。
他们所说的“强烈”一致是什么意思?他们的一致性模型如何与可能更正式或已建立的顺序和线性一致性定义相关联?
解决方案
分布式系统中描述的“一致性”不同于“ACID 事务”中描述的一致性。
Paxos、Raft、Zookeeper 等(etcd 基于 Raft)中描述的一致性与 ACID 术语中的 (D) Durability 非常相似。他们的意思是,一旦数据在大多数节点中写入磁盘,就会提交事务。这进一步意味着如果大多数节点启动,那么读取将获得最新的数据写入。 [1]
假设 etcd 有 5 个节点的集群,那么只有 3 个节点(大多数节点)提交事务时才会说事务已提交。
您从顺序和线性一致性中指的是(I)ACID 中的隔离属性。
等等。如果它每次都从大多数节点读取和写入数据,则具有可以具有“线性一致性”的模式。尽管像 H-Store 这样的数据库早在 2007 年就已经解决了这个问题,但在分布式系统中具有高性能的“顺序一致性”是个难题。
推荐阅读
- reactjs - 反应路由器不改变路径
- reactjs - 使用 react-spring 有条件地为 React 组件设置动画
- python - Django App Heroku 部署:应用程序与 buildpack 不兼容
- asp.net-core - 如何将 Google Drive 用于 .net 应用程序?
- flutter - BoxConstraints 强制无限高
- node.js - git push 的更改没有反映在 heroku 服务器上
- python - 在 Python 中通过图表更新源数据
- python - 在 NumPy 数组上实现滚动窗口的最有效方法
- css - QT5 样式 QPushButton 以删除它周围的空间
- exception - 我对中断、异常与信号定义的理解是否正确?