负载均衡之三种模式

模式一:D-NAT模式

原理:此模式类似NAT网络中,所以此网络内主机发到互联网上的数据包的源目的IP都是NAT路由的IP,在NAT路由上做了IP替换。

把客户端发来的数据的IP头的目的地址在负载均衡服务器上换成其中一台RS的IP,并发至对应RS来处理,RS处理完成后又交还给负载均衡服务器。负载均衡服务器再把数据包源IP改为自己的IP。

原理图

优点:能够实现负载均衡

缺点

  • 负载均衡服务器的资源成为系统瓶颈
  • 带宽有限:因为数据通信的非对称性,一般请求报文数据量较小,回复报文数据量较大,负载均衡不一定能够及时处理所以回复
  • 算力有限:IP转换需要负载均衡服务器算力较强。
  • 适用于业务流量不是特别大的情况

模式二:DR模式

原理:负载均衡服务器和RS都包含VIP,但是DR的VIP是对外裸漏的,所有网络都能够获得的,RS的VIP却是要通过修改RS的ARP通告方式将其隐藏起来。所以,所以数据都会传给DR,而DR收到数据根据调度算法,找出对应RS,并将数据包的目的MAC地址改为RS的目的MAC地址(MAC欺骗),又因为RS和DR在同一个网络,通过MAC地址就可以找到RS,这时RS就能收到此数据请求。又由于RS上也有VIP所以可以将数据包直接回复给客户端。

原理图

优点

  • 缓解了DR的资源和流量压力
  • 分发速度更快,只需要对链路层进行篡改,不需要动网络层

缺点

  • 要求DR和RS必须在一个网络中,有了物理距离的限制

模式三:TUN隧道技术

原理:将客户端发来的数据包封装成一个用RS的IP包装的数据包,发给RS,在RS收到后将包头解开,处理后直接发给客户端。

原理图

优点

  • 减少DR的流量压力
  • 能进行不同地域的分发

缺点

  • 需要RS也支持TUN协议

  • 减少DR的流量压力

  • 能进行不同地域的分发

缺点

  • 需要RS也支持TUN协议
### Java 实现负载均衡三种方式 #### 1. 使用 Nginx 进行反向代理和负载均衡 Nginx 是一种高性能 HTTP 和反向代理服务器,可以有效地分发请求到多个后端服务器。通过配置 `upstream` 块定义一组后端服务器,并设置不同的负载均衡算法。 ```nginx http { upstream backend { server 192.168.1.101:8080; server 192.168.1.102:8080; server 192.168.1.103:8080; } server { listen 80; location / { proxy_pass http://backend; } } } ``` 此配置实现了轮询调度机制,即按照请求到达的时间顺序依次将请求转发给列表中的每一台服务器[^4]。 #### 2. 利用客户端操作系统内核进行负载均衡 这种方法依赖于操作系统的网络栈特性,在客户端发起连接之前就决定了目标地址的选择逻辑。例如 Linux 系统可以通过 iptables 规则来实现基于 ClusterIP 的流量重定向至实际的服务实例上运行的应用程序监听端口处[^3]。 对于 Java 应用而言,这意味着应用程序本身不需要关心具体的路由决策过程;相反,所有的路径规划工作都交给了底层的操作系统完成。不过需要注意的是,这类方案通常只适用于特定环境下的内部部署场景。 #### 3. 配合服务注册中心和服务网格实施动态负载均衡 在微服务体系结构下,借助像 Nacos 或 Eureka 这样的服务发现工具可以让各个节点自动感知彼此的存在并维持最新的成员清单信息。当有新的服务加入集群或者现有成员发生变更时,其他参与者能够及时获知最新状态变化情况从而调整自身的访问行为模式[^5]。 结合 Spring Cloud 中的 OpenFeign 组件,则可以在编码层面更加方便地编写面向接口编程风格的服务调用代码片段: ```java @FeignClient(name = "example-service", url = "${service.url}") public interface ExampleServiceClient { @GetMapping("/api/example") String getExample(); } ``` 上述声明会自动生成一个 RESTful 客户端用于远程方法调用,而无需开发者手动管理HTTP 请求细节部分。与此同时,内置的支持也使得整个流程天然具备了良好的容错能力和高可用保障措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值