一、什么是BASE理论?

BASE理论是对CAP中一致性和可用性权衡的结果,它的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

BASE理论包含如下三个元素:

  • BA:基本可用;
  • S:软状态,状态可以在一段时间内不同步;
  • E:最终一致性,在一定的时间窗口内,最终数据达成一致即可。

1.什么是基本可用?

举例说明:
以曾经做过的OJ系统为例,OJ系统一般宕机的原因,主要是很多学员在相同的某个时间段统一提交。那么什么时候大多学员会统一提交呢?
一般刷题的时候,时间不确定,有的人喜欢上午刷题,有的人喜欢晚上刷题。基本上OJ是能够承载着不确定时间的提交。问题提到大多学员会在什么时候统一提交,答案是考试,考试有一定的时间规定,例如120分钟或150分钟等,超过时间规定范围视为放弃考试,一般考试会提交10分钟内交卷,而这个10分钟承载着大量的学员提交,而这个大量提交不亚于电商秒杀商品。大量的学员提交,会造成系统一度假死状态,即不能正常对外提供服务,通常我们的做法是弹性伸缩,所谓弹性伸缩就是每到考试的时候,服务器会自动根据学员提交的情况来决定是否创建更多的实例,通过创建更多的实例来平衡服务压力。但有些时候并不是创建更多的实例就能应对的,例如12306抢票,全国人民抢票回家,针对这样的场景,不仅仅是加机器来横向扩容保证服务可用,还得服务将降级处理,所谓服务降级分为两个层面,一个是延迟服务,另一个是暂停目前用不到的服务把资源给优先级高的服务,以此来达到服务基本可用的目的。

2.什么是软状态?

举例说明:
以批量导入大量的历史数据为例,成千上万的Excel文件,里面装有上亿的数据,针对这些数据,系统使用人员在导入数据的过程中,总希望导入一个能够马上得到实时反馈(成功了多少,失败了多少,失败的原因是什么),但从实际中来看,几百万条数据插入到数据库,肯定会消耗数据库资源,一定程度上降低数据库性能,使得其它应用服务受到一定程度上的影响。以我上家公司的解决办法就是延迟插入,首先用户在导入数据的时候,我们会马上提示,数据正在导入中,导入成功后会给该用户发送手机短信或者是邮件,但其实数据正在导入中并没有马上导入,而是进入到一个数据导入任务队列中,排队执行,先进先出,当执行到该任务时,数据任务导入队列会集中多个服务器进行数据导入,分批次导入,这样一来效率高的多。当然了,这样一来,用户不能马上看到数据,但这在一定程度上提高了系统整体可用性,避免因为数据导入而影响对外的正常服务,正好符合软状态,即数据状态可以在一段时间内不同步。

3.什么是最终一致性?

举例说明:
以很久以前我写的一个博客爬虫为例,博客爬虫分别是有三个,一个思否爬虫,一个是CSDN爬虫,最后是博客园爬虫,三个系统均是一个小的SpringBoot微服务,我的主服务仍然是博客系统,爬虫数据抓取并实时入库,会在一定程度上导致我的主博客系统访问缓慢,原因是因为爬虫应用抓取数据并实时入库,性能在数据库上,后来我想了一个办法将爬虫数据库放在阿里云的RDS上,每当晚上的23点到第二天的5点,这个时间段,爬虫会将爬虫数据库上面的数据迁移到我的主博客系统上。
以此来保证数据的最终一致性,也就是我不一定要数据马上入库能看到效果,我可以允许一定的延迟时间,只要最终某个时间段我能看到大量的数据即可,当时做这个的目的在于那个时候研究数据库SQL优化,在研究SQL优化层面,我需要造一批数据,但我不喜欢假数据,于是通过爬虫抓取一些真实的数据,这些真实的数据主要为我个人服务,一方面作为学习的素材,另外一方面可以基于真实的内容做一些数据分析。

二、为什么会产生BASE理论?

新的理论的产生总是为了改进和完善旧有的理论,但本质上仍然变化不大(这也是左耳朵耗子为什么着重说要注重基本功,也包括我的导师以及老J也曾说过多次)。
例如:
从单体应用到分布式微服务应用、从CAP理论到BASE理论、从前后端不分离到前后分离等,就很好的说明了这一点。

