分布式技术

什么是分布式服务?所谓分布式服务,就是将不同的服务模块部署在多台不同的服务器上,然后通过远程调用协同工作,共同对外提供服务。对于用户来说,就像是一台计算机在服务一样。

在实际业务中,分布式系统可以将不同的业务功能对应到一个个独立的子系统中去,比如针对电商平台,可以将用户服务、产品服务、店铺管理、数据分析等不同的数据处理项目部署在不同的计算机集群上。这些独立的集群可能是在不同的机房,甚至是不同的城市中,有的大型数据中心还会分布在不同的国家和地区。它们之间通过RPC消息传递进行通信和协调,再向用户提供服务。

 

1. 分布式技术的演变

1.1 单机模式

所有应用程序和数据均部署在一台电脑或服务器上,由一台计算机完成所有的处理。

img

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

坏处:单个计算机的处理能力取决于 CPU 和内存等,但硬件的发展速度和性能是有限的,而且升级硬件的性价比也是我们要考虑的,由此决定了 CPU 和内存等硬件的性能将成为单机模式的瓶颈。

1.2 数据并行模式

为解决单机模式的问题,并行计算得到了发展,进而出现了数据并行(也叫作数据分布式)模式。并行计算采用消息共享模式使用多台计算机并行运行或执行多项任务,核心原理是每台计算机上执行相同的程序,将数据进行拆分放到不同的计算机上进行计算。

重点是对同一个应用程序的数据拆分到不同的机器上进行并行计算。

a) 将数据与应用进行分离

img

b) 对数据进行拆分。存至多个机器的数据库上。

img

数据并行模式的好处:利用多台计算机并行处理多个请求,可以在相同时间内处理多个请求任务。

需要考虑的问题:

  • 如何将请求分配到不同的服务器上——负载均衡器
  • 请求量较大时,数据库读写IO频繁——读写分离。读数据库与写数据库,当然要注意两种分离数据库之间数据同步的问题。
  • 热点数据给单点数据库带来较大的压力——>缓存中间件的使用。

1.3 任务并行模式

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

img

两个核心步骤:首先将单任务拆分成多个子任务,然后让多个子任务并行执行。

这种模式和集团军模式很像,任务拆分者对应领导者,不同子系统对应不同兵种,不同子程序执行不同任务就像不同的兵种执行不同的命令一样,并且运行相同子系统或子任务的计算机又可以组成一个兵团。

1.4 任务并行与数据并行的选择建议

一个简单的原则就是:任务执行时间短,数据规模大、类型相同且无依赖,则可采用数据并行;如果任务复杂、执行时间长,且任务可拆分为多个子任务,则考虑任务并行。在实际业务中,通常是这两种模式并用。

1.5 三种模式对比

单机模式指的是,所有业务和数据均部署到同一台机器上。这种模式的好处是功能、代码和数据集中,便于维护、管理和执行,但计算效率是瓶颈。也就是说单机模式性能受限,也存在单点失效的问题。数据并行(也叫作数据分布式)模式指的是,对数据进行拆分,利用多台计算机并行执行多个相同任务,通过在相同的时间内完成多个相同任务,从而缩短所有任务的总体执行时间,但对提升单个任务的执行性能及降低时延无效。任务并行(也叫作任务分布式)模式指的是,单任务拆分成多个子任务,多个子任务并行执行,只要一个复杂任务中的任意子任务的执行时间变短了,那么这个业务的整体执行时间也就变短了。该模式在提高性能、扩展性、可维护性等的同时,也带来了设计上的复杂性问题,比如复杂任务的拆分。

 

2. 分布式系统优缺点

分布式场景下比较著名的难题就是 CAP 定理。CAP 定理认为,在分布式系统中,系统的一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance),三者不可能同时兼顾。在分布式系统中,由于网络通信的不稳定性,分区容忍性是必须要保证的,因此在设计应用的时候就需要在一致性和可用性之间权衡选择。互联网应用比企业级应用更加偏向保持可用性,因此通常用最终一致性代替传统事务的 ACID 强一致性。

2.1 分布式系统的优点

可靠性

分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。

可扩展性

在分布式计算系统可以根据需要增加更多的机器。

资源共享

共享数据是必不可少的应用,如银行,预订系统。

灵活性

由于该系统是非常灵活的,它很容易安装,实施和调试新的服务。

更快的速度

分布式计算系统可以有多台计算机的计算能力,使得它比其他系统有更快的处理速度。

开放系统

由于它是开放的系统,本地或者远程都可以访问到该服务。

更高的性能

相较于集中式计算机网络集群可以提供更高的性能(及更好的性价比)。

 

2. 分布式系统的缺点

故障排除

故障排除和诊断问题。

软件

更少的软件支持是分布式计算系统的主要缺点。

网络

网络基础设施的问题,包括:传输问题,高负载,信息丢失等。

安全性

开放系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题。

 1. 分布式系统的特点 随着移动互联网的快速发展,互联网的用户数量越来越多,产生的数据规模也越来越大,对应用系统提出了更高的要求,我们的系统必须支持高并发访问和海量数据处理。 分布式系统技术就是用 ...