IT袋

当前位置:主页 > 经验教程 > 系统教程 >

从零开始理解分布式系统架构与设计原理

从零开始理解分布式系统架构与设计原理(6)

时间:2024-03-25 20:24:34 来源:IT袋 作者:马勇
导读:从零开始理解分布式系统架构与设计原理,Elasticsearch的副本机制 在 ES 中有主分片和副本分片的概念。副本分片的主要目的就是为了故障转移,如果持有主分片的节点挂掉了,一个副本分片就会晋升

从零开始理解分布式系统架构与设计原理

从零开始理解分布式系统架构与设计原理

Elasticsearch的副本机制

在 ES 中有主分片和副本分片的概念。副本分片的主要目的就是为了故障转移,如果持有主分片的节点挂掉了,一个副本分片就会晋升为主分片的角色从而对外提供查询服务。

从零开始理解分布式系统架构与设计原理

CAP理论

在理论计算机科学中,CAP 定理(CAP theorem),又被称作布鲁尔定理(Brewer’s theorem),它指出对于一个分布式计算系统来说,不可能同时满足分布式系统一致性、可用性和分区容错(即 CAP 中的”C”,”A”和”P”):

从零开始理解分布式系统架构与设计原理

不念:什么是一致性、可用性和分区容错性能?

  • 一致性 (Consistency)

一致性意味着所有客户端同时看到相同的数据,无论它们连接到哪个节点。

要发生这种情况,每当将数据写入一个节点时,必须立即将数据转发或复制到系统中的所有其他节点,然后才能将写入视为”成功”。

  • 可用性 (Availability)

任何客户端的请求都能得到响应数据,不会出现响应错误。换句话说,可用性是站在分布式系统的角度,对访问本系统的客户的另一种承诺:我一定会给您返回数据,不会给你返回错误,但不保证数据最新,强调的是不出错。

  • 分区容错

分区即分布式系统中的通信中断,两个节点之间的丢失或暂时延迟的连接。

分区容错意味着群集必须继续工作,尽管系统中的节点之间存在的通信故障。

这三种性质进行俩俩组合,可以得到下面三种情况:

  • CA:完全严格的仲裁协议,例如 2PC(两阶段提交协议,第一阶段投票,第二阶段事物提交)
  • CP:不完全(多数)仲裁协议,例如 Paxos、Raft
  • AP:使用冲突解决的协议,例如 Dynamo、Gossip

CA 和 CP 系统设计遵循的都是强一致性理论。

不同的是 CA 系统不能容忍节点发生故障。

CP 系统能够容忍 2f+1 个节点中有 f 个节点发生失败。

Base理论

从零开始理解分布式系统架构与设计原理

CAP 理论表明,对于一个分布式系统而言,它是无法同时满足 Consistency(强一致性)、Availability(可用性) 和 Partition tolerance(分区容忍性) 这三个条件的,最多只能满足其中两个。

在分布式环境中,我们会发现必须选择 P(分区容忍)要素,因为网络本身无法做到 100% 可靠,有可能出故障,所以分区是一个必然的现象。也就是说分区容错性是分布式系统的一个最基本要求。

CAP 定理限制了我们三者无法同时满足,但我们可以尽量让 C、A、P 都满足,这就是 BASE 定理。

BASE 理论是 Basically Available(基本可用),Soft State(软状态)和 Eventually Consistent(最终一致性)三个短语的缩写。

即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

基本可用 (Basically Available)

基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务,这就是损失部分可用性的体现。

软状态 ( Soft State)

什么是软状态呢?相对于原子性而言,要求多个节点的数据副本都是一致的,这是一种“硬状态”。

软状态指的是:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。

最终一致性 ( Eventual Consistency)

最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。

弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。

BASE 理论面向的是大型高可用、可扩展的分布式系统。与传统 ACID 特性相反,不同于 ACID 的强一致性模型,BASE 提出通过牺牲强一致性来获得可用性,并允许数据段时间内的不一致,但是最终达到一致状态。

分布式是系统扩展的必然方向,分布式系统所遇到的问题是普遍,随着大量优秀的项目在分布式的道路上披荆斩棘,前人已经总结了大量丰富的理论。

并且不同领域的分布式系统也层出不穷,我们既应该学习好这些好的理论知识,也应该去多看看不同分布式系统的实现,总结它们的共性,发现它们在不同领域独特的亮点权衡,更重要的,我们应该将所学用于日常项目的实践当中,也应该在实践中总结出更多的规律理论。

以上就是IT袋网带来的从零开始理解分布式系统架构与设计原理的全文内容,IT袋网[www.itdai.com]希望对网友有所帮助!

相关阅读