一、什么是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. Day14_84_通过反射机制修改和获取class里的属性值

    通过反射机制修改和获取class里的属性值 * 属性对象.set(Object,属性值) 给Object对象中的某个属性赋值(属性对象) * 属性对象.get(Object); 获取Object对象中 ...

  2. 手把手教你SonarQube入门安装与使用

    简介 Sonar (SonarQube)是一个开源平台,用于管理源代码的质量. Sonar 不只是一个质量数据报告工具,更是代码质量管理平台. 支持Java, C#, C/C++, PL/SQL, C ...

  3. 使用numba加速python科学计算

    技术背景 python作为一门编程语言,有非常大的生态优势,但是其执行效率一直被人诟病.纯粹的python代码跑起来速度会非常的缓慢,因此很多对性能要求比较高的python库,需要用C++或者Fort ...

  4. Docker 实践搭建php环境

    docker 安装 使用官方提供的安装脚本,安装最新版的Docker curl -sSL https://get.docker.com/ | sh 安装完成后,通过如下命令启动Docker的守护进程, ...

  5. reset 去掉margin和padding的 默认代码,其余根据自己的情况做调整

    body, dl, dd, h2, h3, h4, h5, h6, p, form{margin:0;} ol,li,ul{margin:0; padding:0;} h1{margin:10px 0 ...

  6. hdu 1044 BFS(压缩图)+DFS

    题意:              给你起点,终点,图上有墙有路还有宝物,问你在规定时间内能否能到终点,如果能问最多能捡到多少宝物. 思路:           看完这个题目果断 BFS+三维的mark ...

  7. hdu3460 字典树(打印机)

    题意:        给你一些名字,让你用一台打印机去打印这些名字,打印机只有三个操作 (1)打印的都是小写字母 (2)每次可以在当前字母的后面加一位,或删除一位. (3)打印当前串 问你最少多少步可 ...

  8. (CV学习笔记)Attention

    Attention(注意力机制) Attention for Image Attention for Machine Translation Self-Attention 没有image-Attent ...

  9. 开源囧事4:你们这些卖代码的能不能留自己的QQ号?留我QQ号干嘛?

    缘起于开源项目 从 2017 年开始,陆陆续续写了一些开源项目放到开源网站里,都是一些实战项目,给大家练练手.有基础整合的demo,有 Spring Boot 博客项目,有 Spring Boot 商 ...

  10. 【SpringMVC】数据校验时,抛出javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.util.Date.

    老魏原创,转载请留言. 原因:给Javabean中的字段注解多余或者错误导致. @NotEmpty @Past @DateTimeFormat(pattern="yyyy-MM-dd&quo ...