我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Spring Cloud中怎么使用Ribbon

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Spring Cloud中怎么使用Ribbon

今天小编给大家分享一下Spring Cloud中怎么使用Ribbon的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

1. 什么是 Ribbon?

Spring Cloud Ribbon 是一套实现客户端负载均衡的工具。注意是客户端,当然也有服务端的负载均衡工具,我们后面再介绍。可以认为 Ribbon 就是一个负载均衡器(Load Balancer,简称LB,即:low比~~)。负载均衡就是将用户的请求平摊的分配到多个服务上,从而达到系统的高可用。

简单来说,Ribbon 的主要功能是提供客户端的软件负载均衡算法,将 Netflix 的中间层服务连接在一起。Ribbon 客户端组件给我们提供了一套很完善的配置项,比如可以配置连接超时、重试等等。

再说的通俗一点,就是可以在配置文件中列出 LB 后面所有的机器(即服务),Ribbon 会自动根据某种规则(如轮询、随机等等)去连接这些机器(即服务),我们也可以自定义一些负载均衡算法。

再简单点,Ribbon 就是一个类库,集成在服务消费方,消费方从服务注册中心获知有哪些地址(即服务)可用,然后消费方通过 Ribbon 从这些地址当中选择一个合适的服务器来消费服务。

2. Ribbon 的使用

我们在前面文章中,将订单服务注册到 Eureka,然后消费方可以通过 http 请求去获取订单的信息,但是这是最原始的 http 调用,没有任何 Ribbon 的东西在里面,接下来我们要在消费方植入 Ribbon。

2.1 导入 Ribbon 依赖

我们使用的Spring Cloud 版本是 Finchley,该版本需要导入的依赖如下:

<!--eureka Client-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--ribbon负载均衡依赖-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

可以看到,Eureka Client 的依赖也需要导入,因为服务注册到了 Eureka,Ribbon 也需要和 Eureka 整合,所以在消费方也导入了 Eureka 依赖。

2.2 配置 application.yml

server:
 port: 9001

eureka:
 client:
   register-with-eureka: false
   service-url:
     defaultZone: http://eureka01:7001/eureka/,http://eureka02:7002/eureka/,http://eureka03:7003/eureka/

由前面的内容(Spring Cloud:使用Eureka集群搭建高可用服务注册中心)可知,我们搭建了一个 Eureka 集群,那么就用这个集群,这个消费方我们设置不注册到该集群中。

2.3 向 http 中植入 Ribbon

这是什么意思呢?之前的 消费方是使用 RestTemplate 来发送 http 请求,调用订单服务的,但是没有负载均衡,所以现在我们要让这个 http 调用自带负载均衡。

即修改下 RestTemplate 配置:


@Configuration
public class RestTemplateConfig {

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

在方法上添加一个 @LoadBalanced 注解即可开启 Ribbon 负载均衡。这样就可以通过微服务的名字从 Eureka 中找到对应的服务并访问了。

友情提示:别忘了在主启动类上添加 @EnableEurekaClient,因为这个消费方也是一个 Eureka Client,刚刚我们已经导入了 Eureka Client 的依赖了。

2.4 将ip改成服务名称

刚刚提到了,开启 Ribbon 负载均衡后,就可以通过微服务的名字从 Eureka 中找到对应的服务。我们先来看下原来是怎么实现的。


@RestController
@RequestMapping("/consumer/order")
public class OrderConsumerController {

   
//    private static final String ORDER_PROVIDER_URL_PREFIX = "http://localhost:8001";
   private static final String ORDER_PROVIDER_URL_PREFIX = "http://MICROSERVICE-ORDER";

   @Resource
   private RestTemplate restTemplate;

