当前位置:   article > 正文

1.3了解分布式系统(通俗易懂)_分布式计算现实生活的案例

分布式计算现实生活的案例

1.3了解分布式系统(通俗易懂)

任务目的

  • 理解集群、分布式和负载均衡的概念
  • 理解集群、分布式的区别

任务清单

  • 任务1:分布式集群
  • 任务2:负载均衡

详细任务步骤

任务1:分布式集群

从开餐馆说起:你开了一家餐馆,自己掌勺后厨(即做菜)。随着生意越来越好,发现自己忙不过来。于是你聘请了两个厨师,你们三位厨师就是一个“集群”。主要的职责是:洗菜、配菜、炒菜。你们关系如下:

在这里插入图片描述

随着生意越来越好,两种方式增加后厨的生产力:
  (1)继续增加厨师——相当于扩大集群;
  (2)引入流水线的机制,精细化分工。找人分担厨师洗菜、配菜等工作。类似下图。

在这里插入图片描述

其实,流水线体现了分而治之的思想。即将一个大任务分解为多个小任务,提高小任务的生产力,从而提高了整体的生产力。而“分布式”解决问题的思路:正是吸取了将大任务分布为多个小任务的思想,才得到通过跨地域的分布解决大问题。

那么,集群和分布式的区别是什么?

(1)从解决问题的角度看:分布式是以缩短单个任务的执行时间来提升效率的;集群则是通过提高单位时间内执行的任务数来提升效率
  (2)从软件部署的角度看:分布式是指将不同的业务分布在不同的地方;集群则是将几台服务器集中在一起,实现同一业务

如下图,每个人都有不同的分工,一起协作干一件事情,叫做“分布式”。

在这里插入图片描述

再看下图,每个划桨人干的都是一样的活,叫做集群。

在这里插入图片描述

分布式中的每一个节点,都可以做集群,集群并不一定就是分布式的。其实这个赛龙舟的图,整体来看属于分布式,包括打鼓和划桨两个分布式节点,而划桨的节点又是集群的状态。

现实生活中例子还有很多,例如,这样的古代乐队的图就属于集群。

在这里插入图片描述

而现代乐队这样的图就属于分布式。

在这里插入图片描述

综上所述,一个较为理想的分布式集群应该是这样的:一个分布式系统,是通过多个节点组成的,各节点都是集群化,并且个集群还是分布式的

任务2:负载均衡

集群服务器之间如何分工,需要借助的是负载均衡

负载均衡是指将请求分摊到多个操作单元也就是分开部署的服务器上,Nginx是常用的反向代理服务器,可以用来做负载均衡。集群与负载均衡之间有紧密联系,可以结合理解。

负载均衡的本质和分布式系统一样,是分治。由一个独立的统一入口来收敛流量,再做二次分发的过程就是负载均衡。

怎么均衡的背后是策略在起作用,而策略的背后是由某些算法或者说逻辑来组成的。

下面来罗列一下日常工作中最常见负载均衡策略:

(1)轮询

在这里插入图片描述

这是最常用也是最简单的策略,平均分配,人人都有、一人一次。

(2)加权轮询

在这里插入图片描述

在轮询的基础上,增加了一个权重的概念。权重是一个泛化后的概念,可以用任意方式来体现,本质上是能者多劳的思想。比如,可以根据宿主的性能差异配置不同的权重。

(3)最快响应

在这里插入图片描述

这也是一种动态负载均衡策略,它的本质是根据每个节点对过去一段时间内的响应情况来分配,响应越快分配的越多。具体的运作方式也有很多,上图的这种可以理解为:将最近一段时间的请求耗时的平均值记录下来,结合前面的加权轮询来处理,所以等价于2:1:3的加权轮询。

(4)Hash法

在这里插入图片描述

Hash法的负载均衡与之前的几种不同在于,它的结果是由客户端决定的。通过客户端带来的某个标识经过一个标准化的散列函数进行打散分摊。

上图中的散列函数运用的是最简单粗暴的取余法。

那么,负载均衡和分布式的区别又是什么?

负载均衡:请求是不可拆分的,是独立的一个请求,被服务器当中的任何一台接收并处理即可

分布式:任何一个任务(请求)需要节点相互协作共同完成,是可以拆分的

总结:

(1)集群

  • 多个人紧密协作,来完成一个工作,就像一个人似的。比如:餐馆里的所有厨师就可以看做一个集群

  • 集群的好处:

    做菜的能力比一个人时增加了
    多招一个厨师,就能轻易增加做菜的数量(横向伸缩)

(2)分布式

  • 一个任务由多个人协作完成。比如:餐馆里有负责洗菜、配菜的配菜师,有专门负责做菜的厨师。

    在这里插入图片描述

(3)负载均衡

  • 将一系列任务逐项分发给多个人,完成任务的能力增加,而且让大家都不闲着(提高资源利用率),减少任务等待的时间(降低延迟)
    - 比如:餐馆里做菜的厨师有多个,新的菜来了让谁做呢?
    * 可以像发牌似的,一人一个轮流来(轮询)
    * 有人做的快,有人做的慢,可以按照一定的比例轮流(加权轮询)

补充一下Nginx是什么

用简单的话来说

都知道nginx是反向代理,代理了什么?怎么代理的?

可以先理解正向代理,比如访问外网我们是访问不到的,如外网A,这个时候可以找别的 可以访问到的服务器比如服务器B,B可以访问到A,把访问到的数据返回给我们,这样就可以看到A了,B就相当于一个正向代理,这里我们必须要知道B的明确地址才可以访问到,A是不知道我们访问他的,我们是通过B这个正向代理访问到了A。正向代理作用的话有很多,比如访问外网。

反向代理:比如有很多人都在访问某宝服务器,之所以不卡顿的原因是某宝有很多服务器,我们访问到的是他的代理服务器也就是使用nginx,nginx经过一些分配规则,把收到的客户请求分给对应的服务器进行处理。

请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。

反向代理可以保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网,和保证负载均衡。

nginx,nginx经过一些分配规则,把收到的客户请求分给对应的服务器进行处理。

请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。

反向代理可以保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网,和保证负载均衡。

可以参考一下这篇博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/686560
推荐阅读
相关标签
  

闽ICP备14008679号