- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解 etcd 上的“原子”更新是什么。
当我想到“原子”时,我认为有一个“之前”和一个“之后”(没有期间,如果更新失败,它仍然是“之前”)。
这是一个例子:
curl -s -XPUT http://localhost:2379/v2/keys/message -d value='Hidee Ho'
因此,此时任何人都可以访问该消息并获取当前值:
curl -s http://localhost:2379/v2/keys/message
{"action":"get","node":{"key":"/message","value":"Hidee Ho","modifiedIndex":4748,"createdIndex":4748}}
稍后,我可以修改这个值,如下所示:
curl -s -XPUT http://localhost:2379/v2/keys/message -d value='Mr Hanky'
并且可以像以前一样获取结果。在我的更改之前,值“Hidee Ho”返回,更改后值“Mr Hanky”返回。所以,我的问题是我能保证其中一个结果吗?也就是说,我想确认将返回其中一个(而不是结果之间的nil值)。
我并不特别关心时间。如果我执行 Mr Hanky 更新,并且随后的值 getter 在(短)一段时间内继续获取 Hidee Ho,那就可以了。
我很困惑,因为协议(protocol)中有一个原子CompareAndSwap函数。据我所知,与其说它是原子的,不如说它是“仅在值符合我所说的情况下才进行更新”。就我而言,我不太关心过去的值(value)是多少。我只是想知道它已更改,并且读者不会看到除了“之前”或“之后”值之外的任何内容。
最佳答案
您是正确的,因为纯 PUT 是原子的,因为客户端只会看到以前的值或新值。
CompareAndSwap 功能允许您进行乐观锁定,以便您可以写入依赖于先前值的新值,例如一个柜台。如果您要在不使用 CompareAndSwap 的情况下实现计数器,则会有类似 write("count", 1 + read("count"))
的内容,在这种情况下,读取和写入是分开的,如果两个调用者同时执行此操作,那么他们可能都会看到相同的起始值,并且您会丢失其中一个增量。使用 CAS,调用者可以说仅当先前的值为 11 时才将其设置为 12,现在如果这种情况同时发生,其中一个写入将失败,然后它可以重新读取并重新应用其增量,这样您就不会丢失任何增量。
关于etcd - 如何使用 etcd 进行原子更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30809058/
我正在使用此命令启动 etcd(v3.3.15) 服务: systemctl start etcd 这是我的 etcd 系统配置: [Unit] Description=Etcd Server Aft
我尝试为数据中心设置 coreos etcd 集群。 我最多可以在集群中为其设置多少个节点? 我和添加更多节点是否有助于提高性能? 我没有从官网上找到图。它只提到 9 就可以。 最佳答案 据我所知,我
跨多个数据中心使用 etcd 是否安全?因为它将 etcd 端口暴露给公共(public)互联网。 在这种情况下我是否必须使用客户端证书或 etcd 有某种身份验证? 最佳答案 是的,但是您需要解决两
我试图理解 etcd 上的“原子”更新是什么。 当我想到“原子”时,我认为有一个“之前”和一个“之后”(没有期间,如果更新失败,它仍然是“之前”)。 这是一个例子: curl -s -XPUT htt
我是 etcd 的新手还有一些关于日志复制的困惑点: 例如,leader 发送 {term:2,index:3} 然后发送 {term:2,index:4},大多数人也按顺序响应。但由于网络延迟,le
使用 -w json 或 --hex 标志以 json(base64) 或十六进制格式提取 etcd 数据很简单 ETCDCTL_API=3 etcdctl get /registry/secrets
我正在使用 github.com/coreos/etcd/client 与 etcd 云通信,有时我会收到 401 错误“请求索引中的事件已过时并已清除”,在服务器页面上有一个解释为什么它发生了如何解
我正在尝试使用 Containerd 在 CentOS 8 上设置 3 个节点的 Kubernets 1.18。按照 Stacked control plane 和 etcd 节点 ( https:/
我们的 kubernetes 集群最近因 etcd“超出数据库大小”而崩溃。 我们通过“简单”的 etcd 集群端点碎片整理 (see here) 成功地恢复了一切。 不幸的是,一切还不完美。特别是
我在golang中遇到以下错误 # go.etcd.io/etcd/clientv3/balancer/picker
我尝试在 kubeadm 中使用 coredns 安装 cilium 库贝:1.12.3 纤毛:1.3.0 我收到此错误: Readiness probe failed: KVStore: Fail
当我想通过在 Rancher UI 中选择 etcd、Controle Plane 和 Worker 来加入节点时,我收到了这个错误: 集群必须至少有一个 etcd 平面主机:无法连接到以下 etcd
ETCD-raft笔记 0. 引言 该篇博客基于etcd v3.5.7版本,首先会简单介绍etcd/raft对Raft选举部分的算法优化,然后通过源码分析etcd/raft的选举实现。
我正在使用 ubuntu 14.04 并且我正在配置 etcd 以与 calico 一起使用,但该服务不起作用。 这是我的 etcd.conf 文件: # vim:set ft=upstart ts=
我正在尝试在 Ubuntu 机器上设置 3 节点 etcd 集群作为网络的 docker 数据存储。我使用 etcd docker 镜像成功创建了 etcd 集群。现在,当我尝试复制它时,这些步骤在一
据我所知,etcd使用 Raft 作为共识和领导者选择算法来维护一个领导者,该领导者负责保持 etcd 的集合。节点与 etcd 中的数据更改同步簇。除此之外,这允许 etcd从集群中的节点故障中恢复
etcd:增加30%的写入性能 本文最终的解决方式很简单,就是将现有卷升级为支持更高IOPS的卷,但解决问题的过程值得推荐。 译自: etcd: getting 30% more wr
正在尝试使用 coreos/jetcd 用于更新 etcd 中的 haproxy 设置来自Java代码。 我想要实现的是: 删除单个主机的所有端点 添加给定主机的更新数据 我想通过前缀删除所有键,并将
我在 AWS 中有一个 k8s 集群,看起来部分正常,但实际上不会进行部署。查看组件的健康状况时,etcd 显示为不健康。这似乎是 etcd 端点被查询为 http 与 https 的问题: kube
我正在尝试使用etcd作为后端部署CoreDNS。我已经了解了etcd和CoreDNS的大多数配置,但是我正尝试为开发人员提供文档,说明如何将记录推送到etcd中以供CoreDNS使用。 阅读所有et
我是一名优秀的程序员,十分优秀!