Spring Cloud学习笔记(1)- 分布式系统基本原则CPA

分布式系统的基础特性:

  1. 一致性 (Consistency)
  2. 可用性 (Availability)
  3. 分区容错性 (Partition tolerance)

分区容错性

分布式系统分布在多个子网络,每个子网络被称为一个区 (Partition)

区间通信是有可能引发错误的,分区之间的通信错误是无法避免的,主要是在分区通信错误后无法保持一致性和可用性。

一致性

写操作之后的读操作,必须返回该值。

example:

当前分布式系统存在两台服务器,一台在深圳名为Server1,一台在上海名为Server2。
商户用户小明将位于深圳服务器上的商品A的价格由75.00元修改为为48.00元,
当购买用户小红访问上海服务器上的商品A时,看到的价格也应该为由75.00元修改为48.00元。
复制代码

可用性

只要收到用户的请求,服务器就必须给出回应。

example:

用户可以选择向任何一台分区服务器发起读操作,不管是哪台服务器,只要收到请求,就必须告诉用户,
到底是75.00元还是 48.00元,否则就不满足可用性。
复制代码

分布式系统的主要矛盾

一致性和可用性是不可调和的矛盾,因为分区通信错误是无法避免的。

example:

当前分布式系统存在两台服务器,一台在深圳名为Server1,一台在上海名为Server2。
当Server1写入用户点赞数据时,必须同步将用户点赞数据同步到Server2。
在同步时,需要定Server2中的用户点赞数据,执行写操作。
当执行写操作时,Server2中的用户点赞数据是被锁定的,不可被外部访问,故而丧失了可用性。
如果为了保障Server2的用户点赞数据可读,必须保障不锁定写操作,故而可访问性和可用性是不可调和的矛盾。
复制代码

在分布式系统中,必须首先保障可用性,可用性的优先级是第一位的。

example:

A在深圳使用某信发布朋友圈,他的某信好友任何时候都要保障可以访问A的朋友圈,
但是不一定保障同步到A的朋友圈最新消息。
不能因为A的朋友圈发布了新内容,而本地服务未同步朋友圈消息而导致朋友圈访问错误。
复制代码

tips:

在大型分布式系统中,任何时候首先保障可用性,尽量的保障一致性,提高分区容错性。

在任何分布式系统中,CAP特性最多同时满足两个

原文 

https://juejin.im/post/5ef2302a518825657a3e1f7b

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » Spring Cloud学习笔记(1)- 分布式系统基本原则CPA

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址