Spring Cloud Loadbalancer
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
- 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其它不变,重新测试即可
Spring Cloud Loadbalancer的更多相关文章
- Spring Cloud 升级之路 - 2020.0.x - 6. 使用 Spring Cloud LoadBalancer (1)
		本项目代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们使用 Spri ... 
- Spring Cloud 升级之路 - 2020.0.x - 7. 使用 Spring Cloud LoadBalancer (2)
		本项目代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们使用 Spri ... 
- SpringCloud升级之路2020.0.x版-21.Spring Cloud LoadBalancer简介
		本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们使用 Spri ... 
- SpringCloud升级之路2020.0.x版-22.Spring Cloud LoadBalancer核心源码
		本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 经过上一节的详细分 ... 
- SpringCloud升级之路2020.0.x版-23.订制Spring Cloud LoadBalancer
		本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 我们使用 Spri ... 
- 微服务生态组件之Spring Cloud LoadBalancer详解和源码分析
		Spring Cloud LoadBalancer 概述 Spring Cloud LoadBalancer目前Spring官方是放在spring-cloud-commons里,Spring Clou ... 
- SpringCloud升级之路2020.0.x版-24.测试Spring Cloud LoadBalancer
		本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 通过单元测试,我们 ... 
- Spring Cloud 使用Spring Cloud Loadbalancer访问服务地址
		获取服务地址 使用的EurekaClient : getNextServerFromEureka() 使用的DiscoveryClient: getInstances() Load Balancer ... 
- Spring Cloud 客服端负载均衡 Ribbon
		一.简介 Spring Cloud Ribbon 是一个基于Http和TCP的客服端负载均衡工具,它是基于Netflix Ribbon实现的.它不像服务注册中心.配置中心.API网关那样独立部署, ... 
随机推荐
- 修改窗体的Title
			直接上代码 /// <summary> /// 获取窗体的名称 /// </summary> /// <param name="hWnd">&l ... 
- java 类名后加变量名是什么意思?
			回答这个问题我们需要先了解两个事情: A是一个类,我们如果对他进行实例化,需要这样写: A a = new A(); 详细解释一下这个语句,首先等号左边做的事情:在JVM栈内存(stack)中定义了一 ... 
- Centos7 安装部署Kubernetes(k8s)集群
			目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ... 
- Git Rebase-提交整洁之道
			git rebase git rebase是一个非常有用的命令,但知道和用的人非常少,今天介绍一下其作用 git rebase -i 作用:常用来合并多个相同目的的提交. 交互式有下面几个命令,常用命 ... 
- LVGL 虚拟键盘使用
			一.使用例程 二.使用方式 函数的详细说明请看 lv_keyboard.h 文件 创建对象 lv_obj_t * lv_keyboard_create(lv_obj_t * parent); lv_o ... 
- 13. 第十二篇 二进制安装kubelet
			文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483842&idx=1&sn=1ef1cb06 ... 
- Linux服务器上MinIO生产部署的内核调优
			#!/bin/bash cat > sysctl.conf <<EOF # maximum number of open files/file descriptors fs.file ... 
- kvm安装windows使用virtio驱动
			Windows安装VirtIO驱动的两种方法 已经使用IDE方式来安装好系统 (1)安装完Windows后,创建一块临时的硬盘和网卡,将其驱动都设置为virtio模式添加到Windows中 (2) 添 ... 
- Elasticsearch 开发入门 - Python
			文章转载自:https://elasticstack.blog.csdn.net/article/details/111573923 前提条件 你需要在你的电脑上安装 python3 你需要安装 do ... 
- 云数据库技术|“重磅升级”后再测 TDSQL-C
			来源:云数据库技术 标题 1.摘要 前段时间,测试了国内主要云原生数据库 PolarDB.TDSQL-C.GaussDB 的性能,参考:<再测云原生数据库性能>.在上次测试结果中,由于地域 ... 
