女朋友突然让我跟她讲讲分布式

2021年3月24日 8点热度 0条评论 来源: 学徒菠仔

突然被女朋友问到:“今天听人提到分布式,感觉好高大上,你能给我讲讲什么是分布式吗?嘤嘤嘤”

我:“啊吧啊吧...”

女朋友:“啥?你在说啥?”

我:“分布式系统,其组件位于不同的计算机通过网络通信传递信息来沟通协调它们的工作。 这些组件交互以实现一个共同的目标

女朋友:“...”

于是乎,决定写一篇博客简单的梳理下自己所理解的分布式系统的概念。

----

cv自维基百科 “A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system.The components interact with one another in order to achieve a common goal.”

分布式系统是独立计算机的集合,对用户而言,它们是一个单一的统一系统

特征:组件自主,对用户透明。

简单点、武断点、流氓点的说法:“只要一个系统的各个节点位于不同的设备上,并且通过网络通信进行了交互,那就可以把这个系统称之为分布式系统。” 再说直白点“你通过手机访问某个网站,你的手机和服务端直接存在了网络通信,那么它们一起就可以称之为一个分布式系统。”虽然一般我们不太这么认为,不过概念的东西,尤其是这种业界都未明确定性的东西,想的越极端就越简单,不用太过纠结。

-----

很多同学可能会纠结分布式、集群、微服务的区别,那么我简单讲一下自己的理解哇。

我对于分布式的理解前面已经提到了,“各个组件部署在不同的电脑上,通过网络通信进行了交互,那么就可以称之为分布式系统”。

集群的概念:“同一个组件的多个实例,形成的逻辑上的整体”。

可以说分布式 和 集群是两个维度的东西: 分布式是就一整个系统而言(包括多个组件),集群是针对于同一个组件而言(一个相同的组件,部署多个实例)。

图1.1
图1.2
图1.3

      

大部分同学可能只会认为图1.3所示系统才能称之为分布式系统,其它两个系统只能称之为集群系统。但是,按照前面所提到的对分布式系统的定义,三个系统都是分布式系统,因为三个系统的各个节点之间都有进行网络通信。

集群和分布式并不是两个冲突的概念,集群和分布式单纯不是一个维度的东西而已,他们并不冲突。

图1.1的三个相同的https应用服务器,就是https应用服务器集群,然后整个一套系统是分布式的。同理,图1.2、1.3不光有Https应用服务器集群,还有相同数据库的集群,同样他们一定也是分布式系统。

分布式系统的各个组件可以部署多个实例,让相同实例集群部署。

和分布式系统(多台机器,网络通信,协调交互)同一维度的概念,单机系统(一个系统只部署在了一台机器上,单一的pc机、小型机、大型机)。

-----------------------

聊完了分布式系统和集群的区别,大家应该对分布式系统有了一个新的极端的、简单的认识了,那么对于它和微服务系统的区别就更好区分了。

同样的,分布式 和 微服务同样不是一个维度的东西,微服务是对单体应用(注意不是单机应用) 根据业务、功能模块进行拆分,使其成为不同的应用,通过网络通信进行交互。

所以微服务系统一定是分布式系统,但是分布式系统并不是对于应用、业务而言,更像是物理层面上的思考,是要有多台机器部署了组件,且各组件进行了网络通信

-------------------------

差不多讲完了分布式的概念,那么分布式有哪些优点又有哪些缺点以及挑战呢:

利用多台计算机协同解决单台计算机所不能解决的计算、存储等问题

1、分布式系统的优点

a: 水平可拓展性:组件自主,分布式系统的计算过程彼此独立发生这样可以轻松地根据需要添加节点和功能。

b: 可靠性 (高容错性)当计算分散到多台计算机上时某个节点发生故障不会导致整个系统瘫痪。

c: 高性能分布式系统可以有效地处理任务,因为工作负载和请求被分解分散在多台计算机上。

2、分布式系统的缺点

a: 延迟(Latency): 系统分布越广泛,系统各组成部分之间的等待时间就越长,这可能导致技术团队需要在可用性,一致性和延迟方面进行权衡。

b: 故障追踪:由于分布在多台服务器上,故障排除和诊断问题难度较高

C: 其它:通信网络饱和或信息丢失和网络安全问题,方便的数据共享同时意味着机密数据容易被窃取。

-------------------------

写在最后:业界对于分布式的概念并未定性,所以大家其实大可不必对此进行过多的纠结,概念的东西想的越极端也就越简单!

分布式的学习,真正有意思的东西还在后面:副本一致性、lease机制、quorum机制、wal机制、两阶段提交、三阶段提交、MVCC技术、CAP理论、Base理论、共识算法、paxos协议、raft协议、zab协议...

大家感兴趣可以一键三联,后期博主会在分布式专栏中对这些知识进行简单的梳理和讲解。

共同学习的过程,如果大家觉得有不同的看法、或者发现博主有任何错误的地方,请评论留言,大家一起探讨!

 

    原文作者:学徒菠仔
    原文地址: https://blog.csdn.net/qiubboy/article/details/115153000
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。