BASE理论之思考的更多相关文章

  1. CAP理论和BASE理论及数据库的ACID中关于一致性及不同点的思考

    CAP定理又被称作是布鲁尔定理,是加州大学伯克利分销计算机科学家里克在2000年提出,是分布式理论基础. CAP:是分布式系统的理论基础 [一致性  可用性   分区容错性] BASE理论是对CAP中 ...

  2. 【分布式】1、CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  3. CAP原则(CAP定理)、BASE理论

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  4. 关于分布式存储系统中-CAP原则(CAP定理)与BASE理论比较

    CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. CA ...

  5. 差点跪了!阿里3面真题:CAP和BASE理论了解么?可以结合实际案例说下不?

    本文节选自我开源的 JavaGuide :https://github.com/Snailclimb/JavaGuide (Github标星92k+!一份涵盖大部分 Java 程序员所需要掌握的核心知 ...

  6. 从分布式一致性谈到CAP理论、BASE理论

    问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探索与论证问题,首先来看三种业务场景. 1.火车站售票 假如说我们的终端用户是一位经常坐火车的旅行家,通常他是去车站的售票处购买车票,然 ...

  7. CAP原理、一致性模型、BASE理论和ACID特性

    CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...

  8. CAP和BASE理论

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt370 1. CAP理论 2000年7月,加州大学伯克利分校的Eric Bre ...

  9. Zookeeper笔记1-CAP/BASE理论

    分布式系统八大谬论: 1.网络相当可靠 2.延迟为0 3.传输带宽是无限的 4.网络相当安全. 5.拓扑结构不会改变 6.必须要有一名管理员 7.传输成本为0 8.网络同质化. 分布式最常出现的问题: ...

随机推荐

  1. Day01_08_变量(Variable)

    变量 什么是变量? *变量本质上来说是内存上的一块空间,这块空间有数据类型,有名字,有字面值(数据).变量是内存中存储数据最基本的单元 * 变量要求变量中存储的具体数据必须和变量的数据类型一致,必须先 ...

  2. 【Scrapy(一)】 Scrapy爬虫的基础执行流程

    安装scrapy模块 : pip install scrapy  创建scrapy项目 1.scrapy startprojecty 项目名称  注意:如果创建失败,可以先卸载原有的scrapy模块, ...

  3. Android平台下Dalvik层hook框架ddi的研究

    通过adbi,可以对native层的所有代码进行hook.但对于Android系统来说,这还远远不够,因为很多应用都还是在Dalvik虚拟机中运行的. 那么,有没有什么办法可以对Dalvik虚拟机中跑 ...

  4. POJ3687拓扑排序+贪心

    题意:       给你n个求,他们的重量是1-n(并不是说1号求的重量是1...),然后给你m组关系a,b,表示a的重量小于b的重量,然后让你输出满足要求的前提下每个球的重量,要求字典序最小. 思路 ...

  5. UVA11389巴士司机问题

    题意:       有n个巴士司机,然后有2n个活,其中有n个是上午,n个是下午,每个自己都要选择一个上午的和一个下午的,每个活都有驾驶距离,如果一个司机每天的驾驶距离大于d,那么超出的部分就要每个单 ...

  6. pycharm2019

    812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlT ...

  7. Python练习1-文档格式化成html

    文档格式化成HTML 把文档格式化成了THML,并没有处理所有thml规则,只是处理了一部分,功能不重要,重要的是复习熟悉下Python对文档的处理细节.毕竟Python大多数给我的印象都是处理文档. ...

  8. [CTF]栅栏密码

    [CTF]栅栏密码 ---------------------  作者:adversity`  来源:CSDN  原文:https://blog.csdn.net/qq_40836553/articl ...

  9. 【技巧】使用xshell和xftp连接centos连接配置

    说明:xshell用来执行指令,xftp用来上传和下载文件. ① 这是xshell连接属性: ②.这是xftp连接属性 附件:这里给个xshelll和xftp的免安装的破解版本地址.侵删. 度娘链接: ...

  10. MySQL数据迁移那些事儿

    前言: 在平时工作中,经常会遇到数据迁移的需求,比如要迁移某个表.某个库或某个实例.根据不同的需求可能要采取不同的迁移方案,数据迁移过程中也可能会遇到各种大小问题.本篇文章,我们一起来看下 MySQL ...