微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

你了解分布式吗?分布式系统基本理论指标

架构 aide_941 9℃

一、分布式系统

  • 现如今,摩尔定律(https://baike.baidu.com/item/%E6%91%A9%E5%B0%94%E5%AE%9A%E5%BE%8B/350634?fr=aladdin)的影响已经严重衰减甚至近于失效,但我们却实实在在地看到了计算能力的大幅度提升。在围棋人机大战里,人工智能AlphaGo打败李世石、柯洁的事实仍历历在目。计算能力的提升在很多时候都是源于系统(大数据、人工智能、云计算、区块链等)采用了分布式架构
  • 《分布式系统概念与设计》一书中对分布式系统概念的定义如下:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
  • 简单来说,分布式系统就是一组计算机节点和软件共同对外提供服务的系统。但对于用户来说,操作分布式系统就好像是在请求一个服务器。因为在分布式系统中,各个节点之间的协作是通过网络进行的,所以分布式系统中的节点在空间分布上几乎没有任何限制,可以分布于不同的机柜、机房,甚至是不同的国家和地区

分布式系统的设计目标

  • 可用性:可用性是分布式系统的核心需求,其用于衡量一个分布式系统持续对外提供服务的能力
  • 可扩展性:增加机器后不会改变或极少改变系统行为,并且能获得近似线性的性能提升
  • 容错性:系统发生错误时,具有对错误进行规避以及从错误中恢复的能力
  • 性能:对外服务的响应延时和吞吐率要能满足用户的需求。
  • 虽然分布式架构可以组建一个强大的集群,但实际工作中遇到的挑战要比传统单体架构大得多,具体表现如下所示:
    • 节点之间的网络通信是不可靠的,存在网络延时和丢包等情况
    • 存在节点处理错误的情况,节点自身随时也有着机的可能
    • 同步调用使系统变得不具备可扩展性

二、CAP原理

  • 提到分布式系统,就不得不提CAP原理。CAP原理在计算机科学领域广为人知,如果说系统架构师将CAP原理视作分布式系统的设计准则一点也不为过

CAP定义

  • 一致性(Consistency):这里的一致性特指强一致,通俗地说,就是所有节点上的数据时刻保持同步。一致性严谨的表述是原子读写,即所有读写都应该看起来是“原子”的,或串行的。所有的读写请求都好像是经全局排序过的一样,写后面的读一定能读到前面所写的内容
  • 可用性(Availability):任何非故障节点都应该在有限的时间内给出请求的响应,不论请求是否成功
  • 分区容忍性(Tolerance to the partition of networl):以实际效果而言,分区相当于对通信的时限要求。对于一致性来说,一致性是不可能保持时时刻刻都是一致的,因此一致性的意思就是在规定的时限内达到数据一致,我们就说是数据的一致性,但在规定的时限内没有达到数据一致时,我们就称之为产生了”分区”现象,就意味着发生了分区的情况。(因此必须就当前操作在C和A之间做出选择)

CAP的取舍

  • 相信大家都非常清楚CAP原理的指导意义:在任何分布式系统中,可用性、一致性和分区容忍性这三个方面都是相互矛盾的,三者不可兼得,最多只能取其二
  • Gilbert和Lynch的论文给出了相关解释:
    • AP满足但C不满足:如果既要求系统高可用又要求分区容错,那么就要放弃一致性了。因为一旦发生网络分区(P),节点之间将无法通信,为了满足高可用(A),每个节点只能用本地数据提供服务,这样就会导致数据的不一致( !C)。一些信奉BASE(Basic Availability, So丘state,Eventually Consistency)原则的NoSQL数据库(例如,Cassandra、CouchDB等)往往会放宽对一致性的要求(满足最终一致性即可),以此来换取基本的可用
    • CP满足但A不满足:如果要求数据在各个服务器上是强一致的(C), 然而网络分区(P)会导致同步时间无限延长,那么如此一来可用性就得不到保障了(!A)。坚持事务ACID(原子性、一致性、隔离性和持久性)的传统数据库以及对结果一致性非常敏感的应用(例如,金融业务)通常会做出这样的选择
    • CA满足但P不满足:指的是如果不存在网络分区,那么强一致性和可用性是可以同时满足的
  • CAP原理最初的提出者Eric Brewer在CAP猜想提出12年之际(2012 年)对该原理重新进行了阐述问,明确了CAP原理只适用于原子读写的场景,而不支持数据库事务之类的场景。同时指出,只有极少数网络分区在非常罕见的场景下,三者才有可能做到有机的结合
  • 无独有偶,Lynch也重写了论文“Perspectiveson the CAP Theorem”,引入了活性(liveness)和安全属性(safety),并认为CAP是活性与安全性之间权衡的一个特例。CAP中的C(一致性)属于活性,A(可用性)属于安全性
  • 正如热力学第二定律揭示了任何尝试发明永动机的努力都是徒劳的一样,CAP原理明确指出了完美满足CAP三种属性的分布式系统是不存在的。了解CAP原理的目的在于,其能够帮助我们更好地理解实际分布式协议实现过程中的取舍,比如在后面的章节中将会提到的lease机制、quorum机制等

转载请注明:SuperIT » 你了解分布式吗?分布式系统基本理论指标

喜欢 (0)or分享 (0)