分布式系统发展历程

分布式的发展过程经历了三个阶段:

  • 单机模式(单兵模式)
  • 数据并行或者数据分布式(游击队模式)
  • 任务并行或者任务分布式(集团军模式)

什么是单机模式,它的优缺点是什么?

单机模式是指所有应用程序和数据均步数在同一台电脑或者服务器上,由一台计算机完成所有的处理。

它的好处是功能、代码和数据集中,便于维护、管理和执行。

它的主要问题是性能受限、存在单点失败的问题。

什么是数据分布式模式,它的优缺点是什么?

它是指采用消息共享模式使用多台计算机并行运行或者执行多任务,核心原理是每台计算机上执行相同的程序,将数据进行拆分放到不同的计算机上进行计算。它强调对数据进行拆分,任务程序在每台机器上运行。

将程序从单机模式进化到数据分布式模式,需要两个步骤:

  1. 将应用和数据分离,分别部署到不同的服务器上。
  2. 对数据进行拆分,将同一类型的数据拆分到两个甚至更多的数据库中,这样应用服务器上的任务就可以针对不同数据并行执行了。

这种模式的好处在于可以利用多台计算机并行处理多个请求,使得我们可以在相同的时间内完成更多的请求处理,解决了单机模式的计算效率瓶颈问题。

这种模式的主要问题是对提升单个任务的执行性能及降低时延无效。

什么是任务分布式模式,它的优缺点是什么?

它是指将单个复杂的任务拆分为多个子任务,从而使得多个子任务可以在不同的计算机上并行执行。

任务并行模式完成一项复杂任务包括两个核心步骤:

  1. 将单任务拆分成多个子任务。
  2. 让多个子任务并行执行。

这种模式的好处在于提升了性能、扩展性和可维护性,它的主要问题是带来了设计上的复杂性。

什么是分布式?

分布式指将相同或者相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式。

数据并行和任务并行都算是分布式的一种形态。

如何选择数据并行还是任务并行呢?一个简单的原则:任务执行时间短,数据规模大,类型相同且无依赖,则采用数据并行;任务复杂,执行时间长,任务可拆分,则可以考虑任务并行。在实际项目中,我们往往会两种模式并用。

分布式系统的衡量标准

分布式的目的是用更多的机器,处理更多的数据和更复杂的任务。

性能、资源、可用性和可扩展性是分布式系统的重要指标。

性能指标主要用来衡量一个系统处理各种任务的能力。常见的性能指标包括吞吐量、响应时间和完成时间

吞吐量指系统在一定时间内可以处理的任务数。常见的吞吐量包括QPS、TPS和BPS:

  • QPS,即查询数每秒,用于衡量一个系统每秒处理的查询数,通常用于读操作,越高说明对读操作的支持越好。
  • TPS,即事务数每秒,用于衡量一个系统每秒处理的事务数,通常用于写操作,越高说明对写操作的支持越好。
  • BPS,即比特数每秒,用于衡量一个系统每秒处理的数据量。

响应时间是指系统响应一个请求或输入需要花费的时间。它直接影响用户体验,对于时延敏感的业务非常重要。

完成时间是指系统真正完成一个请求或处理需要花费的时间。

资源占用是指一个系统提供正常能力需要占用的硬件资源,例如CPU、内存、硬盘等。

有两个资源占用情况需要注意:

  • 空载资源占用,一个系统再没有任何负载时的资源占用。
  • 满载资源占用,一个系统满负荷时的资源占用。

可用性是指系统在面对各种异常时可以正确提供服务的能力。

可用性有两种不同的衡量方式:

  1. 系统停止服务时间与总的时间之比
  2. 某功能的失败次数与总的请求次数之比

可靠性(Reliability)与可用性(Availability)有什么区别?

  • 可靠性是指一个系统完全不出故障的概率,更多用于硬件领域。
  • 可用性是指在允许部分组件失效的情况下,一个系统对外仍能正常提供服务的概率。

可扩展性是指分布式系统通过扩展集群机器规模提高系统性能(吞吐量、响应时间、完成时间)、存储容量、计算能力的特征,是分布式系统的特有性质。

衡量可扩展性的常见指标是加速比(Speedup),也就是一个系统进行扩展后相对扩展前的性能提升。

上述这些测量指标,有些指标会彼此约束。不同的分布式系统,针对测量指标,会有不同的侧重:

  • 电商系统最看重吞吐量。
  • IoT最看重资源占用指标。
  • 电信业务最看重响应时间、完成时间以及可用性。
  • HPC看到通过水平扩展提供系统的加速比。
  • 大数据最看重可扩展性。
  • 云计算最看重资源开销。
  • 区块链最看重吞吐量和完成时间。