与我的new years resolution保持一致,本周我深入研究了设置负载平衡器和节点聚类。不浪费太多时间让我们深入研究
从这个API类比的流行定义中绘制出来:
让我们从与客人,服务员和厨房工作人员一起想象一家餐厅开始 - 您知道这是怎么回事。
说这家餐厅很大,我们在餐厅里有4
厨房,每个餐厅都负责制作美味佳肴,但专门制作一件美味佳肴(中国,印度等)。现在由于某种原因,今晚有很大一部分客人喜欢中文并在60
订单周围放置,服务员完成了他的工作,并向kitchen 1
接受了所有专门用于制作中国菜的kitchen 1
-毫无疑问,请参加60+
订单。对kitchen 1
的压力很大,但我们必须记住,其他厨房也可以使中国人也不专业。
如果订单在每个厨房之间平均分布,这对厨师和客人都可以提供更好的体验 - 我的意思是,这将使kitchen 1
的一大笔工作并确保客人在更少的时间内获得食物!每个人的双赢案子。
现在,服务员可以通过几种方式分配此工作量:
- 平等传播所有订单,因此,如果有
4
请求,则每个厨房在1
上工作 - 以最少的订单给
kitchen
订单 - 将订单送给
kitchen
,该订单总是在访问特定客人的订单 时处理特定客人的订单
- 用最热的炉子向
kitchen
订单
确实有很多方法可以解决,但是现在让我们揭示此类比中涉及的技术:
- 客人显然是我们的客户端设备(Web浏览器,手机,桌面)ð¥¥
- 厨房是我们的服务器/apiðï¶
- 在这种情况下的服务员是我们的负载平衡器
您可能必须认为负载平衡器的目的与API相同,因为它将我们的请求从客户端带到处理点/服务器,但您会有所不同。首先,您的请求通过负载平衡器(服务员)首先在与API/Server(厨房)联系之前,其次是负载平衡器,因为该名称意味着平衡请求负载(订单)每个您的服务器必须处理最大程度的性能。
您看到kitchen 1
是否一直在获得所有订单,不久之后,烹饪人员就会筋疲力尽并休息一下,让客人等待更长的时间才能完成订单。
现在,在这种情况下,服务员经过专门的培训,可以通过识别来减少客人的整体等待时间。要下订单。
有一些算法可以使用负载平衡器来确定如何选择服务器来处理请求,我们将仅查看上面引用的4个(根据您的要求配置)
- Round Robin-这只是在每个服务器上逐步传播请求。如果有
4
请求,则4
服务器每个都处理1
。如果有7
请求,则只有server8
才能处理1
7 - 最小连接 - 这只是将请求分配给服务器,而最少要处理的请求
- 哈希 - 这是根据我们定义的密钥分发请求,例如客户端IP地址或请求URL
- 最少的带宽 - 此算法每秒测量大型行驶(Mbps),将客户端请求发送到MBP的流量最少。
您可以在Cloudflare的好人那里浏览这个brilliant article,以了解有关负载平衡算法的更多信息。
现在,希望我们对负载平衡器的概念有一个坚定的了解,但是作为软件工程师,我们始终需要避免single points of failure,如果您注意到您注意到我们的单个失败点在这个故事中对您来说!如果不让我们一起走过它。
您会看到服务员可以随机打电话给病人,这可能会迅速破坏餐厅的流动,从而导致客户体验不良。无论出于何种原因,我们的负载平衡器都可能失败,然后我们或多或少会回到一个挣扎着一定数量的请求的方面。这就是为什么在实践中我们需要确保我们拥有后备负载均衡器,因此,在我们的主加载平衡器经历停机时,替代者将被调用并保持整个过程的运行!
负载平衡器的功能
负载平衡器是非常动态的,除了最佳的路由请求向服务器路由请求外,它们还可以用于许多服务,例如:
- 记录
- 加密
- Caching
- 重定向
- 自动化 还有更多
负载平衡器很棒,如果您决定在项目中使用一个,这里是当今行业中常用的一些服务
现在将全部。下周,我将深入研究Nodejs应用程序的聚类概念,以及它们如何增强您的Web应用程序的性能,直到此时CIAO!