分布式系统开发实战
上QQ阅读APP看书,第一时间看更新

1.2 分布式系统常用术语

分布式系统是一门新兴的学科。为了方便后续章节的学习,先了解下分布式系统中常用的术语。

1.节点

节点(Node)是指一个可以独立按照分布式协议完成一组逻辑的程序个体。在具体的工程项目中,一个节点往往是操作系统上的一个进程。节点是一个完整的、不可分的整体,是执行分布式任务的最小的单元。

有关节点的内容,会在第2章中详细讲解。

2.副本

在高可用的分布式系统中,相同功能的程序往往会部署到不同的节点中。这些不同的节点也被称为“副本(Replica)”。副本在分布式系统中是数据或服务提供的冗余,因此可分为数据副本和服务副本。

数据副本,是指在不同的节点上持久化同一份数据,当出现某一个节点存储的数据丢失时,可以从副本上读到数据。数据副本是分布式系统解决数据丢失异常的主要手段。

服务副本是指数个节点提供某种相同的服务,这种服务一般并不依赖于本地存储的节点,其所需数据一般来自其他节点。服务副本也称为“服务实例”。

例如,GFS系统的同一个Chunk的数个副本就是典型的数据副本,而Map Reduce系统的Job Worker则是典型的服务副本。

图1-1展示的是一个微服务架构,其中相同的服务会有多个服务实例(服务副本)。

图1-1 微服务架构

3.集群

相同功能程序的副本,统称为该功能的集群。

4.通信

节点与节点之间是完全独立、相互隔离的,节点之间传递消息的唯一方式是网络通信(Communication)。图1-1中带箭头的直线表示了节点之间的消息通信。

消息通信可以是双向的或者是单向的。使用双向箭头的直线表示网络双向可达,而某些节点间的直线只有单向箭头,表示网络单向可达,而某些节点间连线没有箭头,表示网络完全不可达。

有关通信的内容,会在第3章中详细讲解。

5.存储

节点可以通过将数据写入某台计算机的本地存储(Storage)设备来保存数据。通常的存储设备可以是磁盘、SSD、文件,也可以是关系型数据库、NoSQL数据库、文件存储系统等。

6.状态

如果某个节点负责存储、读取数据,则该节点为有状态的节点,反之称为无状态的节点。如果某个节点A存储数据的方式是将数据通过网络发送到另一个节点B,由节点B负责将数据存储到节点B的本地存储设备,那么不能认为节点A是有状态的节点,而只有节点B是有状态的节点。

7.异常

异常主要是针对某个节点而言的。异常可能是由网络故障引起的,也可能是程序自身引起的。

需要注意的是,在高可用的分布式系统中,单个节点的异常,并不一定会影响整个分布式系统。分布式系统往往会设计一定的容错性。

8.性能

无论是分布式系统还是单机程序,都会对性能(Performance)有所要求。不同的系统,关注点有所差异。常见的性能指标有以下3点。

·吞吐能力,指系统在某一时间可以处理的数据总量,通常可以用系统每秒可处理的总的数据量来衡量。

·响应延迟,指系统完成某一功能需要使用的时间。

·并发能力,指系统可以同时完成某一功能的能力,通常也用每秒请求数(Query Per Second,QPS)来衡量。

上述3个性能指标往往会相互制约,追求高吞吐的系统,往往很难做到低延迟;系统平均响应时间较长时,也很难提高QPS。

9.一致性

分布式系统为了提升可用性,总是不可避免地使用副本的机制,从而引发副本一致性的问题。

根据具体的业务需求的不同,分布式系统总是提供某种一致性模型,并基于此模型提供具体的服务。

有关一致性的模型,会在第17章中详细讲解。