01 分布式基础理论

1.分布式理论基础

1.1 CAP理论是分布式系统的基石

Consistency(一致性):

“all nodes see the same data at the same time”,即更新操作成功并返回客户端,所有节点在同一时间的数据完全一致,一致性的问题在并发系统中不可避免。(所有的节点在同一时刻看到的数据是相同的)

对于客户端,一致性指的是并发访问时更新过的数据如何获取

对于服务端,则是更新如何复制分布到整个系统,以保证数据一致。

Availability (可用性):

“Reads and writes always succeed”,即服务一直可用,而且是正常响应时间。良好的可用性是指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。(可用嘛,就是总是能成功)

Partition Tolerance (分区容错性):

即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

比如现在的分布式系统中有某一个或者几个机器宕掉了,其他剩下的机器还能够正常运转满足系统需求,对于用户而言并没有什么体验上的影响,(别人出问题了跟你不影响)

1.2 三者只能取其二

  • CA without P: 如果不要求P(不允许分区),则保留C(强一致性)和A(可用性),但放弃P的同时也就意味着放弃了系统的扩展性,也就是分布式节点受限,这是有违背分布式系统的设计初衷。
  • CP without A: 如果不要求A(可用),强调各服务之间数据强一致性,而P(分区)会导致同步时间无限延长(等待数据同步完才能正常访问服务),一旦发生网络故障或者消息丢失等情况,就要牺牲用户的体验。
  • AP wihtout C: 要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,这样会导致全局数据的不一致性。

没有完美的分布式,要看你为了什么而去牺牲什么?你要分区那可能会造成数据不一致的可能性,你要你要强一致和高可用,那就要牺牲分区的高拓展性。没有完美的系统,

1.3 BASE理论(一种妥协)

BASE是Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写

BASE是对CAP中一致性和可用性权衡的结果,核心思想是:即使无法做到强一致性,采用适当的方式使系统达到最终一致性

Basically Available: 基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性,但不等价于系统不可用。系统最终是可用的

  • 秒杀的场景下用户数量暴增,为保护系统稳定性,有部分用户可能被引导至一个降级页面

Soft state: 允许系统中的数据存在中间状态,并认为中间状态不会影响系统整体可用性,即允许系统在不用节点之间数据同步存在延时(加中间状态,比如说支付中)举个例子:农业银行向工商银行转账,会有一个5秒左右延迟到账,这就是中间状态。

Eventually consistent: 强调所有的数据副本在经过一段时间同步后,最终能够达成一致的状态。最终保证一致,而不是实时保证系统一致性。

BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。

2.区块链不可能三角

区块链通常在安全性去中心化可扩展性之间进行权衡:

  • 比特币:重点放在安全性去中心化上,因此导致比特币的可扩展性受限,因为比特币的区块大小和区块时间设定限制了它的交易处理能力。在需求高的时候就会导致交易延迟和手续费上涨(假如一个区块时间是5秒,在这个区块时间内它的交易处理能力是有限的,太多交易要处理的时候,就会影响其处理时间,和手续费上涨)。
  • 以太坊:重点也放在安全性去中心化上,并作为智能合约平台,它需要确保用户的资产和协议是安全的。因此以太坊的可扩展性较差,尤其当DeFi和NFT的应用量增大时,交易延迟与费用上涨的问题尤其突出。
  • Solana:主要关注可扩展性因此在处理速度和吞吐量上都非常高效,为了达到这样的性能,在网络的中心化程度作出了一些妥协,例如限制验证者的数量。

3.概率最终性和逐块最终性

概率最终性:在比特币网络中,由于采用了Proof-of-Work(工作量证明)的共识算法。尽管一个区块被添加到区块链上,但仍然存在一定的概率(尽管很小)在后续的区块中被另一个竞争者的区块所取代。因此,对于比特币网络来说,一个最新的区块在一段时间后可以被认为具有概率最终性,即随着更多的区块被添加到区块链上,该区块被替代的概率会逐渐减小。

逐块最终性:对于Cosmos网络,它采用了Tendermint共识算法,该算法通过验证人的投票来确定下一个区块的生成者。一旦在Cosmos网络中的一个区块被验证人成功生成并广播出去,它被认为是最终的结果,不会被后续的区块替代。因此,可以说Cosmos网络具有逐块最终性,即一旦一个区块在网络中被验证人确认,它就成为最终的结果。


01 分布式基础理论
http://example.com/2024/05/17/01分布式基础理论/
作者
Wangxiaowang
发布于
2024年5月17日
许可协议