ACID,CAP,BASE,PACELC

1.事务ACID特性

        A(Atomicity)原子性 

       C(consistency)一致性

       I(Isolation) 隔离性

       D(Durability) 持久性

       接下来以mysql为例进行4个分析

       这四个特性属于事务得特性:

      其中A原子性通过undo log日志保证

            I隔离性通过MVCC机制+锁机制

           C一致性 通过redo log日志保证

           D持久性;通过AIC三个特性,同时会保存到binlog日志种

2.CAP

        分布式系统得cap理论,其中C(consistency)代表一致性,A(avaiblity)代表可用性(和ACID得a不是一个,一个是原子性);P代表分区容错性。三者只能三选二,P分区容错性一定要保证。

 P分区容错性:

      其实就是网络问题,通常分布式系统都会有网络得调用,包括通常得RPC调用和HTTP调用,如果网络通信挂了,消息也就处理不了了,所以要保证分区容错性,就是其中一个网络通信有问题不影响最终数据处理。

      分区容错性得解决方案:过半机制+重试机制。

A和C只能二选一,保证一致性就无法保证可用性

是因为通常系统部署得时候会部署多个节点,或者是主从节点或者领导者跟随者观察者等,这个时候如果想保证数据一致性就要进行多个节点得数据赋值,无论用什么IO,此时用户查询都不会查到数据,所以就不可用。而为了保证可用性,就必须进行将数据处理完成,此时方案势必要丢弃一致性。

3.BASE理论

        基本可用(Basically Available)

        软状态(Soft State)

        最终一致性(Eventually consistence)

        分布式系统:这个是在AP理论基础上。放弃系统某一时刻一致性要求,换取系统伸缩性和性能改善。

4.PACELC

       这个理论看名字一头雾水,其实PAC代表着cap;E代表着ELSE,L代表着延时性,C代表一致性。

    通过名字就可用分析出来,如果存在P分区容错性,在A和C进行选择;如果不存在P,在L和C进行选择。

    案例:ES

es写数据流程图:

  e's读数据过程:

可以通过 doc id 来查询,会根据 doc id 进行 hash,判断出来当时把 doc id 分配到了哪个 shard 上面去,从那个 shard 去查询.

客户端发送请求到任意一个 node,成为 coordinate node。

coordinate node 对 doc id 进行哈希路由,将请求转发到对应的 node,此时会使用 round-robin 随机轮询算法,在 primary shard 以及其所有 replica 中随机选择一个,让读请求负载均衡。

接收请求的 node 返回 document 给 coordinate node。

coordinate node 返回 document 给客户端。

疑问:选择得node节点查询会不会没有数据得情况?

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值