IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Cloud Ribbon使用 -> 正文阅读

[Java知识库]Spring Cloud Ribbon使用

????????Spring Cloud Ribbon提供客户端负载均衡,可以自动根据内置的负载均衡算法去调用服务实例,默认采用轮询的负载均衡算法。也可以自定义负载均衡算法。Spring Cloud Ribbon的基于Netflix Ribbon组件上进一步封装和集成。Ribbon常用原理图如下:

?引入ribbon

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

Ribbon常用的两种调用方式

1. 使用@LoadBalanced注解

????????

首先启动两个PROVIDER服务实例,端口分别是8081和8082,作为服务提供者并将自己注册到注册中心

8081端口服务实例中的测试Controller

@RestController
@RequestMapping("/api")
public class TestController {

    @GetMapping("/test")
    public String test() {
        return "Hello Eureka, I am provider1st";
    }
}

?8082端口服务实例中的测试Controller

@RestController
@RequestMapping("/api")
public class TestController {

    @GetMapping("/test")
    public String test() {
        return "Hello Eureka, I am provider2st";
    }
}

服务消费者使用Ribbon进行负载均衡调用,服务端口为5000

首先指定RestTemplate Bean并使用@LoadBalanced注解注释

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

负载均衡调用provider服务的/api/test接口

@RestController
public class ConsumerController {
    @Autowired
    RestTemplate  restTemplate;

    @GetMapping(value = "/ribbon-consumer")
    public String helloConsumer(){
        return restTemplate.getForEntity("http://provider/api/test",String.class).getBody();
    }
}

浏览器调用接口,多次刷新调用会轮询得到以下结果

2. 使用@RibbonClient注解

@RibbonClient注解源码如下:

public @interface RibbonClient {
    //同下面的 name 属性
    String value() default "";
    //指定服务名称
    String name() default "";
	//指定负载均衡配置类
    Class<?>[] configuration() default {};
}

?首先在配置类中指定负载均衡的策略,也可以根据配置指定

@Configuration
public class RibbonRuleConfig {

        @Bean
        @ConditionalOnMissingBean
        public IRule springHealthRule() {
            return new RandomRule();
        }
}

?在启动类中添加@RibbonClient注解

@RibbonClient(name = "provider", configuration = RibbonRuleConfig.class)

在启动类中指定RestTemplate类

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

服务提供和服务调用者同方法一

浏览器调用接口,多次刷新调用不再是轮询而是随机调用。

Ribbon实现原理可参考:https://skaygo.blog.csdn.net/article/details/120626029

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:43:18  更:2021-10-07 13:44:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:18:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码