2022
我们一起努力

高并发该怎么解决?解决方案之一负载均衡

  到底什么是负载均衡?

  当一台服务器的性能到达极限时,我们可以通过服务器集群来提升网站的总体性能。那样,在服务器集群中,必须有一台服务器取代调度者的角色,用户的全部要求一定会前提由它接收,调度者再按照每台服务器的负载状况将要求配置给某一台后端服务器去处置。

  那样在这个流程中,调度者怎样合理分配任务,保证全部后端服务器都将性能充分体现,故而确保服务器集群的总体性能最优,这就是负载均衡问题。

  下边详情介绍负载均衡的四类完成方法。

  (一)HTTP重定向完成负载均衡

  流程描述

  当用户向服务器进行要求时,请求前提被集群调度者截获;调度者按照某类配置策略,挑选一台服务器,并将选中的服务器的IP地址封装在HTTP响应消息头部的Location字段中,并将响应消息的状态码设为302,最终将这种响应消息返还给浏览器。

  当浏览器得到响应消息后,解析Location字段,并向该URL进行要求,随后指定的服务器处置该用户的要求,最终将结果返还给用户。

  在通过HTTP重定向来完成服务器集群负载均衡的流程中,必须一台服务器身为要求调度者。用户的一项使用必须进行两次HTTP要求,一次向调度服务器发送要求,获得后端服务器的IP,第二次向后端服务器发送要求,获得处置结果。

  调度策略

  调度服务器得到用户的要求后,说到底挑选哪台后端服务器处置要求,这由调度服务器所通过的调度策略确定。

  随机配置策略

  当调度服务器得到用户要求后,能够随机确定通过哪台后端服务器,随后将该服务器的IP封装在HTTP响应消息的Location属性中,返还给浏览器就可以。

  轮询策略(RR)

  调度服务器必须维护一个值,用来记录上次配置的后端服务器的IP。那样当新的要求出现时,调度者将要求顺次配置给下一台服务器。

  考虑到轮询策略必须调度者维护一个值用来记录上次配置的服务器IP,故而必须额外的开销;除此之外,考虑到这种值隶属于互斥资源,那样当多个要求一起出现时,为了更好地避免线程的安全问题,故而必须锁定互斥资源,故而降低了性能。而随机配置策略并不需要维护额外的值,也就不存在线程安全问题,故而性能比轮询要高。

  优缺点分析

  通过HTTP重定向来完成服务器集群的负载均衡完成起来极为容易,逻辑相对简单,但缺点也极为清晰。

  在HTTP重定向方法中,调度服务器只在客户端第一次向网站进行要求的时候起

  作用。当调度服务器向浏览器返还响应信息后,客户端过后的采用都通过新的URL完成的(也就是后端服务器),过后浏览器就并不会与调度服务器产生关系,继而会产生以下好多个疑问:

  考虑到不一样用户的访问时间、访问页面深度不尽相同,故而各个用户对彼此的后端服务器所产生的压力也不一样。而调度服务器在调度时,难以清楚现阶段用户可能会对服务器产生多大的压力,因而这类方式难以完成真实作用上的负载均衡,仅仅只是把要求次数平均分配给每台服务器而已。若配置给该用户的后端服务器产生故障,并且假如页面被浏览器缓存,那样当用户再次访问网站时,要求一定会发给产生故障的服务器,故而引起访问失败。

  (二)DNS负载均衡

  DNS是什么?

  在熟悉DNS负载均衡以前,大家前提必须要熟悉DNS域名解析的环节。我们知道,数据包选用IP地址在网络中传播,而需要方便用户记忆,大家采用域名来访问网站。那样,大家通过域名访问网站以前,前提必须要将域名解析成IP地址,这个工作是由DNS完成的。也就是域名服务器。大家提交的要求并不会随时发送给需要访问的网站,更是前提发给域名服务器,它会帮大家把域名解析成IP地址并返还给我们。大家收到IP过后才会向该IP发起要求。那样,DNS服务器有一个天然的优势,假如一个域名指向了多个IP地址,那样每一次完成域名解析时,DNS只需要选一个IP返还给用户,就能够完成服务器集群的负载均衡。

  具体措施

  前提必须要将大家的域名指向多个后端服务器(将一个域名解析到多个IP上),再设置一下调度策略,那样大家的准备工作就完成了,接下去的负载均衡就完全由DNS服务器来完成。当用户向大家的域名发起要求时,DNS服务器会自行地通过大家事先制定好的调度策略选一个合适的IP返还给用户,用户再向该IP发起要求。

  调度策略

  一般DNS提供商会提供好多个调度策略供大家挑选,如随机配置、轮询、通过请求者的地域配置离他最近的服务器。

  优缺点分析

  DNS负载均衡更大的优点便是配置简单。服务器集群的调度工作完全由DNS服务器承担,那样大家就可以把精力放到后端服务器上,确保他们的稳定性与吞吐量。并且完全无需担心DNS服务器的性能,即使是采用了轮询策略,它的吞吐率依然卓越。另外,DNS负载均衡具备较强了扩展性,你完全能够为一个域名解析较多的IP,并且无需担心性能疑问。

  可是,考虑到把集群调度权交由了DNS服务器,故而大家不可以随心所欲地控制调度者,不可以定制调度策略。

  DNS服务器也不可以知道每台服务器的负载情况,所以不可以完成真正意义上的负载均衡。它和HTTP重定向一样,你会发现把任何请求平均分配给后端服务器而已。

  除此以外,当大家察觉某一台后端服务器产生故障时,尽管大家立刻将该服务器从域名解析中去除,但考虑到DNS服务器就会有缓存,该IP依然会在DNS中保留一段时间,那样便会造成一部分用户没法正常访问网站。这是一个致命的问题!好在这个问题可以用动态DNS来解决。

  动态DNS

  动态DNS可以使我们通过程序动态修改DNS服务器中的域名解析。故而当大家的监控程序察觉某台服务器挂了过后,能立刻通报DNS将其删掉。

  总的来说

  DNS负载均衡是一类粗犷的负载均衡方法,这儿只做详细介绍,不建议使用。

  (三)反向代理负载均衡

  如何理解反向代理负载均衡?

  反向代理服务器是一个处在具体服务器以前的服务器,任何向大家网站发送的请求都前提要通过反向代理服务器,服务器按照用户的请求要不直接将结果返还给用户,要不将请求交由后端服务器处理,再返还给用户。

  以前大家详细介绍了用反向代理服务器完成静态页面和常用的动态页面的缓存。接下去大家详细介绍反向代理服务器更常用的功能——完成负载均衡。

  我们知道,任何发送给大家网站的请求都前提通过反向代理服务器。那样,反向代理服务器就可以充当服务器集群的调度者,它可以按照目前后端服务器的负载情况,将请求发送给一台合适的服务器,并将处理结果返还给用户。

  优点

  隐藏后端服务器。

  与HTTP重定向相比较,反向代理可以隐藏后端服务器,任何浏览器都不会与后端服务器直接交互,故而可以保障调度者的控制权,增强集群的整体性能。

  故障转移

  与DNS负载均衡相比较,反向代理可以更迅速地移除故障结点。当监控程序察觉某一后端服务器产生故障时,可以及早通报反向代理服务器,并立刻将其删除。

  合理分配任务

  HTTP重定向和DNS负载均衡都没法完成真正意义上的负载均衡,也就是调度服务器没法按照后端服务器的具体负载情况分配任务。但反向代理服务器支持手动设定每台后端服务器的权重。我们可以按照服务器的配置设置不同的权重,权重的不同会造成被调度者选中的概率的不同。

  缺点

  调度者压力过大

  考虑到全部的请求都先由反向代理服务器处置,那样当请求量超出调度服务器的最大负载时,调度服务器的吞吐率减低会直接减低集群的整体性能。

  限制扩展

  当后端服务器也不能满足巨大的吞吐量时,就必须增加后端服务器的数量,可没法无限量地增加,由于会遭受调度服务器的最大吞吐量的限制。

赞(0)
文章名称:《高并发该怎么解决?解决方案之一负载均衡》
文章链接:https://www.fzvps.com/7596.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!