   @GetMapping("/get/{id}")
   public TOrder getOrder(@PathVariable Long id) {

       return restTemplate.getForObject(ORDER_PROVIDER_URL_PREFIX + "/provider/order/get/" + id, TOrder.class);
   }
}

可以看出,注释掉的那部分,是原来的访问方式,订单提供服务是8001端口,现在我们将ip+端口号这种访问方式,改成微服务名称,这个名称就是 Eureka 管理界面显示的注册进去的名称,也即服务提供方的application.yml配置文件中配置的服务名称:

spring:
 application:
   name: microservice-order # 对外暴露的服务名称

在前面文章中已经说了,不再赘述。

2.5 启动服务,测试

还是和前面集群文章中提到的一样,分别启动 eureka7001、eureka7002、eureka7003以及订单服务8001,可以看到订单服务已经注册到 Eureka 集群。

然后启动消费方服务,然后在浏览器输入 http://localhost:9001/consumer/order/get/1 即可查询到对应的订单服务:

{"id":1,"name":"跟武哥一起学 Spring Boot","price":39.99,"dbSource":"microservice01"}

说明,我们通过订单的服务名称即可获取订单信息了。

以上就是“Spring Cloud中怎么使用Ribbon”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Spring Cloud中怎么使用Ribbon

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Spring Cloud中怎么使用Ribbon

今天小编给大家分享一下Spring Cloud中怎么使用Ribbon的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 什么
2023-06-04

Spring Cloud中Feign怎么使用

本篇内容主要讲解“Spring Cloud中Feign怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Cloud中Feign怎么使用”吧!创建公共接口首先我们来创建一个普通的
2023-06-19

spring cloud集成ribbon负载均衡怎么实现

这篇文章主要介绍“spring cloud集成ribbon负载均衡怎么实现”,在日常操作中,相信很多人在spring cloud集成ribbon负载均衡怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”s
2023-06-21

Spring Cloud中如何使用Ribbon实现客户端的负载均衡

今天小编给大家分享一下Spring Cloud中如何使用Ribbon实现客户端的负载均衡的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了
2023-06-04

Spring Cloud Ribbon 负载均衡使用策略示例详解

Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端负载均衡工具,Ribbon客户端组件提供了一系列的完善的配置,如超时,重试等,这篇文章主要介绍了Spring Cloud Ribbon 负载均衡使用策略示例详解,需要的朋友可以参考下
2023-03-13

Spring Cloud Stream怎么使用

这篇文章主要讲解了“Spring Cloud Stream怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Cloud Stream怎么使用”吧!Spring Cloud
2023-06-19

深入浅析spring cloud中的Ribbon负载均衡

这期内容当中小编将会给大家带来有关深入浅析spring cloud中的Ribbon负载均衡,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、负载均衡负载均衡(Load Balance): 建立在现有网络结
2023-05-31

Spring Cloud负载均衡组件Ribbon原理是什么

这篇文章主要介绍“Spring Cloud负载均衡组件Ribbon原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Spring Cloud负载均衡组件Ribbon原理是什么”文章能帮助大家解
2023-06-30

Spring Cloud中如果实现服务消费者RestTemplate+Ribbon

小编给大家分享一下Spring Cloud中如果实现服务消费者RestTemplate+Ribbon,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在上一篇文章,讲
2023-06-19

Spring Cloud中如何自定义Ribbon负载均衡策略

小编给大家分享一下Spring Cloud中如何自定义Ribbon负载均衡策略,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 主启动类处理还是使用上一节的客户
2023-06-04

Spring Cloud中怎么使用 Feign上传文件

Spring Cloud中怎么使用 Feign上传文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。加依赖 io.github.ope
2023-05-30

Spring Cloud中的断路器Hystrix怎么使用

本篇内容介绍了“Spring Cloud中的断路器Hystrix怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先我们分别启动服务注
2023-06-19

Spring Cloud中Feign怎么自定义配置与使用

这篇文章主要介绍了Spring Cloud中Feign怎么自定义配置与使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring Cloud中Feign怎么自定义配置与使用文章都会有所收获,下面我们一起来看
2023-07-02

ribbon+rest怎么使用

本篇内容主要讲解“ribbon+rest怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ribbon+rest怎么使用”吧!在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯
2023-06-05

Spring Cloud中怎么配置Feign

这期内容当中小编将会给大家带来有关Spring Cloud中怎么配置Feign,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Ribbon配置ribbon的配置其实非常简单,直接在application.p
2023-06-19

Spring Cloud Stream如何使用

本篇内容介绍了“Spring Cloud Stream如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Spring Cloud Str
2023-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录