分布式

cap算法

简介:

  • 一致性: 在写操作完成之后开始的读操作,必须返回该值,或者以后写操作的值。(在一致的系统中,客户端将值写入任何服务器并获得响应后,它希望能够从其读取的任何服务器读取该值)。
  • 可用性: 系统中每个非故障的节点收到的请求必须获得响应。(在可用的系统中,如果我们客户端向服务器发送请求,且该服务器没有崩溃,则服务器必须响应客户端,并不允许服务器忽略客户端的请求)。
  • 分区容错性: 网络将被允许任意丢失从一个节点发送另一节点的许多消息。

为什么不存在一个同时支持cap的服务?

  1. 我们先假设存在一个服务同时支持“一致性”,“可用性”,“分区容错性”。 如图下:
    image.png
  2. 这个时候出现了网络分区(即G1服务器和G2服务器不能交流)。客户端先向G1服务器提交请求,需要把v0改成v1。因为服务需要满足可用性。所以G
    1 需要正确响应服务的请求,把v0 改成v1,但是网络分区了,G2服务器并不能收到变更,在G2中服务还是v0。
  3. 此时客户端去G2请求值,G2依然返回v0,所以并不满足一致性的要求,所以此服务不存在。
  4. 综上所述,不可能存在同时满足cap的服务。

cap结论:

分布式服务必定会发生网络分区的问题(服务器间状态不能同步)。此时只能在一致性 和 可用性 中作出一个取舍。 如果要求强一致性,那么只能牺牲可用性,拒绝客户端的写请求,如果要求服务的可用性,那么服务之间的状态必定不能同步,所以一定会牺牲一致性。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、CAP理论 在理论计算机科学中,CAP定理,也就是以计算机科学家Eric Brewer的名字命名的Brewer...
    HRocky阅读 3,576评论 0 0
  • 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于...
    脆皮鸡大虾阅读 1,742评论 0 1
  • 前言 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最...
    Devincd阅读 3,207评论 0 0
  • 1、什么是分布式事务 当所有操作都针对同一台机器的同一个数据库时,可以依靠数据库自身的锁、重做日志等来保证事务的A...
    冰河winner阅读 2,990评论 0 0
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 11,028评论 0 5

友情链接更多精彩内容