SpringCloud LoadBalancer 负载均衡器

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介: SpringCloud LoadBalancer 负载均衡器

RestTemplate  整合 LoadBalancer

项目 studyuser 添加loadBalancer 依赖  , 在nacos服务注册 上去除  

netflix-ribbon 的支持

<!-- 添加loadBalancer 负载均衡器 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!-- nacos服务注册与发现 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
        </exclusion>
    </exclusions>
</dependency>

在yml 上禁用ribbon , 其实你不引用ribbon 应该也行

spring:
  application:
    name: user-server
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        namespace: 2a57e550-6295-4269-b1b4-268c46021020
    # 不适用ribbon
    loadbalancer:
      ribbon:
        enabled: false

配置loadBalanced  的bean

@Configuration
public class RestConfig {
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

在controller 层进行调用测试

@RequestMapping(value = "/findOrderByUserId/{id}")
public R findOrderByUserId(@PathVariable("id") Integer id) {
    log.info("根据userId:" + id + "查询订单信息");
    // 添加@LoadBalanced
    String url = "http://order-server/order/findOrderByUserId/" + id;
    R result = restTemplate.getForObject(url, R.class);
    return result;
}   

测试结果

2021-08-04 11:28:22.568  INFO 18236 --- [nio-8010-exec-1] c.jiuge.user.controller.UserController   : 根据userId:2查询订单信息
2021-08-04 11:28:24.341  INFO 18236 --- [nio-8010-exec-2] c.jiuge.user.controller.UserController   : 根据userId:2查询订单信息

WebClient 整合 LoadBalancer

引入依赖

<!-- 添加webflux 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>

配置webClient作为负载均衡器的client

@Bean
WebClient webClient(){
    return WebClient.builder().build();
}

在UserController 中使用

@Autowired
private WebClient webClient;
@RequestMapping(value = "/findOrderByUserId/{id}")
public Mono<R> findOrderByUserId(@PathVariable("id") Integer id) {
    log.info("根据userId:" + id + "查询订单信息");
    String url = "http://localhost:8020/order/findOrderByUserId/"+id;
    Mono<R> result = webClient.get().uri(url).retrieve().bodyToMono(R.class);
    return result;
}

测试,验证

使用WebClient 结合 WebFlux 使用

@Autowired
private ReactorLoadBalancerExchangeFilterFunction lbfilter;
@GetMapping(value = "/findOrderByUserIdWithWebFlux/{id}")
public Mono<R> findOrderByUserIdWithWebFlux(@PathVariable("id")Integer id){
    String url = "http://order-server/order/findOrderByUserId/"+id;
    // 基于WebClient + webFlux
    Mono<R> result = WebClient.builder().filter(lbfilter).build().get().uri(url).retrieve().bodyToMono(R.class);
    return result;
}

测试,验证

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
6月前
|
负载均衡 算法 Java
Spring Cloud全解析:负载均衡算法
本文介绍了负载均衡的两种方式:集中式负载均衡和进程内负载均衡,以及常见的负载均衡算法,包括轮询、随机、源地址哈希、加权轮询、加权随机和最小连接数等方法,帮助读者更好地理解和应用负载均衡技术。
177 2
|
4月前
|
缓存 负载均衡 算法
slb支持多种负载均衡算法
slb支持多种负载均衡算法
138 6
|
2月前
|
存储 弹性计算 负载均衡
活动实践 | ALB 实现跨地域负载均衡
本方案通过阿里云的云企业网(CEN)、转发路由器(TR)、专有网络(VPC)、云服务器(ECS)和应用型负载均衡(ALB),实现跨地域的应用负载均衡。它扩展了系统的吞吐能力,提升了可用性和安全性。用户可通过资源编排服务(ROS)一键部署,并进行负载测试验证。清理资源也简便快捷。
|
3月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
281 9
|
4月前
|
缓存 负载均衡 监控
slb基于DNS的负载均衡
slb基于DNS的负载均衡
261 8
|
4月前
|
运维 负载均衡 安全
slb传统硬件负载均衡器的性能瓶颈
【11月更文挑战第3天】
138 4
|
4月前
|
负载均衡 算法 Java
除了 Ribbon,Spring Cloud 中还有哪些负载均衡组件?
这些负载均衡组件各有特点,在不同的场景和需求下,可以根据项目的具体情况选择合适的负载均衡组件来实现高效、稳定的服务调用。
299 5
|
4月前
|
负载均衡 算法
SLB-Backend的负载均衡算法
【10月更文挑战第19天】
83 5
|
3月前
|
负载均衡 Java Nacos
常见的Ribbon/Spring LoadBalancer的负载均衡策略
自SpringCloud 2020版起,Ribbon被弃用,转而使用Spring Cloud LoadBalancer。Ribbon支持轮询、随机、加权响应时间和重试等负载均衡策略;而Spring Cloud LoadBalancer则提供轮询、随机及Nacos负载均衡策略,基于Reactor实现,更高效灵活。
209 0
|
6月前
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡

热门文章

最新文章