千家信息网

Spring Cloud中怎么使用Ribbon

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,今天小编给大家分享一下Spring Cloud中怎么使用Ribbon的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收
千家信息网最后更新 2025年11月07日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,该版本需要导入的依赖如下:



org.springframework.cloud
spring-cloud-starter-netflix-eureka-client



org.springframework.cloud
spring-cloud-starter-netflix-ribbon

可以看到,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 配置:

/**
* 配置RestTemplate
* @author shengwu ni
*/
@Configuration
public class RestTemplateConfig {

/**
* '@LoadBalanced'注解表示使用Ribbon实现客户端负载均衡
* @return RestTemplate
*/
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}

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

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

2.4 将ip改成服务名称

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

/**
* 订单消费服务
* @author shengwu ni
*/
@RestController
@RequestMapping("/consumer/order")
public class OrderConsumerController {

/**
* 订单服务提供者模块的 url 前缀
*/
// 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"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

服务 消费 均衡 订单 配置 名称 就是 集群 客户 客户端 知识 篇文章 内容 可以通过 文章 信息 名字 地址 工具 文件 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数学分析在软件开发中的应用 河南软件开发公司有哪些 过多定时任务云服务器连接不上 新天龙八部服务器爆满 湖南长沙互联网科技学院 网络安全审计自检自查报告 快速的mysql数据库优化 电力网络安全通知怎么写 云南超频服务器厂家报价 微软数据库怎么下载 丽水电脑软件开发需要学什么 英雄联盟服务器是属于什么 成都软件开发培训费用多少 什么是计算机网络安全学校 鼓楼区提供软件开发专业服务 中国工商银行软件开发中心岗位 软件开发安全模型 首选 备用dns服务器 湖南pdu服务器电源价格表 工业移动网络技术 数据库分离后日志文件的影响 北京浴客互联网科技有限公司 渝北区软件开发电话 网络安全工作打算及措施 黑龙江特种网络技术服务工程 网络安全定级备案模板 数据库应用技术阎红艳 数据库中如何删除备注 vb建立数据库一般用什么 重庆木瓜网络技术有限公司
0