负载均衡的分类
常见的分为三类,dns负载均衡,硬件负载均衡,软件负载均衡
dns负载均衡
一般实现地域级别的负载,如北方用户访问北京的机房,南方的用户访问深证的机房,本质是dns解析同一个域名可以得到不同的ip;
dns解析优点:简单,成本低,就近访问,增加访问速度,改善性能;
缺点:dns缓存时间长,修改dns后,还是用部分用户访问以前的ip,导致访问失败
扩展性差,无法根据业务做定制化,无法区分服务器差异,无法感知服务器状态;
硬件负载均衡
功能强大:却艾米那个支持各层级负载均衡,支持全面的负载均衡算法,支持全局负载均衡;软件能支持10万并发,硬件支持100万并发
稳定性高:商用硬件负载均衡,经过了良好的测试,稳定性高;支持安全防护
缺点是价格昂贵,扩展性太差,无法定制化
软件负载均衡
nginx是四层的负载均衡,lvs是七层的负载均衡,nginx根据协议负载均衡,而lvs与协议无关,可以做聊天,数据库等
硬件和软件的区别就在性能上,nginx在万级别,一般是五万,lvs能达到十万,而硬件的f5能达到百万;
nginx架构示意图无论是部署还是维护都很简单,便宜,可以实现业务定制化;但是性能一般;
大型业务场景下的负载均衡负载均衡算法
轮询
负载均衡系统接受请求后,按照顺序轮流分配到服务器上;无须关注服务器本身;
当某台服务器出现问题,cpu飙升,负载均衡是无感知的,还会继续发送请求给相应的服务器;
有的服务器新,性能好,有的服务器来,性能差一些,但是负载均衡设备无差别对待
但是注意,虽然不关注服务器状态,但是如果服务器宕机了,或者与负载均衡设别断开连接了,负载均衡设备会把该设备从可用列表中删去,否则会出现系统不可用状态;
加权轮询
按照机器性能给服务器打分,这样可以按照服务器的性能给服务器分配任务;
负载最低优先
比如nginx可以按照http请求数来决定分配任务(需要进行扩展)
我们自己开发的负载均衡系统也可以按照cpu负载或者io负载来均衡系统压力
性能最优秀类
负载最低优先是站在服务器的角度考虑,性能最优是站在客户端角度来考虑问题
可以采用打分的方式,是一种动态权重,标识每个service的处理能力,默认的初始能力相同,当每次成功处理一个请求,认为处理能力最够,动态权重加一,当超时处理一个请求时,认为处理能力跟不上了,权重减10
可以利用动态打分机制实现系统的过载保护,,当外界的访问压力达到一个临界值后,系统会被请求压垮,在外部负载超过系统处理能力时,系统会进行自我保护,依然堆外提供有损的稳定服务
方案一:通过动态权重标识server的处理能力,服务器设置一个负载阈值,查过这个阈值的请求全部抛弃
方案二:当一个服务器屡次请求超时,权重不断下降,即认为服务器处理不过来了,谁定策略让服务器休息一下,例如一秒钟不给服务器分担请求;
如果一个server的动态权重降为0,就认为服务器完全处理不过来了,接下来的时间内,就不分配请求给server,列如一分钟,根据经验,服务器此时在进行fullgc,差不多一分钟能回过神来;
hash
根据源地址hash或者某个业务id进行hash,用户请求给固定服务器,典型的是在session相关业务上
网友评论