看《大明王朝1566》聊分布式中的CAP和BASE理论
概述 CAP 和 BASE 理论
基本上接触过分布式系统的朋友都知道 CAP 和 BASE 理论,这两个理论对工程实践中的分布式架构设计具有重要的影响。CAP 理论是加州大学伯克利分校的 Eric Brewer 教授提出的,并被 MIT 的 Seth Gilbert 和 Nancy Lynch 使用学术理论进行了严格的证明。
CAP 和 BASE 理论都有数学证明,但今天打算以一种轻松些的方式来最两个理论做个浅显的解释。
最近偶尔刷一集《大明王朝1566》,这部剧之前看过开头几集,后来因为画质差没资源没有继续看,最近优酷貌似重制了,清晰度好了一些,就偶尔有时间刷一集,这真是一部好剧啊。今天就拿大明王朝的故事背景来对 CAP 和 BASE 理论做个介绍吧,希望不会写的太烂。
大明王朝故事背景
历史上学过明朝设有内阁和司礼监,皇帝通过管理内阁和司礼监来管理天下,这种机制其实应该是很先进的皇权机制了。不过,明嘉靖帝,沉迷修道升仙,执政期间严嵩父子把持朝政、一手遮天、贪墨不计其数。虽说内阁和司礼监腐败严重,但剧里内阁的严嵩和司礼监的吕公公在决策上还是会听皇帝的。这就不讲了,现在回归主题吧,现在主要引入剧中的如下几个人:
- 嘉靖:明朝皇帝,对于重要决策,一般会联合内阁和司礼监进行商讨,最终各方达成一致;
- 严嵩:内阁首辅,主要管理两京一十三省的各地官员;
- 吕芳:司礼监总管,主要管理宫廷有关的事宜;
- 杨金水:吕芳干儿子,任浙江任织造局总管,主要负责江浙织造丝绸管理,卖丝绸,其实就是替皇帝做生意的;
- 郑泌昌、何茂才:严嵩手下,一个任浙江巡抚,一个是按察使,属封疆大吏;
- 海瑞:时任杭州淳安县知县,由裕王举荐而来,奉命处理堤坝决堤后的赈灾事情;
为什么 CAP 无法同时被满足?
故事发生时,南有戚继光抗倭激战,北有鞑靼入侵,急需大量军需,然经过长达二十多年的朝政腐败,国库空虚,皇帝经过与内阁和司礼监商量后,决定在浙江推行改稻为桑的国策,就是把稻田改为桑田养蚕生丝,进而多织丝绸出口赚钱,然而遭到农民反对,郑必昌何茂才在收到严嵩儿子密令后,决定决堤淹城,以达到改稻为桑的目的,事发后,淳安全部被淹、建德半数被淹,灾民无数。这时,海瑞出场了,其到达淳安后,发现贪腐严重,堤坝被毁另有隐情,阻止改稻为桑,决定一查到底。
海瑞毕竟是皇帝儿子举荐的官儿,郑何和杨金水等人不敢任意干掉海瑞,只能上书上司,杨金水就写信给吕芳,郑何二人就写信给严嵩儿子。因为改稻为桑推行不下去是大事啊,所以严嵩和吕芳都非常重视,收到来信后立即想了对策,然而两人想的对策不一样,等皇上来决定吧,决定完了下发到浙江官员。正巧这个时候嘉靖在修道升仙,闭关不问世事。这样,两个人的意见不一致,并且无法达到统一,底下人都在等着回信,如果十天收不到回信下面可能就乱了,但是皇帝要闭关一个月。
上面这段陈述中:
皇帝闭关就相当于严嵩和吕芳达成一致的通道断了,在分布式中就是两个节点发生了网络分区;
底下人等着回信,十天没收到回信就乱了,如果十天内收到了上面的回信,对应到分布式中就是保证了可用性;
严嵩和吕芳就意见无法达成一致,那么对应到分布式中就是没有保证一致性
再简述一下分布式系统中 CAP 的意义:
P 代表着分区容忍性,要满足 P 就表示允许网络分区的发生(允许嘉靖帝闭关);
C 表示一致性,满足 C 就要求所有节点数据需要一致(严嵩和吕芳意见应该达成一致);
A 表示可用性,就是说对于他人的请求,节点需要提供服务响应的返回(严嵩和吕芳不让下面的人等过久)
那为什么 CAP 无法同时满足呢?
如果满足 CP,那么由于嘉靖帝闭关的一个月期间(P),严嵩和吕芳无法通过嘉靖帝达成一致,如果要保证一致(C),那就只能等嘉靖帝出关,然而这需要一个月的时间,下面的人早就等疯了,这就相当于服务不可用了,所以无法满足 A;
如果满足 AP,那么严嵩和吕芳必须在10天内回复(A),然而皇帝闭关一个月(P),那么两人在十天内是无法达成一致的,也就是无法满足 C;
如果满足 CA,要在10天内回复下层官员,另外严嵩和吕芳两人也要意见一致,那只能在10天内请皇帝出关了,那就无法满足 P;
不知道这么讲是否够明白,CAP三个要求是无法同时满足的,那 BASE 理论在 CAP 的基础上做了什么让步和平衡?下面一起来看看。
BASE 基于 CAP 做了什么样的权衡?
BASE 包含三个方面:Basically Available(基本可用)、Soft state(弱状态)和 Eventually consistent(最终一致性)。我们从上面的故事来说一下这几个概念。
对于分布式系统来说,必须要满足分区容错性,否则各个节点就相当于一个节点了,分布式就没有任何意义了。在满足分区容错性的条件下:
- Basically Available
就是说节点在出现问题时,不是完全不可用,而是允许损失部分可用性。例如,严嵩和吕芳无法达成一致,这时不能让下面等待一个月没有回信,这时发送一个降级的决策(例如让下面官员先跟海瑞等进行斡旋,不让其查到要命的证据),或者下面官员自己先搞一些应对措施,然后加长等待时间(可以等待一个月),这样,整个系统不至于完全乱掉,而是先有一些应对措施。这就是基本可用。
- Soft state
严嵩和吕芳先将自己的第一个建议性的决策下发,等待皇帝出关后再进行一致性决策。在第一个建议性的决策到最终一致性决策期间,其实两方的意见并不一致,BASE理论允许在一定时间内存在这种状态。这就是软状态。
- Eventually consistent
在皇帝出关后,吕芳严嵩立即与皇帝协商,然后得到一致的决策。这个时候,如果下面应付不了,那么会再次上书,这时,严嵩吕芳已经有了一致的结论,那么再次下发给下层官员时,就是一致的决策了,这样郑必昌、何茂才、杨金水就可以已一致性的态度对待海瑞了。这就是最终一致性。
转载于:https://juejin.im/post/5cab6eb2f265da0393784399
看《大明王朝1566》聊分布式中的CAP和BASE理论相关推荐
- base cap 分布式_1、分布式基础之CAP和BASE理论
ACID 是数据库事务完整性的理论,CAP 是分布式系统设计理论,BASE 是 CAP 理论中 AP 方案的延伸. 一.从集中式到分布式 1.集中式 集中式是指有一台或者多台计算机组成的中心节点,数据 ...
- 分钱、用人和交替,看《大明王朝1566》
<大明王朝1566>是一部非常经典的历史正剧,以"倒严"为主线,以嘉靖.海瑞等为主角,深刻的刻画了明朝嘉靖年间的高层政治生态和百姓生活状态.小说我曾经在几年前读过,花了 ...
- 隆重推荐:大明王朝1566
放只老虎在后头追,只要是个正常人,肯定豁出亲命了往前跑.这个例子形象地向我们说明,外部的推动力非常强大~~ 不过,不是所有人都能适合这种方式,甭管腿脚多利索,贸然给自己找只老虎在屁股后头蹲着,有时候不 ...
- 历史风云大戏:大明王朝1566
历史风云大戏:大明王朝1566[@more@] 揭开中国历史上最另类的皇帝嘉靖数十年不上朝的执政之谜 揭示中国历史上清官海瑞以"智忠"代"愚忠"的为官之道 揭露 ...
- 《大明王朝1566》观后感
<大明王朝1566>是一部非常好的电视剧,反映了官场之复杂.其中有各个级别的官员的博弈,各个派别的博弈,朝廷与地方的博弈,以及短期利益与长期利益的博弈等等,云波诡谲,非常好看. 海瑞是其中 ...
- 从分布式环境的特点、问题到CAP、BASE理论详解
分布式的特点: 定义: 分布式系统是一个硬件或者软件组件分布在不同的网络计算机上,彼此之间仅仅通过网络进行通信和协调的系统. 特点: 同一个分布式系统中的计算机在空间部署上可以是任意分布的,这些计算机 ...
- 分布式中的CAP原理
文章目录 CAP理论详解 CAP理论验证:为什么CAP不可能满足全部三项 CAP如何抉择 CAP理论详解 在理论计算科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's ...
- 分布式系统核心理论之CAP、BASE理论
CAP CAP是Consistency.Availablity.Partition-tolerance的缩写,由计算机科学家埃里克·布鲁尔在2000年提出的,所以又称布鲁尔定理(Brewer's th ...
- 事务原理:ACID,CAP和BASE理论及分布式事务一致性案例
分布式系统一致性的需求 需求定义 Safety Only a value that has been proposed may be chosen. Only a single value is ch ...
最新文章
- XDC约束技巧——CDC篇
- 基于 REST 的 Web 服务:基础
- boost::rotate_copy相关的测试程序
- mysql集群搭建_mysql高可用集群搭建
- 对分查找的最多次数_「剑指offer题解」数组中出现次数超过一半的数字
- 在浏览器中运行java applet
- 一步步实现SDDC--学习平台环境的搭建
- 今日早上出来还是阴天
- rocketmq学习杂记
- python常问问题_Python新手在作用域方面经常容易碰到的问题
- 泛微OA设置系统默认水印
- 计算机房通气换气次数,各种换气次数汇总
- Modis数据下载及后处理
- 解决iOS 15上图标出现对号的问题
- lpad与rpad函数
- 使用ConfigFilter
- SpringJpa @query 中根据传入参数(字段)排序
- Stata学习笔记|导入数据
- 接口返回统一数据格式
- 做你自己思想世界的君王
热门文章
- 计算机领域新技术的工作原理,七年级信息技术上册 第4课《计算机系统及其工作原理》教学案 新人教版...
- 教你“强人锁男”——java并发编程的常用锁类型
- 1.2 win10下Docker 和 Docker Compose的安装
- 手把手教你用GoEasy实现Websocket IM聊天
- SDN网络的工作原理
- 浅析原代细胞应用现状
- windows蓝屏原因速查表(常见蓝屏原因与解决方法速查(适用于Windows 7/8/8.1/10/11))
- 实现对光网络的监控和光路切换 - MEMS 光开关
- 动图图解!既然IP层会分片,为什么TCP层也还要分段?
- Vue项目实战 —— 后台管理系统( pc端 )