码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 分布式系统原理-BASE,可用性高于强一致性


     分布式系统原理系列目录

    • 分布式系统的麻烦
    • 副本与一致性
    • 为什么需要一个分布式共识算法
    • 世界上只有一种共识算法,那就是Paxos
    • CAP定理,说起来一句话,实际坑不少
    • BASE,可用性高于强一致性
    • 分布式事务方案那么多,到底该选哪一个

    在很多资料里面,CAP和BASE都会一起出现,就容易让人产生疑问,这两个理论是有什么关系吗,误导性挺强的。他两唯一的关系就是都涉及到了一致性和可用性的选择问题,其他就几乎没啥关系了。他们讨论的范围就完全不一样,CAP的范围前面说过,多个节点互联并且共享数据的系统,可以认为就是分布式存储系统。而BASE理论的范围比CAP大,讲的是分布式系统应该如何去权衡可用性和一致性

    BASE内容不多,我们大概说下

    BASE是eBay的一位架构师源于对互联网大规模分布式系统的实践总结, 而提出的理论,阐述了分布式系统中应该如何权衡可用性与一致性

    BASE理论

    基本可用(Basically Avaliable):当系统出现不可预知的故障时,允许损失部分可用性,保障核心功能可用

    什么叫不可预知的故障 ?比如光纤被挖、突发流量。什么叫损失部分可用?包括响应时间变长、部分功能不可用

    比如春运期间12306可以对车票进行错峰出售,深圳出发的车次8点开售,上海出发的车次9点开售,那后面开售的车次你可以认为他在之前那段时间内的购买服务是不可用的。这样子虽然晚点才能买票,但是总归还是可以买

    再比如你提交购买请求后,可能不会立刻被处理,而是要先排个队,这样子虽然请求会被延迟处理,但总归还是会被处理,而不是直接给你来个404、系统错误这种响应。这种牺牲部分可用,换来核心功能可用的思想就叫基本可用

    最终一致性(Eventually consistent):大部分情况下,可以不用追求强一致性,最终一致性也很香

    软状态(Soft state):系统多节点间数据存在短暂的不一致状态,是一种过渡状态。这个软状态其实没啥意义,都已经最终一致了,当然会有中间状态,估计也为了拼凑单词。

    因为BASE对标的是ACID,ACID这个单词的意思是酸,追求强一致,BASE这个单词的意思是碱,追求一致性与可用性平衡,酸碱平衡,非常利于传播

    BASE核心思想,可用性高于一致性

    BASE的核心思想是在分布式系统中,可用性的重要程度应该是普遍高于强一致性的,这其实也更符合分布式系统的初衷,怎么说呢。分布式系统有的一个核心诉求是通过多机解决单点问题,提高可用性。我们可以看到各个企业都会追求几个9,在很多企业可用性是硬性的KPI指标,监管也非常关注银行的业务连续性,说白了也是可用性。因为一旦系统不可用,最直接的问题就是导致经济损失、严重的就是影响用户的信心、投资者的信心、或者导致声誉问题、甚至会导致社会性的问题

    所以可用性是刚性需求,是硬性指标,相比之下,一致性是可以为了满足可用性而有所取舍的

    后面说到分布式事务的时候,还可以印证下这一点,很少有系统会去使用2PC/3PC这种强一致的分布式事务,往往都会选择TCC/可靠消息队列/SAGA这种最终一致性的柔性事务

  • 相关阅读:
    Kibana:摄入 GeoJSON 数据
    【蓝桥杯冲击国赛计划第1天】单向链表
    【数据结构】单链表按位序插入元素e【前插】(带头结点的和不带头结点的)这篇很重要,文字说明比起其他篇是正确的
    js中this的指向
    VBA技术资料MF50:VBA_在Excel中突出显示前3个值
    LeetCode每日一题(188. Best Time to Buy and Sell Stock IV)
    微软放大招!Bing支持DALL-E3,免费AI绘画等你来体验!
    如何备战Shopee大促活动?有什么技巧?
    SQL中LIKE和REGEXP简单对比
    Oracle(2-4)Naming Method Configuration
  • 原文地址:https://blog.csdn.net/wb_snail/article/details/127707379
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号