当一台云主机的性能达到极限时,我们可以使用云主机集群来提升网站的整体性能。那么在这个过程中,调度器如何合理分配任务,保证所有后端云主机充分发挥性能,从而保持云主机集群的整体性能最优,这就是实现云主机的HTTP重定向以达到负载均衡。
1.当用户向云主机发起请求时,请求首先被集群调度器拦截;调度器根据一定的分配策略,选择一个云主机,将所选云主机的IP地址封装在HTTP响应消息报头中的Location字段中,并将响应消息的状态码设置为302,最后将响应消息返回给浏览器。
2.当浏览器收到响应消息时,解析位置字段并向URL发起请求。然后指定的云主机对用户的请求进行处理,最后将结果返回给用户。
3.在使用HTTP重定向实现云主机集群负载均衡的过程中,需要一台云主机作为请求调度器。用户的一个操作需要发起两个HTTP请求,一个是向调度云主机发送请求,获取后端云主机的IP,第二个是向后端云主机发送请求,获取处理结果。
4.调度云主机收到用户请求后,选择哪一个后端云主机处理请求,由调度云主机使用的调度策略决定。当调度云主机收到用户请求时,可以随机决定使用哪一个后端云主机,然后将云主机的IP封装在HTTP响应消息的Location属性中,返回给浏览器。调度云主机需要维护一个要重新计算的值,最后分配的后端云主机的IP。然后当新的请求到达时,调度器将请求依次分配给下一个云主机。
5.由于轮询策略要求调度程序维护一个用于记录上次分配的云主机IP的值,因此需要额外的开销;此外,由于该值属于互斥资源,当多个请求同时到来时,为了避免线程安全问题,需要锁定互斥资源,从而降低性能。而随机分配策略不需要维护额外的值,因此不存在线程安全问题,因此其性能高于轮询。
6.利用HTTP重定向实现云主机集群的负载均衡相对容易实现,逻辑相对简单,但缺点也很明显。在HTTP重复上
在定向方法中,调度云主机只在客户端第一次向网站发出请求时才起作用。当调度云主机向浏览器返回响应信息时,客户端的后续操作基于新URL(即后端云主机)。之后浏览器就不会与调度云主机发生关系,从而出现以下问题:
因为不同的用户访问时间和页面深度不同,每个用户对自己的后端云主机的压力也不一样。但在调度云主机时,无法得知当前用户会对云主机施加多大的压力。因此,这种方法并不能实现真正的负载均衡,只是将请求数量平均分配到每个云主机上。如果分配给用户的后端云主机出现故障,如果页面被浏览器缓存,当用户再次访问网站时,请求会被发送到故障云主机,导致访问失败。