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

什么是分布式系统

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

特点:

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

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

为什么要有分布式系统

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

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

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

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

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

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

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

分布式系统优点

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

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

分布式系统的挑战

  1. 网络延时问题: 这应该是分布式系统面临的最大的挑战,前面也提到,分布式系统中的各个节点是依靠网络来进行通信的,而网络的不可靠性可能会导致以下问题:
  • 消息丢失
  • 我们认为请求丢失了,但是其实它只是延迟到达了而已
  • 网络可能会重传消息,导致收到重复的消息
  • 消息延迟可能会让我们认为某个服务已经因为故障下线,但是实际上并没有。
  • 消息可能以不同的顺序到达,或者不同节点上消息到达的顺序不同。
  1. 部分失效问题: 也可以叫一致性问题,这种问题是由于系统中可能有一部分节点未能正常运行,导致无法正确的协同工作,所以分布式系统下任务执行的原子性要得到保障是一个极大的挑战。
相关推荐
a5876919 分钟前
消息队列(MQ)初级入门:详解RabbitMQ与Kafka
java·分布式·microsoft·面试·kafka·rabbitmq
怒放吧德德25 分钟前
软考架构师:嵌入式微处理器
架构
咕咚.萌西1 小时前
RISC-V体系架构
嵌入式硬件·架构·risc-v
Hello.Reader1 小时前
Kafka在多环境中安全管理敏感
分布式·安全·kafka
九章云极AladdinEdu3 小时前
AI集群全链路监控:从GPU微架构指标到业务Metric关联
人工智能·pytorch·深度学习·架构·开源·gpu算力
蒋星熠3 小时前
深入 Kubernetes:从零到生产的工程实践与原理洞察
人工智能·spring boot·微服务·云原生·容器·架构·kubernetes
即兴小索奇3 小时前
Google AI Mode 颠覆传统搜索方式,它是有很大可能的
前端·后端·架构
在未来等你4 小时前
Elasticsearch面试精讲 Day 14:数据写入与刷新机制
大数据·分布式·elasticsearch·搜索引擎·面试
敲上瘾4 小时前
Docker 存储卷(Volume)核心概念、类型与操作指南
linux·服务器·数据库·docker·容器·架构
John_ToDebug4 小时前
从源码视角全面解析 Chrome UI 布局系统及 Views 框架的定制化实现方法与实践经验
c++·chrome·架构