负载均衡的概念是指当单个服务器的性能达到极限时,通过服务器集群横向提升系统吞吐量和性能。当我们谈论负载均衡时,我们会想到Ngnix。不同意也否认,Ngnix是实现负载均衡分厂最好的方式之一!但是在面试的时候,面试官往往希望能够通过一个螺丝钉把整个车间都牵连进来。如果你只回复Ngnix,我可能还需要一些时间才能通过面试。服务器负载均衡服务器负载均衡就是我们通常所说的负载均衡,指的是将服务分配到服务器的上游。常用的方法有几种:DNS域名解析负载均衡;假设我们的域名指向多个IP地址,当一个域名请求到来时,DNS服务器进行域名解析将域名转换为IP地址,在1:N的映射转换中实现负载均衡。DNS服务器提供了一种简单的负载均衡算法,但是当其中一台服务器出现故障时,会通知DNS服务器移除当前故障IP。反向代理负载均衡;反向代理只是服务器的代理。代理服务器接受请求,通过负载均衡算法将请求转发给后端服务器。后端服务返回给代理服务器,再由代理服务器返回给客户端。反向代理服务器的好处是隔离了后端服务器和客户端,使用双网卡屏蔽真实服务器网络,安全性更好。与DNS域名解决负载均衡相比,反向代理在故障处理上更加灵活,支持负载均衡算法伸缩。目前被广泛使用。当然,反向代理还需要考虑很多问题,比如单点故障、集群部署等;IP负载均衡;我们都知道反向代理是作用于HTTP层的,其开销比较大,对性能有一定的影响。LVS-NAT是卫生传输层的负载均衡。它修改接收到的数据包的目的地址。实现负载均衡的方法。Linux2.6.x以后的版本内置了IPVS,专注于IP负载均衡,因此IP负载均衡在Linux上得到广泛应用。LVS-DR工作在数据链路层。比LVS-NAT霸道的时候,直接修改数据包的MAC地址。LVS-TUN——一种基于IP隧道的请求转发机制,将调度器收到的IP数据包进行封装转发给服务器,服务器再返回数据,通过调度器实现负载均衡。该方法支持跨网段调度。综上所述,LVS-DR和LVS-TUN都适用于非对称响应和请求的Web服务器。如何从中选择取决于你的网络部署需求,因为LVS-TUN是可以跨地域的,有类似这样的需求,你应该选择LVS-TUN。与服务器负载均衡相比,客户端负载均衡是一个非常小众的概念。但是面试官在问负载均衡相关知识的时候,会刻意去了解应聘者的知识广度。客户端负载均衡定义在spring-cloud分布式框架组件Ribbon中。我们在使用spring-cloud分布式框架的时候,同一个服务很有可能同时启动多个。当一个请求过来,那么在这多个服务中,Ribbon通过一个策略来决定这个请求使用哪个服务。客户端负载平衡。在spring-cloud分布式框架中,客户端负载均衡对开发者是透明的,只需要添加@LoadBalanced注解即可。客户端负载均衡和服务端负载均衡的核心区别在于服务列表本身。客户端负载均衡服务列表由客户端维护,服务端负载均衡服务列表由中间服务单独维护。通过以上知识的了解,大家可以对负载均衡有一个更全面的认识。接下来跟面试官简单说一下常见的负载均衡算法:random,随机选择服务执行。一般这种方法用的比较少;round-robintraining,默认实现负载均衡,请求来了就排队处理;加权循环训练,通过对服务器性能的分级,给配置高、负载低的服务器分配更高的权重,平衡各服务器的压力;addresshash,通过客户端请求的地址的HASH值取模映射进行服务器调度。最小连接数;即使要求平衡,压力也不一定平衡。最小连接数法是根据服务器的情况,比如请求积压的数量等参数,将请求分配给当前压力最小的服务器。其他几种方式。
