当前位置: 首页 > article >正文

【ETCD】【Linearizable Read OR Serializable Read】ETCD 数据读取:强一致性 vs 高性能,选择最适合的读取模式

ETCD 提供了两种不同类型的读取操作方式,分别是 Linearizable Read(线性化读取)和 Serializable Read(可串行化读取)。这两种方式主要区分在读取数据时对一致性的要求不同。

目录

      • 1. Linearizable Read(线性化读取)
        • 特点:
        • 优点:
        • 缺点:
      • 2. Serializable Read(可串行化读取)
        • 特点:
        • 优点:
        • 缺点:
      • 总结:

1. Linearizable Read(线性化读取)

线性化读取保证了读取到的数据是 最新的,即保证了对所有客户端的一致性视图。它确保每次读取操作都能返回所有前一个写操作的结果。简单来说,线性化读取保证了客户端读取到的数据至少是写入的数据的“最新值”,并且该值是经过共识协议(如 Raft)确认的。

特点:
  • 严格一致性:每次读取的数据都来自一个已经提交的写操作,并且该操作在集群中是被一致认可的。
  • 阻塞读取:在进行线性化读取时,ETCD 会确保客户端从最新的数据源中读取数据,因此可能需要等待 Raft 协议完成数据的一致性同步,导致读取操作可能会有延迟。
优点:
  • 数据一致性:保证读取到的是最新的数据,满足强一致性要求,适用于对数据一致性要求高的场景。
缺点:
  • 性能较低:由于线性化读取需要跨节点的共识来保证数据一致性,可能导致较高的延迟和较低的吞吐量,尤其是在高并发情况下。

2. Serializable Read(可串行化读取)

可串行化读取是一个更宽松的读取模式,它允许读取到的数据在某些情况下可能并不是最新的,但仍然保证读取的数据满足一定的序列化规则。换句话说,ETCD 会确保多个并发的读取操作不会造成数据冲突或不一致,但可能会读取到稍微过时的数据。

特点:
  • 顺序一致性:可串行化读取保证多个操作(无论是写操作还是读操作)是可以按顺序串行化的。即使不同客户端的操作并发发生,也会确保没有冲突。
  • 不需要强一致性:与线性化读取不同,可串行化读取不一定要求读取到最新的数据。它保证数据在逻辑上是顺序一致的。
优点:
  • 较高的性能:由于不要求强一致性,读取操作的延迟较低,性能更好,适合高吞吐量的场景。
  • 支持并发操作:可串行化读取适合对一致性要求较低但对并发性要求高的场景。
缺点:
  • 一致性不强:读取的数据可能是过时的,无法保证读取到最新的数据。适用于对一致性要求不高的场景。

总结:

特性Linearizable Read (线性化读取)Serializable Read (可串行化读取)
一致性保证强一致性,读取的数据是最新的顺序一致性,读取的数据可能稍微过时
性能性能较低,可能导致较高延迟和吞吐量降低性能较高,读取操作响应较快
适用场景对数据一致性要求高的场景(如配置管理、分布式锁)对并发性能要求高、一致性要求相对较低的场景
数据时效性保证读取到最新的数据可能读取到过时的数据
操作复杂度需要通过 Raft 协议保证一致性,通常需要等待数据同步不强制要求最新数据,可接受延迟或旧数据
写入延迟影响写入操作和读取操作紧密相关,写入延迟可能影响读取写入操作可能不会直接影响读取,系统更容错
Leader 节点的影响读取操作需要通过 Leader 节点进行,Leader 节点可能成为性能瓶颈,影响整体吞吐量和响应时间读取操作可以从 Follower 节点进行,减轻了 Leader 节点的负担,提供更好的负载均衡和性能
优点- 确保读取到的是最新的数据- 较高的性能,低延迟
- 强一致性,适用于对一致性要求高的场景- 更适合高并发的场景
缺点- 性能较低,可能会增加延迟和降低吞吐量- 读取的数据可能是过时的,不能保证最新数据
- Leader 节点可能成为瓶颈,影响整体性能- 无法保证数据总是最新的

http://www.kler.cn/a/442454.html

相关文章:

  • C++算法第十六天
  • Yolov8 目标检测剪枝学习记录
  • 网络安全 | 什么是威胁情报?
  • Outlook 无网络连接[2604] 错误解决办法
  • RV1126+FFMPEG推流项目(7)AI音频模块编码流程
  • Linux 查看内存命令
  • linux tomcat安装
  • ORB-SLAM3源码学习:G2oTypes.cc: void EdgeInertial::linearizeOplus计算残差对状态增量的雅克比矩阵
  • POSTGRESQL版本测试
  • 【AI日记】24.12.18 kaggle 比赛 2-7
  • windows服务器Oracle TNS 远程监听器中毒
  • 如何在谷歌浏览器中开启安全浏览
  • thinkphp8+layui分页
  • 详细解读BSCI验厂
  • Halcon中histo_2dim(Operator)算子原理及应用详解
  • jmeter怎么调用python
  • 【CSS】实现tag选中对钩样式
  • 数字经济下的 AR 眼镜
  • 聚观早报 | 小米汽车加速出海;越南关闭2G服务
  • 车辆 CSMS 网络安全解析
  • CSS 进阶教程:从定位到动画与布局
  • sql 批量修改字段 的默认值
  • 算法-字典树
  • 配置 wsl 2 网络代理时的认知误区
  • ubuntu 下的sqlite3
  • 4、基于SpringBoot网页时装购物系统