springcloud系列9——Ribbon脱离Eureka使用

本文介绍如何在Spring Cloud项目中禁用Eureka服务发现组件,并手动配置Ribbon客户端的服务列表,实现负载均衡策略。通过在application.yml文件中设置ribbon.eureka.enabled为false,并指定服务列表和负载均衡策略,可以绕过Eureka服务注册中心,直接配置服务实例。
摘要由CSDN通过智能技术生成

前言

Eureka对远程服务发现提供了抽象,你不需要在客户端硬编码URL。但是,如果你不想在Ribbon中使用Eureka,也是非常简单的。
这里仍然以前面章节中的microservice-springcloud-movie进行测试。

在Ribbon中禁用Eureka

在application.yml中增加下面的配置:

ribbon:
  eureka:
   enabled: false

声明Ribbon客户端提供的服务列表

在application.yml中增加:

microservice-springcloud-user:
  ribbon:
    listOfServers: localhost:7902,localhost:7903
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
microservice-springcloud-user2:
  ribbon:
    listOfServers: localhost:7904,localhost:7905

在上面Ribbon客户端中定义的服务列表包括了microservice-springcloud-user和microservice-springcloud-user2两个服务,其中microservice-springcloud-user服务随机访问,microservice-springcloud-user2不配置则使用默认的轮询策略。

测试

  • 1.启动Eureka Server;
  • 2.启动microservice-springcloud-user的2个服务;
  • 3.启动microservice-springcloud-user2的2个服务;
  • 4.启动microservice-springcloud-movie。

测试1

浏览器中输入http://localhost:7901/test并刷新多次,查看控制台

可以看到microservice-springcloud-user随机访问的,microservice-springcloud-user2则是轮询。

测试2

如果在application.yml中不配置microservice-springcloud-user2,则访问http://localhost:7901/test会报错,但使用了eureka则不会。

直接使用Ribbon API

public class MyClass {
    @Autowired
    private LoadBalancerClient loadBalancer;
    public void doStuff() {
        ServiceInstance instance = loadBalancer.choose("stores");
        URI storesUri = URI.create(String.format("http://%s:%s", instance.getHost(), instance.getPort()));
        // ... do something with the URI
    }
}

参考Spring Cloud官方文档第16.6到16.8章节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值