博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式环境各种问题 与 CAP/BASE
阅读量:5778 次
发布时间:2019-06-18

本文共 1281 字,大约阅读时间需要 4 分钟。

hot3.png

通信异常

  • 单机内存延时在纳秒级(10ns)
  • 正常一次网络通信延时在(0.1ms--1ms)   
  • 相差100倍

网络分区

  • 由于网络发生异常,导致分布式系统中部分网络延时加大,最终导致仅仅有部分系节点能使用,叫做网络分区

三态

  • 三种状态,每次请求存在三种状态:成功、失败、超时
    • 超时的原因:
      • 可能根本没发送到接收方
      • 接收方返回的结果没发回发送方

节点故障

  • 分布式系统节点出现宕机或僵死的现象

ACID事务的隔离性、一致性、原子性、持久性

  • 原子性
    • 全部成功、全部失败
  • 一致性
    • 一个事务执行前后、数据必须保持前后一致的
  • 隔离性
    • 标准sql 定义了4个隔离级别
      1. 未授权读
        • 一个事务还没完成,另一个事务可以读取其正在操作的数据
      2. 授权读
        • 只允许读取已被提交的数据
      3. 可重复读取
        • 读取值都和事务开始时刻一致,可能导致幻读
        • 幻读:不同时刻,同一事务执行结果不同
      4. 串行化
        • 最严格的事务隔离级别
        • 所有事务都串行执行,不能并发执行

ed4153f69851fc7f1ed700b1ece71270fd4.jpg

  • 事务隔离级别越高,完整性一致性越强,同时对并发性能影响越大
  • 对于绝大多数应用程序,设置为授权读取
    • 既保证一致性完整性,兼顾并发性能

持久性

  • 对数据的变更是永久的

分布式事务

  • 也称嵌套型事务
  • 实现严格的事务,就要牺牲分布式系统可用性
  • 可用性与一致性的妥协

CAP理论

  • 分布式系统不能同时满足C(consitency)一致性、A(availablity)可用性、P(partition tolerance)分区容错性
  • 最多只能同时满足俩
  • 一致性
    • 数据在多个副本之间是否保持一致
    • 一个节点上数据更新后,在其他节点上能读到更新后的数据,称为一致
  • 可用性
    • 用户的操作需要在“有限的时间内”  “返回结果”(二者缺一 都不叫可用)
      • 有限时间:用户对于不同系统的期望值是不一样的
  • 分区容错性
    • 分布式系统遇到任何网络分区故障的时候,仍然能提供一致性和可用性的服务

e26cd2c1727c1d87917639528992f7fa8f7.jpg

b8ac705736e6bf56b5cfea0b712368650ed.jpg

  • 分区容错性往往是分布式系统的一个基本要求,因此,大多数分布式系统都是在一致性可用性之间做平衡

BASE 理论

  • BA(基本可用)、S(软状态)、E(最终一致性)
  • BASE 是对CAP 理论可用性、一致性权衡的结果,是大型互联网系统分布式实践的总结
  • 基本可用
    • 是指系统遇到不可预知故障时,允许损失部分可用性(比如双十一,部分次要功能下线)
      • 比如时间上损失(搜索结果不是0.5秒返回结果,1--2秒返回)
      • 比如双十一部分消费者被引导到降级页面
  • 软状态
    • 允许出现中间状态,允许在不同节点之间复制数据延时
  • 最终一致性
    • 五大类变种:
      • 因果一致性
        • A更新数据后通知B,B操作要基于A更新后的值
        • 不相关的 C操作无限制
      • 读自己所写
        • 自己只能看到自己更新的最新数据
      • 会话一致性
        • 同一会话中总能读到更新后的最新值
      • 单调读一致性
        • 一个进程从系统中读取数据项某个值,该进程不能读到比这个值更旧的值
      • 单调写一致性
        • 系统保证同一进程所有写顺序执行
    • 可以将上述5项中,部分项结合起来构建最终一致性的分布式系统
      • ​​​​​​​关系型数据库,提供最终一致性典范

转载于:https://my.oschina.net/u/3847203/blog/2870236

你可能感兴趣的文章
Spark Streaming概念学习系列之Spark Streaming容错
查看>>
单例模式
查看>>
用友网络陈强兵:企业互联网需解决五大问题
查看>>
SMA推出Powerwall兼容Sunny Boy Storage逆变器
查看>>
云路由 vyatta 体验(二)NAT
查看>>
Python version 2.7 required, which was not foun...
查看>>
centos7.3 下安装 composer,解决Failed to decode zlib stream错误
查看>>
Git 常用命令
查看>>
在Postgres 数据库中生成36位的UUID代码
查看>>
小黑小波比.功能测试登录用户
查看>>
Java enum用法详解
查看>>
去云端的多条途径
查看>>
Docker容器从一知半解到入门
查看>>
关于“方法参数”
查看>>
Redis命令总结
查看>>
unable to write 'random state'错误解决
查看>>
context:annotation-config vs component-scan
查看>>
结构体和类的内存对齐原则-这一次弄清楚了对齐的本质规则
查看>>
Centos编译安装Nginx和PHP
查看>>
Linux-grep命令
查看>>