单机模式:所谓单机模式是指,所有应用程序和数据均部署在一台电脑或服务器上,由一台计算机完成所有的处理。
这种模式的好处是:功能、代码和数据集中,便于维护、管理和执行 单机模式的主要问题是:性能受限、存在单点失效问题
数据并行或数据分布式
为解决单机模式的问题,并行计算得到了发展,进而出现了数据并行(也叫做数据分布式)模式。并行计算采用消息共享模式使用多台计算机并行运行或执行多项任务,核心原理是每台计算机上执行相同的程序,将数据进行拆分放到不同的计算机上进行计算。
并行计算强调的是对数据进行拆分,任务程序在每台机器上运行。要达到这个目的,我们必须首先把单机模式中的应用和数据分离,才可能实现对数据的拆分。
第一步,将应用与数据分离,分别部署到不同的服务器上
第二步,对数据进行拆分,比如把同一类型的数据拆分到两个甚至更多的数据库中,这样应用服务器上的任务就可以针对不同数据并行执行了
任务并行或任务分布式-->提高单个任务的执行性能,或者缩短单个任务的执行时间
任务并行指的是,将单个复杂的任务拆分为多个子任务,从而使得多个子任务可以在不同的计算机上并行执行
分布式其实就是将相同或相关的程序运行在多台计算机上,从而实现特定目标的一种计算方式
数据并行模式指的是,对数据进行拆分,利用多台计算机并行执行多个相同任务,通过在相同的时间内完成多个相同任务,从而缩短所有任务的总体执行时间,但对提升单个任务的执行性能及降低时延无效
任务并行模式指的是,单任务拆分成多个子任务,多个子任务并行执行,只要一个复杂任务中的任意子任务的执行时间变短了,那么这个业务的整体执行时间也就变短了。该模式在提高性能、扩展性、可维护性等的同时,也带来了设计上的复杂性问题,比如复杂任务的拆分。
任务执行时间短,数据规模大、类型相同且无依赖,则可采用数据并行;如果任务复杂、执行时间长,且任务可拆分为多个子任务,则考虑任务并行。
分布式系统的指标:分布式的目的是用更多的机器,处理更多的数据和更复杂的任务
性能、资源、可用性和可扩展性是分布式系统的重要指标
性能:主要用于衡量一个系统处理各种任务的能力,常见的性能指标有吞吐量、响应时间、完成时间
吞吐量指的是,系统在一定时间内可以处理的任务数 QPS、TPS、BPS
响应时间指的是,系统响应一个请求或输入需要花费的时间
完成时间指的是,系统真正完成一个请求或处理需要花费的时间
资源占用,一个系统提供正常能力需要占用的硬件资源,比如CPU、内存、硬盘等
一个系统在没有任何负载时的资源占用,叫做空载资源占用
一个系统满额负载时的资源占用,叫做满载资源占用
可用性,通常指的是系统在面对各种异常时可以正确提供服务的能力。
系统的可用性可以用系统停止服务的时间与总的时间之比衡量。
系统的可用性还可以用某功能的失败次数与总的请求次数之比来衡量。
可靠性通常用来表示一个系统完全不出故障的概率,更多地用在硬件领域。
而可用性则更多的是指在允许部分组件失效的情况下,一个系统对外仍能正常提供服务的概率。
可扩展性,指的是分布式系统通过扩展集群机器规模提高系统性能 (吞吐、响应时间、 完成时间)、存储容量、计算能力的特性,是分布式系统的特有性质。
当任务的需求随着具体业务不断提高时,除了升级系统的性能做垂直 / 纵向扩展外,另一个做法就是通过增加机器的方式去水平 / 横向扩展系统规模。
衡量系统可扩展性的常见指标是加速比(Speedup),也就是一个系统进行扩展后相对扩展前的性能提升。