上次咱们说了一下 微服务的容错解决,是用的 断路器
这一次咱们来一起看看 微服务的负载平衡 是如何做的
负载平衡
负载平衡是什么呢?
他可能将大量的申请,依据负载平衡算法 ,将不同的申请散发到多台服务器上进行解决,使得所有的服务器负载 都维持在一个高效稳固的状态 ,进而能够进步零碎的吞吐量,和 保证系统的可用性
例如咱们的拜访服务器是这样的
用户 – 网络 – 服务器 – 数据库
那么,如果这一个服务器的申请数很高,超过了服务器能能解决的极限,本身无奈及时响应的时候,则会出现异常,甚至无奈连贯,用户就无奈失去及时的冀望后果
那么咱们至多能够冀望服务器部署是这个样子的
就是在服务器的后面加一个 负载均衡器,这样内部申请的压力就能够又 多个服务器来分担,并且申请给到任何一个服务器,失去的响应都是一样的
那么咱们一起来看看负载平衡的类型都有哪些
负载平衡的类型
负载平衡的类型有 2 类:
- 软件负载平衡
个别是独立的负载平衡软件来实现内部申请的散发,个别这样的软件配置简略,应用老本很低,并且可能满足根本的负载平衡要求,例如 haproxy
那么这就要对重点关注在 软件的品质 和该软件部署在所属 服务器的性能 下面,若软件品质不行,或者部署的服务器性能不行,都会成为零碎吞吐量的瓶颈
- 硬件负载平衡
硬件的负载平衡,必然是依赖非凡负载平衡设施来做的,部署老本绝对较高,可是对于软件的负载平衡,硬件的做法可能满足更多种场景的应用
例如常见的例子,DNS 负载平衡 和 反向代理负载平衡
DNS 负载平衡
例如在 DNS 服务器中,咱们会给一个同一个名称配置多个 IP,那么不同的 DNS 申请就会解析到不同的 IP 地址,进而这就能够达到 不同申请去拜访不同的服务器的目标,这就是咱们的 DNS 负载平衡
反向代理负载平衡
咱们平时我的项目中应用到的 服务网关就是反向代理负载平衡
作为客户端,你是不晓得你拜访的这个地址是不是真正的服务器的地址,你拜访了网关地址之后,网关会依据路由将你的申请发送给对应服务器去解决,最终返回后果,例如这样
负载平衡算法
如何保障可能让每一个服务器的都可能处于高效稳固的运行呢,这就须要优良的负载平衡算法出马了
负载平衡算法定义了如何将内部申请扩散到各个服务器实例中,它可能无效的进步吞吐量
个别会有这几种算法:
- 随机法
随机从服务器集群中任选一台。这种办法的确 很简略,保障了申请的分散性 ,可是这种办法 无奈做到以后的申请调配是否正当 以及不同服务器本身的负载能力
- 轮询或者加权轮询法
就是轮流的将申请调配给集群中每一个服务器,加权的话,就是依照比例轮询的形式将申请调配给集群中的每一个服务器,如:
轮询 3 个服务器
加权轮询 3 个服务器,若 A 占比 20%,B 占比 50 %,C 占比 30%
- Hash 法或者一致性 Hash 的形式
就是应用 hash 算法将申请扩散到集群中每一个服务器下面
一致性 hash 指的是,在将申请扩散到每个服务器时,若其中一个服务器挂掉了,这个算法可能将申请平摊到剩下的服务器下面,这样能够防止申请激烈的变动
- 最小连接数办法
就是将申请调配到连接数起码的服务器下面,然而负载均衡器须要如何晓得呢?
因而应用这种算法,就须要负载均衡器与服务器之前产生数据交互,这样它在能够理解集群中服务器的连接数状况
明天就到这里,学习所得,若有偏差,还请斧正
欢送点赞,关注,珍藏
敌人们,你的反对和激励,是我保持分享,提高质量的能源
好了,本次就到这里
技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。
我是 阿兵云原生,欢送点赞关注珍藏,下次见~