一、什么是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. 计算机网络-已知IP地址和子网掩码,求广播地址

    首先说结论--广播地址=该IP所在的下一跳-1 例题: 已知IP地址是192.72.20.111,子网掩码是255.255.255.224,求广播地址 要知道下一跳就需要先求出网段间隔,网段间隔=25 ...

  2. Codeforces Global Round 14 E. Phoenix and Computers

    题目链接 点我跳转 题目大意 给定 \(N\) 台电脑,起初每台电脑都是关闭的 现在你可以随意打开电脑,但如果第 \(i-1\).第 \(i+1\) 台电脑是开启的,则第 \(i\) 台电脑也会自动开 ...

  3. ASP检测客户是否取消微信公众号

    有时因为项目内需要用到检测客户是否已经取消关注微信公众号,只有没被取消执行相关模板信息发送.图文信息发送.视频语音等信息发送给客户才有意义.也可以知道多少客户还在我们的微信公众号关注内.方便后期做公众 ...

  4. prometheus+grafana监控mysql最佳实践

    导航 前言 环境准备 安装Docker 安装prometheus 安装mysqld_exporter prometheus采集数据 安装grafana grafana配置数据源 感谢您的阅读,预计阅读 ...

  5. ip协议是哪一层的协议

    IP协议对应于OSI标准模型的网络层. TCP/IP: 数据链路层:ARP,RARP 网络层: IP,ICMP,IGMP 传输层:TCP ,UDP,UGP 应用层:Telnet,FTP,SMTP,SN ...

  6. 从苏宁电器到卡巴斯基第11篇:我在苏宁电器当营业员 III

    积分换礼的是是非非 在苏宁购物是需要会员卡的(免费办理),我们需要利用这个会员卡来开单,顾客的消费可以换算成积分,贮存在会员卡里面.这个积分可以用于积分换礼,比如电磁炉.乐扣保鲜盒或者其它一些家用器具 ...

  7. Python中的BeautifulSoup模块

    目录 BeautifulSoup Tag NavigableString BeautifulSoup Comment 遍历文档树 直接子节点 所有子孙节点 ​ 节点内容 搜索标签 CSS选择器 Bea ...

  8. XCTF-i-get-id-200

    i-get-id-200 题目描述 嗯..我刚建好了一个网站 解题过程 一共有三个页面 Hello World 告诉了页面是perl写的 Forms 输入name和age会返回渲染后的字符串 搜了一下 ...

  9. 在Visual Studio 中使用git——文件管理-上(四)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  10. .Net 中两分钟集成敏感词组件

    现如今大部分服务都会有用户输入,为了服务的正常运行,很多时候不得不针对输入进行敏感词的检测.替换.如果人工做这样的工作,不仅效率低,成本也高.所以,先让代码去处理输入,成为了经济方便的途径.水弟在这里 ...