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

最终一致性VS顺序一致性VS线性一致性(了解)

最终一致性VS顺序一致性VS线性一致性(了解)

在分布式系统设计中,一致性模型是一个核心概念。它定义了多个节点之间数据同步的规则。本文简单学习一下最终一致性、顺序一致性、线性一致性模型。

最终一致性

最终一致性是最弱的一致性模型,它只保证数据在多个节点上在最终的情况下是一样的,但是在这之间,各个节点上这些数据到来的顺序,到来的时间都是不确定的。客户端可能会读取到旧值,不同的客户端读取的数据顺序也可能不一样。

业务场景:

实时性一致性要求不高的业务可以使用到最终一致性。

  1. 分布式的缓存和数据库之间的数据一致性。
  2. 用户动态博客、点赞数量、好友关注等。
  3. 库存计数。
  4. 日志数据等

顺序一致性

顺序一致性比最终一致性的保证略强一点,它要求所有客户端看到的服务的顺序是一致的,这个顺序可能不以时间为顺序,但是所有人看到的顺序都是一样的。比如一个客户端对数据进行了两次增加A和B。从服务器1上先同步到了A,然后是B;从服务器2上先同步到了B,然后是A,两个客户分别从1和2服务器上读取数据,一个客户是先A再B,一个客户是先B再A。虽然它们最终得到的数据都是A和B,但是违反了顺序一致性。客户端依旧可能读取到旧值。

业务场景:

  1. 分布式锁。Zookeeper实现分布式锁中,如果没有顺序一致性,可能会导致多个客户端同时认为自己获得到了锁。

线性一致性

线性一致性比顺序一致性还要强,除了所有客户端看到的多个服务器节点的数据顺序是一致的,而且保证,只要数据更新了,那么客户端就能立马读取到最新值。不会读取到旧值。要实现这个一致性,就需要很大的代价了。

一致性模型客户端观察顺序一致是否读取最新值性能开销典型系统或协议
最终一致性❌ 不保证❌ 可能读旧值✅ 性能最高缓存系统, DynamoDB
顺序一致性✅ 保证❌ 不一定最新⚠️ 中等ZooKeeper, 多核内存模型
线性一致性✅ 保证✅ 总是最新❌ 性能最低Raft, Paxos, Etcd
http://www.dtcms.com/a/300025.html

相关文章:

  • (六) Spring AI 1.0版本 + 千问大模型+RAG
  • 在python3.8和pytorch1.8.1的基础上安装tensorflow
  • Flink是如何实现物理分区?
  • 深入解析C++原子指针std::atomic
  • GIS地理信息系统建设:高精度3D建模
  • [Linux入门] 初学者入门:Linux DNS 域名解析服务详解
  • Anaconda常用命令及环境管理指南
  • kali [DNS劫持] 实验(详细步骤)
  • Containerd简介
  • 【Ubuntu】发展历程
  • 如何做数据增强?
  • 框架式3D打印机结构设计cad【9张】三维图+设计说明书
  • 【升级U8+】不能将值 NULL 插入列 ‘LocaleID‘,表 ‘hr_sys_function_Base‘;列不允许有 Null 值。
  • flink查看taskManager日志
  • 数组内存学习
  • Django5.1(130)—— 表单 API一(API参考)
  • 【Luogu】每日一题——Day14. P5960 【模板】差分约束 (图论 + 最短路)
  • Nacos-服务注册,服务发现(二)
  • mac版SVN客户端
  • Pythong高级入门Day5
  • npm ERR! cb() never called!
  • 昇思学习营-DeepSeek-R1-Distill-Qwen-1.5B 模型LoRA微调学习心得
  • 数据结构 二叉树(2)---二叉树的实现
  • 2025年SEVC SCI2区,混沌编码量子粒子群算法QPSO+柔性车间调度,深度解析+性能实测
  • 每日一题7.26
  • WorkManager vs Flow 适用场景分析
  • 抖音短视频矩阵系统源码搭建---底层框架5年开发分享
  • idea中无法删除模块,只能remove?
  • 二叉搜索树(Binary Search Tree)详解与java实现
  • 代码随想录打卡第十五天