首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >最终一致性VS顺序一致性VS线性一致性(了解)

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

原创
作者头像
Eulogy
发布2025-07-26 16:09:45
发布2025-07-26 16:09:45
1660
举报
文章被收录于专栏:笔记本笔记本

最终一致性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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最终一致性VS顺序一致性VS线性一致性(了解)
    • 最终一致性
    • 顺序一致性
    • 线性一致性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档