理解分布式系统(一):初识

392 阅读4分钟

什么是分布式系统

定义: 分布式系统是一个其组件分布在不同的、联网的计算机上,组件之间通过传递消息进行通信和协调,共同完成一个任务的系统。

特点:

  1. 多节点:分布式系统一般由多个节点组成,它们可以位于不同的物理位置。
  2. 通信:节点之间可以通过网络进行通信,可以传输数据或者协调工作。
  3. 多进程:分布式系统中有多个进程并发运行。
  4. 不共享操作系统和时钟。

这些特点也给分布式系统带来了一些挑战,这些挑战是区别于单机系统的。

为什么要有分布式系统

在了解为什么要有分布式系统前,我们可以先做一些铺垫。

首先,来看看什么叫摩尔定律

摩尔定律是指:当价格不变时,集成电路上可以容纳的元器件的数目,约每隔18至24个月就会增加一倍,性能也会提升一倍。

如果这个定律永远都成立的话,我们机器的性能将无止境的提升,也就是CPU、硬盘等器件的性能会一直成指数上升,那么也就没有分布式系统什么事情了。

遗憾的是,摩尔定律失效了,hhh。。。受我们半导体工艺的限制,芯片在有限的空间下的性能已经基本上发展到极限了。

于是现代CPU将多个CPU ”拼在一起“ 以获得更高的性能,这便是多核CPU架构。可是多核CPU架构依然存在物理限制,且成本会迅速上升,很多公司难以承受大型机高昂的成本。于是,以Google为代表的互联网企业按照多核CPU架构的思路,选择将多台廉价的计算机结合起来,组成一个拥有大量的CPU、内存和磁盘的分布式系统,这么做同样可以实现对高性能的需求。 ----《深入理解分布式系统》

铺垫结束, 总结来说就是摩尔定律失效了,所以单机系统的性能是有瓶颈的,而处于互联网时代的系统中的数据和流量都在爆炸性的增长,这就产生了矛盾了,分布式系统也就诞生了。

分布式系统优点

首先,需要说明的是,这里的优点是较单机系统来比较着说的,指不定啥时候出现了更加牛逼的系统,这些优点可能就微不足道了。

  1. 高性能: 显而易见,分布式系统可以通过并行处理和负载均衡提高系统整体的性能和吞吐量。
  2. 高扩展性: 分布式系统可以通过添加新的节点来扩展系统的容量和性能,来适应不断增加的要求。而单机系统只能扩展到有限的程度。
  3. 高可用性: 分布式系统可以通过冗余多份数据或者冗余计算得到容错和自动恢复的功能,现在很多大公司的服务都要求可用性达到99.999%,也就是一年之内最多允许宕机5分钟。(想到前段时间阿里云和滴滴的事故,这一次就把多少年的宕机时限用掉了,狗头)
  4. 地理分布: 分布式系统可以将不同的节点放在不同的地理位置,这样可以进一步增加容错性,也可以让不同地理位置的用户都能得到较好的服务质量(用户离服务器越近,延时就会越小)。

分布式系统的挑战

  1. 网络延时问题: 这应该是分布式系统面临的最大的挑战,前面也提到,分布式系统中的各个节点是依靠网络来进行通信的,而网络的不可靠性可能会导致以下问题:
  • 消息丢失
  • 我们认为请求丢失了,但是其实它只是延迟到达了而已
  • 网络可能会重传消息,导致收到重复的消息
  • 消息延迟可能会让我们认为某个服务已经因为故障下线,但是实际上并没有。
  • 消息可能以不同的顺序到达,或者不同节点上消息到达的顺序不同。
  1. 部分失效问题: 也可以叫一致性问题,这种问题是由于系统中可能有一部分节点未能正常运行,导致无法正确的协同工作,所以分布式系统下任务执行的原子性要得到保障是一个极大的挑战。