首页 > 其他分享 >CAP原理

CAP原理

时间:2023-01-07 15:22:05浏览次数:28  
标签:可用性 机器 CAP 满足 同步 一致性 原理 数据

1. cap基本理论

cap是指在分布式系统中,一致性(consistency)、可用性(avaliablity)、分区容错性(partition tolerance)

 

 一致性

all nodes see the same data all the same time.所有主副结点同一时间数据完全一致(这里是指数据同步)

可用性

read and write always success.服务一直是可用的,用户随时访问,都能在可控时间内返回正确的数据(理解起来似乎和一致性一样,其实是指在数据在所有节点同步后才能达到可用性的)

分区容错性

即多节点/多服务器。分布式系统在某一个节点出问题后不影响其他节点,其他节点仍能够对外提供一致性或者可用性的服务

 

2. cap三者不可兼得

满足c、a,那么p能不能满足:满足c是要求实现所有机器数据同步,而同步需要时间,机器越多同步时间越久。这里问题来了,同时满足c同时要满足a(即可控时间内用户查询所有机器返回数据都是正确的)这样只能要求机器不能太多,也就是p是满足不了

 

满足c、p,那么能不能满足a:满足c是要求实现所有机器数据同步,而同步需要时间,机器越多同步时间越久。这里问题来了,同时满足c同时要满足p(即机器也要够多),那么数据同步需要很多时间。而a的要求是可控时间内用户获取所有数据都是最新的,所以说a不能满足

 

满足a、p,那么能不能满足c:满足a要求用户可控时间内访问所有机器得到数据都是最新的,满足p是要有足够多的机器,那么如果机器比较多同步数据的时间就很大。所以这种情况下不能满足c

 

一般来说,分布式系统大都是满足ap,选择牺牲强一致性,选择最终一致性,比如双11、12306等经常出现抢到之后显示没有情况

 

3.Base理论

Base是basically avaliable(基本可用)、soft state(软状态)和eventually consistent(最终一致性)的简写。base作用是保证系统的可用性,然后通过最终一致性来代替强一致性,它是目前分布式系统设计中最具指导意义的经验总结。

Base中基本可用指得是保障核心功能的基本可用,其实是做了“可用性”A方面的妥协,比如

  • 电商网站在双十一大促等访问压力较大的时候,关闭商品排行榜等次要功能的展示,从而保证商品交易主流程的可用性,这也是我们常说的服务降级;

  • 为了错开双十一高峰期,电商网站会将预售商品的支付时间延后十到二十分钟,这就是流量削峰

  • 在你抢购商品的时候,往往会在队列中等待处理,这也是常用的延迟队列

软状态、最终一致性指得是允许系统中数据存在没有及时更新的中间状态,但是最终数据状态是要更新到最新的

 

 

参考文献

https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247539136&idx=2&sn=17a9f1dd8724e27ea5c0f9cfd298fd1b&chksm=fbb1d03eccc659285c15a9c71231a404535ab1be975c062eef32dc96906c29aa322509e6809d&scene=27

标签:可用性,机器,CAP,满足,同步,一致性,原理,数据
From: https://www.cnblogs.com/enhance/p/17032714.html

相关文章

  • CAS原理
    1.CAS基础1.1CAS操作原理 CAS:compareandswapCAS操作包含三个操作数:内存位置(V)、预期原值(A)、更新值(B); 2Atomic原子类JDK5之后新增并发包java.util.concurrent......
  • 【分布式技术专题】「LVS负载均衡」全面透析Web基础架构负载均衡LVS机制的原理分析指
    前提概要在大规模互联网应用中,负载均衡设备是必不可少的组成部分,源于互联网应用的高并发和大流量的冲击压力场景下,通常会在服务端部署多个无状态的应用服务器和若干有状......
  • 【分布式技术专题】「LVS负载均衡」全面透析Web基础架构负载均衡LVS机制的原理分析指
    前提概要在大规模互联网应用中,负载均衡设备是必不可少的组成部分,源于互联网应用的高并发和大流量的冲击压力场景下,通常会在服务端部署多个无状态的应用服务器和若干有状态......
  • Vue2和Vue3实现响应式原理
    <!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>Document</title> </head> <body> <scripttype="text/javascript"> //源数据 letpers......
  • 230106_50_RPC底层原理
    目前Stub只能拿到一个接口,IUserService。如果新增接口后,需要重新修改,支持任意接口。具体优化如下:Stub优化packagecom.bill.rpc06;importcom.bill.rpc.common.......
  • 鸽巢原理运用
    给定长为\(m\)的序列\(a\),求一组\(k,l\)使得\(m|\sum\limits^l_{i=k}a_i\)。第一行输入\(m\);第二行输入\(m\)个数字,表示序列\(a\)。输出\(k,l\)保证\(0\le......
  • Asp.Net Core 中IdentityServer4 授权原理及刷新Token的应用
    一、前言上面分享了IdentityServer4两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享IdentityServer4的......
  • Asp.Net Core EndPoint 终结点路由工作原理解读
    一、背景在本打算写一篇关于Identityserver4的文章时候,却发现自己对EndPoint-终结点路由还不是很了解,故暂时先放弃了IdentityServer4的研究和编写;所以才产生了今天这篇......
  • 栈溢出(一):栈溢出原理以及基本ROP
    栈栈是一种数据结构,遵循后进先出的原则(LastinFirstOut),主要有压栈(push)与出栈(pop)两种操作eax,ebx,ecx,edx,esi,edi,ebp,esp等都是X86汇编语言中CPU上的通用寄......
  • 动态代理原理
    简介java.lang.reflect.Proxy是整个jdk中实现动态代理的核心类,本文主要介绍Proxy类的实现,关于Proxy类的使用请自行查阅其他资料。FieldconstructorParams:构造函数的......