初探CAP定理及其不可兼得性
一、对CAP定理的理解
CAP定理是分布式系统设计的核心理论。由Eric Brewer在2000年提出,后由Gilbert和Lynch在2002年严格证明。分别是指Consistency一致性,Aavailability可用性,Partition Tolerance分区容忍性。
- Consistency一致性,是指数据在多个副本间是保持一致的。或者说节点在同一时间看到相同的数据,即强一致性。
- Availability可用性,指每个请求都能得到非错的响应。非错是指不保证获得的数据是最新的。
- Partition Tolerance是指当分布式系统出现网络分区时,仍然能提供对外服务。
二、为什么说CAP不可兼得?
Cap理论表示一个分布式系统不可能同时满足不能CAP三个条件。分布式系统一定要满足Partition Tolerance分区容忍性。如果不满足p,也就是不存在分区,那么就意味着要将所有的服务都放在一个服务器上,这时这个系统也不能称为分布式系统了。
C和A权衡和选择最主要看要达到什么样程度的一致性。
如果要达到强一致性,那么就必须满足C;如果要达到一般一致性,更多考虑可用性,那么就更多要考虑A。
而C和A是不可能同时共存的。如果要保证C强一致性,因为主节点与副本之间存在数据同步的过程,必然导致系统的阻塞,这时候的系统处于不可用的状态即不满足A。
如果要保证A可用性,则不允许系统存在阻塞的情况,此时会出现访问到旧数据的情况,即会导致短暂的不一致。
综合考虑下来。总共只有两种模型存在,即CP和AP。
初探CAP定理及其不可兼得性的更多相关文章
- 分布式CAP定理
根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),最 ...
- 关于CAP定理的个人理解
CAP定理简介 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(C ...
- CAP原则(CAP定理)
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- CAP定理与RDBMS的ACID
一.分布式领域CAP理论 CAP定理指在设计分布式系统时,一致性(Consistent).可用性(Availability).可靠性(分区容忍性Partition Tolerance)三个属性不可能同 ...
- 佳文分享:CAP定理
1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall ,Sex Pistols 乐队(注:Sex Pistols的经理 ...
- 分布式CAP定理,为什么不能同时满足三个特性?
在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理. 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性). Availability(可 ...
- 【分布式】1、CAP原则(CAP定理)、BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- 【翻译】Brewer's CAP Theorem CAP定理
Brewer's CAP Theorem 原文地址:http://www.julianbrowne.com/article/brewers-cap-theorem Brewer’s (CAP) The ...
- CAP原则(CAP定理)、BASE理论
CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...
- 对CAP定理的理解
CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个解释很让人费解,笔者在看 ...
随机推荐
- git 烂笔头
git 烂笔头 触类旁通, 举一反三, 不求甚解, 欢迎补充 详细介绍 git connect github # 1. 本地配置, 姓名和邮箱 git config --global user.nam ...
- 我最常用的 Visual Studio 2022 扩展插件推荐:生产力必备工具
Visual Studio 2022作为微软推出的一款功能强大的IDE,业界称之为"宇宙第一IDE".它以出色的性能.丰富的内置功能和对多种编程语言的支持,深受开发者喜爱.然而,随 ...
- SSH登录方式及如何防止SSH端口被扫
ssh登录服务器的方式有三种:密码登录,公钥登录,证书登录.同时,密码登录有被破解的风险,网络上也有很多在扫描ssh端口的主机. 比如: 这里175.178.62.36是一个来自广东的服务器,17次尝 ...
- Bandit Python代码审计漏洞检测工具实战
系统概述 Bandit是一个用于分析Python代码审计安全漏洞的工具,旨在识别常见的安全问题,如硬编码密码.不安全的函数调用.SQL注入等.它通过构建抽象语法树(AST)并对节点运行适当的插件来检测 ...
- 话说Hangfire
参考文档 www.hangfire.io github.com/HangfireIO/Hangfire .NET Core开源组件:后台任务利器之Hangfire
- word突然无法转换latex公式的解决尝试
正常情况下我在word插入复制的latex公式步骤如下(以\(\mu\neq 10\)为例): 把\(\mu\neq 10\)粘贴到word文档中,选中\(\mu\neq 10\)并同时按下alt和等 ...
- 学习unigui【17】-数据集和JSON互相转换-DataSetConverter4D 开源项目
学习unigui过程中,出现使用json和fdquery等数据交换的太多场景要求. 感谢开源DataSetConverter4D提供轮子. 直接抄demo: {Convert DataSet to J ...
- Unity3d中协程的原理,你要的yield return new xxx的真正理解之道
- 结合钉钉机器人用python写监控打印机碳粉状态程序
点击查看代码 from pysnmp.hlapi import * import requests import json # 配置信息 PRINTER_IP = '1.1.1.1' # 打印机IP ...
- mysql如何替换部分字符串
本篇内容主要讲解"mysql如何替换部分字符串",感兴趣的朋友不妨来看看.本文介绍的方法操作简单快捷,实用性强.下面就让小编来带大家学习"mysql如何替换部分字符串&q ...