技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 一文读懂分布式系统CAP定理

一文读懂分布式系统CAP定理

浏览:849次  出处信息

   总有一些看不见的手在控制着软件的世界,就像CAP定理,第一次听到这个词竟然是在面试场合,真的是汗颜,回来之后数次尝试去理解这个定理。英文原文理解不透,中文介绍更是百花齐放百家争鸣,总是感觉一知半解。痛定思痛,决定好好研究一番,并用更加通俗的言语进行解释。

名词

CAP定理,又称布鲁尔定理,它指出对于一个分布式计算系统来说,不可能同时满足以下三点:一致性(Consistency):所有客户端同时查询或者更新为相同的最新数据可用性(Availability):不管是否成功,确保每一个请求合理的时间内接收到响应分区容错(Partition tolerance): 当系统因为网络问题被分割为多个区域时,系统仍然能提供正常服务的能力。

原理

分布式系统:应用部署在多个计算节点,Node之间通过网络进行交互。分区:网络的不可靠性,Node之间的隔离是不可避免的存在。当网络不可达时,系统因为网络被分离为多个可联通区域,所以分布式系统的分区是不可避免的。
  • 优先满足CA

基于主键的mysql分库分表实现:数据库分为N个实例,每个实例M个表,主键 % N 余数为实例的index主键 % M 余数为表的index每个数据只存在于一个实例的一个表中,因此满足一致性。当因为网络原因mysql集群导致分区时,客户端访问可联通区域的数据时,可用性和分区容错性得到保证;但是客户端访问数据不在可连接的分区,系统返回数据库访问错误,满足可用性,不满足分区容错。因此该访问满足CA,但是不容忍任何分区
  • 优先满足CP

使用主从结构的mysql集群,做读写分离,写master,读slave;为保证数据一致性,master更新后,必须slave完全复制成功,才作为更新成功返回。因此满足数据一致性(C)的要求。系统分区导致,部分slave不能交互,数据不能从master向slave复制,导致写不可用,但是读不影响的结果。因此满足C(一致性)P(分区容错读可用),不满足A(写功能不可用)
  • 优先满足AP

仍然使用主从结构的mysql集群,做读写分离,写master,读slave;为保证可用性,数据master更新成功,既认为数据更新成功,当部分slave不用的情况下,仍然可保证读写的可用性,以及分区容错。但是数据存在不一致的情形,部分客户端与不能和master进行数据复制的slave位于同一个分区,可能导致读取历史数据。因此满足A(可用性)P(分区容错读写均可用),不满足C(读不复制slave的历史数据)

BASE思想

越来越多大数据量,高并发系统在CAP定理的制约下采用优先满足AP,保证可用性,允许临时中间态,数据最终保证一致。即为BASE思想:BA:Basically Available基本可用S:Soft state软状态 状态可以有一段时间数据处于中间态,数据不一致。E:Eventually consistent最终一致,最终数据是一致。

建议继续学习:

  1. 分布式缓存系统 Memcached 入门    (阅读:14700)
  2. Zookeeper工作原理    (阅读:10352)
  3. GFS, HDFS, Blob File System架构对比    (阅读:9356)
  4. Zookeeper研究和应用    (阅读:8500)
  5. 分布式日志系统scribe使用手记    (阅读:8021)
  6. 一致性哈希算法及其在分布式系统中的应用    (阅读:7911)
  7. 分布式哈希和一致性哈希    (阅读:7634)
  8. HBase技术介绍    (阅读:6736)
  9. 分布式系统的事务处理    (阅读:5967)
  10. Memcache分布式部署方案    (阅读:5429)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1