首页 > 其他分享 >Spring Cloud Loadbalancer

Spring Cloud Loadbalancer

时间:2022-11-12 23:01:23浏览次数:37  
标签:name Spring springframework Loadbalancer Cloud import org class cloud

Spring Cloud Loadbalancer---客户端负载均衡器

springcloud 2020.0.1 版本之后 删除了eureka中的ribbon,替代ribbon的是spring cloud自带的LoadBalancer,但公司开发中并没有那么快更新,大部分项目还是在用Ribbon,但未来可能会改用Spring Cloud Loadbalancer。我们一起来看一下Spring Cloud Loadbalancer的使用

一Spring Cloud Loadbalancer和RestTemplate相结合实现负载均衡

整体使用方法同Ribbon

1.1 导入jar包

<dependency>
<!-- Spring Cloud loadbalancer 负载均衡-->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

1.2 屏蔽ribbon

spring
cloud:
loadbalancer:
ribbon:
enabled: false
  1. 3 添加注解(同Ribbon)
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}

1.4 调用(同Ribbon)

@RestController
public class UsersController {

//服务提供者名称
private static final String REMOTE_URL = "http://SEARCH";

@Autowired
private RestTemplate restTemplate;

@GetMapping("goods")
public ResponseResult searchGoods()
{
return restTemplate.getForObject(REMOTE_URL+"/goods",ResponseResult.class);
}
}

二 修改负载均衡方式

2.1 创建一个配置类

package com.test.eureka.config;


import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;

//这里 不需要 @configuration注解 重要的事情说三遍
public class CustomLoadBalancerConfiguration {

@Bean
ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);

//这里是返回随机负载均衡方式
return new RandomLoadBalancer(loadBalancerClientFactory
.getLazyProvider(name, ServiceInstanceListSupplier.class),
name);
}
}

2.2 添加注解

在@LoadBalanced注解所在类上添加注解

@LoadBalancerClient(name = "SEARCH",configuration = CustomLoadBalancerConfiguration.class)
@Configuration
//注意这里的name属性 需要和eureka页面中的服务提供者名字一直 此时页面中是大写
@LoadBalancerClient(name = "SEARCH",configuration = CustomLoadBalancerConfiguration.class)
public class RemoteClientConfiguration {

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

}

2.3其它不变,重新测试即可

标签:name,Spring,springframework,Loadbalancer,Cloud,import,org,class,cloud
From: https://blog.51cto.com/u_15707781/5846832

相关文章

  • Spring Cloud Loadbalancer
    SpringCloudLoadbalancer---客户端负载均衡器springcloud2020.0.1版本之后删除了eureka中的ribbon,替代ribbon的是springcloud自带的LoadBalancer,但公司开发中并没有......
  • Spring 事务(测试)--在这个笔记中记录的是没有添加事务,数据库返回的效果。
    第5章Spring事务(测试)--在这个笔记中记录的是没有添加事务,数据库返回的效果。1.首先搞两张表,商品表和订单表举例:购买商品trans_sale项目本例要实现购买商品,模拟用......
  • SpringMVC-解析@ResponseBody
    ServletInvocableHandlerMethod.invokeAndHandle处理完request得到结果后调用returnValueHandlers.handleReturnValue处理返回值。HandlerMethodReturnValueHandlerCompos......
  • spring底层核心概念解析
    1.BeanDefinition包含bean的一些基本元信息,如bean的类型,作用域,初始化方法...等等。申明式的定义,如@Bean,等等<beanclass="com.test.service.UserService"id="userSe......
  • 【SpringBoot】分布式RPC+Zokeeper+SpringBoot练手
    RPCRPC两个核心模块:通讯,序列化序列化:数据传输需要转换DubboApacheDubbo|ˈdʌbəʊ|是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力:面向接口的远程......
  • # SpringBoot 整合 Swagger
    SpringBoot整合Swagger是什么不介绍,这个东西很简单,主要看点底层源码即可,注意:这个东西很容易造成版本错乱的部分引入狂神说的代码段,因为我有些东西懒得写引入<sp......
  • Spring set注入-级联属性赋值
    举例说明:有一个Student类,一个Clazz类。StudentpublicclassStudent{privateStringname;//学生属于哪个班级privateClazzclazz;//使......
  • SAP Commerce Cloud 里的 User 模型和 Restriction 的关系
    SAPHybris的MENUitem可以被分配一个叫做UserGrouprestriction的属性。如果一个用户属于一个特殊的用户组,那么菜单项(menuitem)应该是可见的。现在的问题是,这个......
  • 设计模式学习(二十四):Spring 中使用到的设计模式
    设计模式学习(二十四):Spring中使用到的设计模式作者:Grey原文地址:博客园:设计模式学习(二十四):Spring中使用到的设计模式CSDN:设计模式学习(二十四):Spring中使用到的设计模式......
  • 【SpringBoot】必须掌握的45个注解
    1、SpringBoot/spring@SpringBootApplication:包含@Configuration、@EnableAutoConfiguration、@ComponentScan通常用在主类上;@Repository:用于标注数据访问组件,即DAO组件......