Ngnix是负载均衡分厂棒的实现方式,之一!可是面试的时候面试官每每但愿可以经过一个螺丝钉可以牵连出整个车间,若是单单回复Ngnix,想经过面试可能还欠些火候。 |
是指单台服务器性能达到极限时经过服务器集群来横向增长系统的吞吐量和性能。一说负载均衡咱们想到的就是Ngnix,不和否定,Ngnix是负载均衡分厂棒的实现方式,之一!可是面试的时候面试官每每但愿可以经过一个螺丝钉可以牵连出整个车间,若是单单回复Ngnix,想经过面试可能还欠些火候。linux
服务器负载均衡就是咱们平时说的负载均衡,是指在服务器上游作服务分发,经常使用的方式有一下几种:面试
一、DNS域名解析负载均衡;假设咱们的域名指向了多个IP地址,当一个域名请求来时,DNS服务器机进行域名解析将域名转换为IP地址是,在1:N的映射转换中实现负载均衡。DNS服务器提供简单的负载均衡算法,但当其中某台服务器出现故障时,通知DNS服务器移除当前故障IP。 二、反向代理负载均衡;反向代理只值对服务器的代理,代理服务器接受请求,经过负载均衡算法,将请求转发给后端服务器,后端服务返回给代理服务器而后代理服务器返回到客户端。反向代理服务器的优势是隔离后端服务器和客户端,使用双网卡屏蔽真实服务器网络,安全性更好,相比较于DNS域名解决负载均衡,反向代理在故障处理方面更灵活,支持负载均衡算法的横向扩展。目前使用很是普遍。固然反向代理也须要考虑不少问题,好比单点故障,集群部署等。 三、IP负载均衡;咱们都知道反向代理工做到HTTP层,自己开销相对大一些,对性能有必定影响,LVS-NAT是一种卫浴传输层的负载均衡,它经过修改接受的数据包目标地址的方式实现负载均衡。Linux2.6.x之后版本内置了IPVS,专一用于实现IP负载均衡,故而在Linux上IP负载均衡使用很是普遍。LVS-DR工做在数据链路层,比LVS-NAT更霸道的时候它直接修改数据包的MAC地址。LVS-TUN——基于IP隧道的请求转发机制,将调度器收到的IP数据包进行封装,转交给服务器,而后服务器返回数据,经过调度器实现负载均衡。这种方式支持跨网段调度。总结一下,LVS-DR和LVS-TUN都适合响应和请求不对称的Web服务器,如何从它们中作出选择,取决于你的网络部署须要,由于LVS-TUN可具备跨地域性,有相似这种需求的,就应该选择LVS-TUN。
相比较服务器负载均衡而言,客户端负载均衡是一个很是小众的概念,可是面试在问道负载均衡相关知识的时候却会刻意了解候选人的知识广度。客户端负载均衡是在spring-cloud分布式框架组件Ribbon中定义的。咱们在使用spring-cloud分布式框架时,同一个service大几率同时启动多个,当一个请求奔过来时,那么这多个service,Ribbon经过策略决定本次请求使用哪一个service的方式就是客户端负载均衡。在spring-cloud分布式框架中客户端负载均衡对开发者是透明的,添加@LoadBalanced注解就能够了。客户端负载均衡和服务器负载均衡的核心差别在服务列表自己,客户端负载均衡服务列表在经过客户端维护,服务器负载均衡服务列表由中间服务单独维护。
经过对以上知识的理解,你们可以对负载均衡有的较为全面的认识,下来我再简单的和面试官聊一聊常见的负载均衡算法:算法
随机,经过随机选择服务进行执行,通常这种方式使用较少; 轮训,负载均衡默认实现方式,请求来以后排队处理; 加权轮训,经过对服务器性能的分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力; 地址Hash,经过客户端请求的地址的HASH值取模映射进行服务器调度。 最小连接数;即便请求均衡了,压力不必定会均衡,最小链接数法就是根据服务器的状况,好比请求积压数等参数,将请求分配到当前压力最小的服务器上。 其余若干方式。