可扩展架构(八)

可扩展架构

可扩展架构是一种可以扩展以满足增加的工作负载的体系结构。换句话说,如果工作负载突然超过现有软件+硬件组合的容量,则可以扩展系统(软件+硬件)以满足增加的工作负荷。

可伸缩因子

当你放大你的系统的硬件容量时,你希望它能够处理的工作量可以扩展到相同的程度。如果您的系统的硬件容量增加了一倍,您希望系统能够同时处理两倍的工作量。这种情况被称为“线性可伸缩性”。

线性可伸缩性通常不是这样的。通常有一个与扩展相关的开销,这意味着当你增加硬件容量时,你的系统可以处理工作量的两倍。

当您扩展硬件容量时,系统可以处理的额外工作量是系统的可扩展性因素。可伸缩性因子可以根据您的系统扩展到什么部分而变化。

纵横伸缩性

有两种主要的方法来扩展系统:垂直扩展和水平扩展。

垂直扩展意味着,通过在比当前部署的计算机具有更高容量的计算机上部署软件来扩展系统。新的计算机可以具有比当前计算机更快的CPU、更多的存储器、更快和更大的硬盘、更快的存储器总线等。


水平缩放意味着通过在部署的软件上添加更多的计算机来扩展系统。所增加的计算机通常具有与当前系统运行的计算机相同的容量,或者在购买时获得相同的货币的能力(计算机往往随着时间的推移变得更强大)。


体系结构可扩展性要求

从开发者的角度来扩展软件的最简单的方法是垂直扩展。你只需部署在一台更大的机器上,软件就能运行得更好。然而,一旦你超越了标准硬件需求,购买更快的CPU,更大更快的RAM模块,更大更快的硬盘,更快更大的主板等等,与你获得的额外性能相比,真的非常昂贵。此外,如果向计算机添加更多CPU,而软件未显式实现以利用它们,则无法从额外的CPU获得任何提高的性能。

从软件开发人员的角度来看,水平缩放不是那么容易看到的。为了使您的软件利用多台计算机(甚至在同一台计算机内的多个CPU),您的软件需要能够并行化其任务。事实上,你的软件越是并行化它的任务,你的软件水平越大越好。

任务并行化

任务的并行化可以在几个层次进行:

  • 将单独的任务分配到单独的计算机上。
  • 将单独的任务分配到同一台计算机上的独立CPU上。
  • 将单独的任务分配到同一CPU上的单独线程。

您还可以利用计算机可能有的特殊硬件,如具有大量CPU内核的图形卡,或英飞凌网络接口卡等。


将单独的任务分配给单独的计算机通常被称为“负载平衡”。在单独的文本中将更详细地描述负载平衡。

在同一台计算机上执行多个不同的应用程序,可能使用相同的CPU或使用不同的CPU称为“多任务”。多任务通常是由操作系统完成的,所以这不是软件开发者需要考虑的。您需要考虑的是如何将应用程序分解为更小、独立但协作的进程,如果需要的话,这些进程也可以分布到不同的CPU甚至计算机上。

要完全并行化,任务必须独立于与之并行执行的其他任务。


为了完全分配到任何计算机上,无论计算机执行什么任务,任务必须包含或能够访问执行任务所需的任何数据。确切地说,这意味着取决于你正在开发的应用程序。


猜你喜欢

转载自blog.csdn.net/lanyage_csdn/article/details/80642704