Java-常见面试题收集(二十)

二十九 微服务理论

1 CAP 定理介绍

  CAP 定理是由加州⼤学伯克利分校 Eric Brewer 教授提出来的,他指出 WEB 服务⽆法同时满⾜⼀下 3 个属性:
  ⼀致性(Consistency) : 客户端知道⼀系列的操作都会同时发⽣(⽣效)
  可⽤性(Availability) : 每个操作都必须以可预期的响应结束
  分区容错性(Partition tolerance) : 即使出现单个组件⽆法可⽤,操作依然可以完成
  在分布式系统中,⼀个 Web 应⽤⾄多只能同时⽀持上⾯的两个属性。因此,设计⼈员必须在⼀致性与可⽤性之间做出选择。

2 ⼀致性

  数据⼀致性指“all nodes see the same data at the same time”,即更新操作成功并返回客户端完成后,所有节点在同⼀时间的数据完全⼀致,不能存在中间状态。分布式环境中,⼀致性是指多个副本之间能否保持⼀致的特性。在⼀致性的需求下,当⼀个系统在数据⼀致的状态下执⾏更新操作后,应该保证系统的数据仍然处理⼀致的状态。
  例如对于电商系统⽤户下单操作,库存减少、⽤户资⾦账户扣减、积分增加等操作必须在⽤户下单操作完成后必须是⼀致的。不能出现类似于库存已经减少,⽽⽤户资⾦账户尚未扣减,积分也未增加的情况。如果出现了这种情况,那么就认为是不⼀致的。
  数据⼀致性分为强⼀致性、弱⼀致性、最终⼀致性。
  如果的确能像上⾯描述的那样时刻保证客户端看到的数据都是⼀致的, 那么称之为强⼀致性。
如果允许存在中间状态,只要求经过⼀段时间后,数据最终是⼀致的, 则称之为最终⼀致性。
  此外,如果允许存在部分数据不⼀致,那么就称之为弱⼀致性。

3 可⽤性

  系统提供的服务必须⼀直处于可⽤的状态,对于⽤户的每⼀个操作请求总是能够在有限的时间内返回结果。两个度量的维度:
  (1) 有限时间内
  对于⽤户的⼀个操作请求,系统必须能够在指定的时间(响应时间)内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可⽤的。即这个响应时间必须在⼀个合理的值内,不让⽤户感到失望。试想,如果⼀个下单操作,为了保证分布式事务的⼀致性,需要 10 分钟才能处理完,那么⽤户显然是⽆法忍受的。
  (2) 返回正常结果
  要求系统在完成对⽤户请求的处理后,返回⼀个正常的响应结果。正常的响应结果通常能够明确地反映出对请求的处理结果,即成功或失败,⽽不是⼀个让⽤户感到困惑的返回结果。⽐如返回⼀个系统错误如 OutOfMemory,则认为系统是不可⽤的。
  “返回结果”是可⽤性的另⼀个⾮常重要的指标,它要求系统在完成对⽤户请求的处理后,返回⼀个正常的响应结果,不论这个结果是成功还是失败。

4 分区容错性

  即分布式系统在遇到任何⽹络分区故障时,仍然需要能够保证对外提供满⾜⼀致性和可⽤性的服务,除⾮是整个⽹络环境都发⽣了故障。
  ⽹络分区,是指分布式系统中,不同的节点分布在不同的⼦⽹络(机房/异地⽹络)中,由于⼀些特殊的原因导致这些⼦⽹络之间出现⽹络不连通的 状态,但各个⼦⽹络的内部⽹络是正常的,从⽽导致整个系统的⽹络环境 被切分成了若⼲孤⽴的区域。组成⼀个分布式系统的每个节点的加⼊与退 出都可以看做是⼀个特殊的⽹络分区。

5 为什么分布式系统中无法同时保证⼀致性和可⽤性

  ⾸先⼀个前提,对于分布式系统⽽⾔,分区容错性是⼀个最基本的要求,因此基本上我们在设计分布式系统的时候只能从⼀致性(C)和可⽤性(A)之间进⾏取舍。如果保证了⼀致性(C):对于节点 N1 和 N2,当往 N1⾥写数据时,N2 上的操作必须被暂停,只有当 N1 同步数据到 N2 时才能对 N2 进⾏读写请求,在 N2 被暂停操作期间客户端提交的请求会收到失败或超时。显然,这与可⽤性是相悖的。如果保证了可⽤性(A):那就不能暂停 N2 的读写操作,但同时 N1在写数据的话,这就违背了⼀致性的要求。

6 CAP 权衡

  对于多数⼤型互联⽹应⽤的场景,主机众多、部署分散,⽽且现在的集群规模越来越⼤,所以节点故障、⽹络故障是常态,⽽且要保证服务可⽤性达到 N 个 9,即保证 P 和 A,舍弃 C(退⽽求其次保证最终⼀致性)。虽然某些地⽅会影响客户体验,但没达到造成⽤户流程的严重程度。对于涉及到钱财这样不能有⼀丝让步的场景,C 必须保证。⽹络发⽣故障宁可停⽌服务,这是保证 CA,舍弃 P。貌似这⼏年国内银⾏业发⽣了不下 10 起事故,但影响⾯不⼤,报道也不多,⼴⼤群众知道的少。还有⼀种是保证 CP,舍弃 A。例如⽹络故障是只读不写。

7 BASE 理论

  BASE 是 Basically Available(基本可⽤)、Soft state(软状态)和 Eventually consistent(最终⼀致性)三个短语的缩写。BASE 基于 CAP 定理演化⽽来,核⼼思想是即时⽆法做到强⼀致性,但每个应⽤都可以根据⾃身业务特点,采⽤适当的⽅式来使系统达到最终⼀致性。
  Basically Available(基本可⽤):基本可⽤是指分布式系统在出现不可预知的故障的时候,允许损失部分可⽤性,但不等于系统不可⽤。
  Soft state(软状态):指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可⽤性。与硬状态相对,即是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可⽤性,即允许系统在不同节点的数据副本之间进⾏数据同步的过程存在延时。
  Eventually consistent(最终⼀致性):强调系统中所有的数据副本,在经过⼀段时间的同步后,最终能够达到⼀个⼀致的状态。其本质是需要系统保证最终数据能够达到⼀致,⽽不需要实时保证系统数据的强⼀致性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒疯狂展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值