为什么需要分布式系统

6 阅读2分钟

我们为什么需要分布式系统?或者说,使用分布式系统能解决哪些单机解决不了的问题?

  1. 高性能:由于计算机硬件存在无法突破的物理限制,随着芯片工艺逼近极限,摩尔定律已经失效,于是现代CPU将多个CPU“拼在一起”以获得更高的性能,这便是多核CPU架构。可是多核CPU架构依然存在物理限制,而且成本会迅速上升,很多公司难以承受大型机高昂的成本。于是以Google为代表的互联网企业按照多核CPU架构的思路,选择将多台廉价的计算机结合起来,组成一个拥有大量CPU、内存和磁盘的分布式系统这么做同样可以实现对高性能的需求。
  2. 可扩展性:目前很多应用程序都是数据密集型的,应用程序大部分时间在存储和处理数据。随着业务扩展、用户增长或者历史数据累积,单台计算机只能扩展到有限的程度,无法满足要求。通过构建一个数据分布在多台计算机上的分布式存储系统,我们能够将集群规模扩展到单机系统根本无法想象的规模。
  3. 高可用性:在互联网时代,几乎所有的在线服务都需要7x24小时不间断运行。如果你的服务需要保证5个9的可用性,即99.999%的时间里都正常运行,这就意味着,每年最多允许宕机5分钟。想想各种各样的硬件故障、人为因素或者意外情况,就可以知道单个服务想要达到这个要求几乎是不可能的。通过构建分布式系统,冗余多份数据来保证数据可用性;或者通过冗余计算实现服务切换,即在两台计算机上运行完全相同的任务,其中一台发生了故障,可以切换到另一台。这在日常开发运维工作中十分常见。
  4. 必要性:有时构建分布式系统甚至是必然的,例如银行系统需要支持从一个银行跨行转账到另一个银行,比如从北京的银行转账到纽约的银行,这时就需要一种方法来保证转账的一致性。可以说,有些天然的原因让我们的系统必然是分布式的。