写点什么

一种典型的负载均衡解决方案

作者:极客罗杰
  • 2023-12-05
    上海
  • 本文字数:1080 字

    阅读完需:约 4 分钟

一种典型的负载均衡解决方案

本文将介绍一种典型的负载均衡解决方案,从硬件到软件涉及中间件,数据库 RDBMS,同时会介绍常见的负载均衡算法及优缺点,对负载均衡感兴趣的同学,可以一读。

负载均衡架构图

​ 首先来看一下负载均衡的架构图,它是一个线性的架构,如下图所示,从标橙色的硬件 F5 到数据库 RAC:


F5 硬件

​ 如下图是一台 F5 硬件负载均衡装备:


它具有诸多特点:

1 基于网络的负载均衡硬件

2 利用 Big-IP 技术对 web 应用负载均衡

3 提供流量管理


另外,F5 有虚拟 ip 功能,能将生产环境虚拟 ip 和负载地址映射,实际生产环境可能映射多组负载均衡地址,列如:

第一组: 用途:ng 转发,web 页面负载

第二组: 用途:注册中心地址,所有服务内部注册

第三组: 用途:入口接口负载均衡

第四组: 用途:redis 的 HA

nginx

Nginx 是 HTTP 和反向代理服务器,邮件服务器,通用 TCP/UDP 代理服务器,它有如下特点:



nginx 能够通过配置 upstream 反向代理实现负载均衡,如下二台服务器负载例子:

upstream client { server 192.168.17.156:8886; server 192.168.17.157:8886; }


这里顺便介绍一下 nginx 负载均衡算法:


1 round-robin

ng 默认负载均衡算法,ng 依次选择一个 server。


2 weighted round-robin

配置 server 权重,按照权值比例,选择一个 server。


3 ip hash

特定 ip 地址映射某一台 upstream server,将 ip 地址作为 hash key,计算得到绑定的服务器。


4 least connections

把请求动态分配给当前链接数最小的服务器。


5 random

把请求随机地分配给一台服务器


通过对比这些负载算法优劣势,才能根据使用场景,找到合适的算法,下表格将负载均衡算法进行对比:


Spring Cloud ribbon/feign

ribbon 本地负载均衡是 Spring Cloud 组件提供的一种负载均衡解决方案,它的优点诸多,例如:


1 是 Spring cloud Netflix 客户端负载均衡组件

2 支持使用注解

3 可与 feign 结合使用

4 支持多种负载均衡器,有轮询,随机,默认轮询方式


能够简单地将 ribbon 和 nginx 对比,从而更好理解其原理和应用场景:

此外,从微服务角度,调用使用 Feign 调用微服务,会自动触发 Ribbon;另一种方式是通过 RestTemplate 调用 HTTP 接口。

Database RAC

​ 数据库 RAC 集群也是常见的数据层面的负载均衡,以 Oracle RAC 为例,它有以下特点,下图是它的原理图:

第一 RAC(Real Application Clusters)由多台互连服务器组成;

第二 oracle 数据库和实例间一对多的关系;

第三由 Oracle Clusterware 管理;

第四 RAC 提供更大吞吐量和更高的可扩展性。



oracle 客户端通过简单配置 load_balance=on,address_list=address......就能实现客户端负载均衡。

总结

本文介绍了一种经典的负载均衡解决方案,从软件涉及中间件,数据库 RDBMS 至底向上到硬件,在实践中也能得以应用。

发布于: 刚刚阅读数: 5
用户头像

极客罗杰

关注

还未添加个人签名 2021-04-11 加入

还未添加个人简介

评论

发布
暂无评论
一种典型的负载均衡解决方案_极客罗杰_InfoQ写作社区