【java学习】负载均衡(LB,Load Balance)

1,概念

LB是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。负载均衡基本概念有:实服务、实服务组、虚服务、调度算法、持续性等,其常用应用场景主要是服务器负载均衡,链路负载均衡。

1)LB优点

i>性能的水平扩展

使用了更多的机器保证了机器的良性使用,不会由于某一高峰时刻导致系统cpu急剧上升

ii>避免单点故障

当集群里的1台或者多台服务器down的时候,剩余的没有down的服务器可以保证服务的继续使用

2)场景

Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

3)LB实现策略

负载均衡有好几种实现策略,常见的有:

随机 (Random)
轮询 (RoundRobin)
一致性哈希 (ConsistentHash)
哈希 (Hash)
加权(Weighted)

4)分类

i>DNS负载均衡

DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。

DNS负载均衡是一种简单而有效的方法,但是它不能区分服务器的差异,也不能反映服务器的当前运行状态。

ii>代理服务器负载均衡

使用代理服务器,可以将请求转发给内部的服务器,使用这种加速模式显然可以提升静态网页的访问速度。然而,也可以考虑这样一种技术,使用代理服务器将请求均匀转发给多台服务器,从而达到负载均衡的目的。

iii>地址转换网关负载均衡

支持负载均衡的地址转换网关,可以将一个外部IP地址映射为多个内部IP地址,对每次TCP连接请求动态使用其中一个内部地址,达到负载均衡的目的。

iv>协议内部支持负载均衡

除了以上这三种负载均衡方式之外,有的协议内部支持与负载均衡相关的功能,例如HTTP协议中的重定向能力等,HTTP运行于TCP连接的最高层。

v>NAT负载均衡NAT(Network Address Translation网络地址转换)

简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。

vi>反向代理负载均衡

普通代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

vii>混合型负载均衡

在有些大型网络,由于多个服务器群内硬件设备、各自的规模、提供的服务等的差异,可以考虑给每个服务器群采用最合适的负载均衡方式,然后又在这多个服务器群间再一次负载均衡或群集起来以一个整体向外界提供服务(即把这多个服务器群当做一个新的服务器群),从而达到最佳的性能。将这种方式称之为混合型负载均衡。此种方式有时也用于单台均衡设备的性能不能满足大量连接请求的情况下。

2,分类

1)服务端负载均衡

①硬件负载均衡

主要是服务器节点之间专门安装用于负载均衡的设备,如F5设备。

i>F5

目前所有负载均衡的厂商实现对服务器的负载均衡都是基于虚拟IP技术的,负载均衡设备对服务器进行健康检查,然后把检查结果列入设备服务器状态列表里,根据这个检查结果来决定一个请求发送到哪台服务器效果最好,应用广泛的就是F5的LTM系列.。

②软件负载均衡

通过在服务器上安装具有负载均衡的功能或模块来完成请求分发。客户段发送请求到负载均衡设备的时候,该设备按照某种算法(轮询,权重负载,按照流量负载)。

i>Nginx(通过负载均衡分配流量)

是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
所有请求首先到达 Nginx 上,再由 Nginx 根据提前配置好的转发规则,将客户端发来的请求转发到某一个 Tomcat 上去。

a.优势

占有内存少,并发能力强。

  1. 使用 Nginx 做静态资源服务器:Java 中的资源可以分为动态和静态,动态需要经过 Tomcat 解析之后,才能返回给浏览器,例如 JSP 页面、Freemarker 页面、控制器返回的 JSON 数据等,都算作动态资源,动态资源经过了 Tomcat 处理,速度必然降低。对于静态资源,例如图片、HTML、JS、CSS 等资源,这种资源可以不必经过 Tomcat 解析,当客户端请求这些资源时,之间将资源返回给客户端就行了。此时,可以使用 Nginx 搭建静态资源服务器,将静态资源直接返回给客户端。
  2. 使用 Nginx 做负载均衡服务器:Dubbo 、Spirng Cloud
b.负载均衡服务器

就是进行请求转发,降低某一个服务器的压力。负载均衡策略很多,也有很多层,对于一些大型网站基本上从 DNS 就开始负载均衡。

c.反向代理服务器

正向代理:服务端不知道访问它的客户端是谁,只知道是一个访问它的中间服务器。人->vpn->google
反向代理:客户端不知道真正访问的服务端是谁,只知道去访问一个中间服务器。人->10086->话务员,其中10086相当于一个代理。

ii>zuul(针对外部请求做负载)

功能:请求路由、负载均衡(包括请求拦截和转发)、权限验证(包括验证码校验,zuul先验证token,才可以访问后续服务,防止dos攻击)。

使用:详细查看Spring Cloud中的API网关服务Zuul

  1. 创建一个Spring boot服务
  2. 添加Eureka、Zuul依赖,其中spring-cloud-starter-zuul依赖中则包含了ribbon、hystrix、actuator等

2)客户端负载均衡

客户端负载均衡所有的客户端节点都维护着自己要访问的服务器清单,而这些服务器清单来自于服务注册中心。

Ribbon

与Eureka搭配使用。对服务的调用进行负载均衡。

3,使用

4,参考文献

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

兔兔西

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值