计算机负载均衡以及服务容错的方法
随着互联网的不断发展,越来越多的人都在学习计算机编程开发的相关知识,而今天我们就一起来了解一下,计算机负载均衡以及服务容错的方法。
一、负载均衡
服务高可用的保证手段,为了保证高可用,每一个微服务都需要部署多个服务实例来提供服务,此时就需要根据不同的负载均衡策略对服务进行调用。
负载均衡策略
轮询策略
实现原理:轮询策略表示每次都顺序取下一个provider,比如一共有5个provider,1次取1个,2次取2个,3次取3个,以此类推。
权重轮询策略
实现原理:
根据每个provider的响应时间分配一个权重,响应时间越长,权重越小,被选中的可能性越低。
原理:一开始为轮询策略,并开启一个计时器,每30秒收集一次每个provider的平均响应时间,当信息足够时,给每个provider附上一个权重,并按权重随机选择provider,高权越重的provider会被高概率选中。
随机策略
实现原理:从provider列表中随机选择一个。
少并发数策略
实现原理:选择正在请求中的并发数小的provider,除非这个provider在熔断中。
重试策略
实现原理:其实就是轮询策略的增强版,轮询策略服务不可用时不做处理,重试策略服务不可用时会重新尝试集群中的其他节点。
可用性敏感策略
实现原理:过滤性能差的provider
一种:过滤掉在Eureka中处于一直连接失败的provider。
二种:过滤掉高并发(繁忙)的provider。
区域敏感性策略
实现原理:
以一个区域为单位考察可用性,对于不可用的区域整个丢弃,从剩下区域中选可用的provider。
如果这个ip区域内有一个或多个实例不可达或响应变慢,都会降低该ip区域内其他ip被选中的权重。
二、服务容错
在微服务中,一个请求经常会涉及到调用多个服务,如果其中某个服务不可用,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。
终的结果就是:一个服务不可用,导致一系列服务的不可用。
造成雪崩的原因可以归结为以下三点:
服务提供者不可用(硬件故障,程序BUG,缓存击穿,用户大量请求等) 重试加大流量(用户重试,代码逻辑重试)
服务消费者不可用(同步等待造成的资源耗尽)
我们没法预防雪崩效应的发生,只能尽可能去做好容错。服务容错的三个核心思想是:
不被外界环境影响
不被上游请求压垮
不被下游响应拖垮