分布式系统基本概念

定义:

  • 多进程,分布式系统中有多个进程并发运行。
  • 不共享操作系统,通过网络通信传递消息协作。
  • 不共享时钟,所以很难只通过时间来定义两个事件的顺序。

为什么需要分布式系统

  • 高性能:由于计算机硬件存在无法突破的物理限制,现在CPU采用将多个CPU拼在一起以获得更高的性能。可是多核CPU架构存在物理限制,而且成本迅速上升。于是Google为代表的互联网企业按照多核CPU架构的思路,选择将多台廉价的计算机结合起来,组成一个拥有大量的CPU、内存和磁盘的分布式系统。
  • 扩展性:目前很多应用程序都是数据密集(data-intensive)型的,应用程序大部分时间都在存储和处理数据。随着业务的拓展/用户增长/历史数据积累,单台计算机只能扩展到有限的程度。通过分布式存储,可以扩展到很高的上限。
  • 高可用性:在互联网。服务需要不间断运行,例如需要5个9的可用性。通过构建分布式系统,可以冗余多分数据,或者通过冗余计算实现服务切换。
  • 必要性:类似银行,天然需要支持分布式。

分布式系统的挑战

网络延时问题

分布式系统中多个节点通过网络通信,但网络并不能保证数据什么时候到达,以及是否一定到达。

分布式系统可能出现的网络问题:

  • 消息丢失了
  • 我们可能认为请求丢失了,但实际上消息只是延迟到达
  • 网络可能会重传消息,导致收到重复消息
  • 消息延迟可能会让我们认为某个服务故障下线,但实际没有
  • 消息可能以不同顺序到达,或者不同节点消息到达顺序不同