SpringCloud-Ribbon搭建

前言

Ribbon是做客户端的负载均衡用的(服务消费方),合理的分配消费的请求给EurekaServer端(注册中心)。所以加Ribbon的配置是在服务消费方的工程上做,最终能达到使用微服务名称就可以访问对应服务的效果。

1.服务消费方引入Ribbon相关依赖(Ribbon依赖EureKa来做负载均衡,所以需要EureKa相关)

<!--消费端配置负载均衡需要引入 eureka和 ribbon-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>

2.消费端的RestTemplate上加注解@LoadBalanced,以及开启EurekaClient和配置yml中EureKa相关

@Configuration
public class Config {

    @Bean
    @LoadBalanced/*开启Ribbon负载均衡*/
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
@SpringBootApplication
@EnableEurekaClient
public class ConsumerMain80 {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerMain80.class,args);
    }
}
server:
  port: 80
eureka:
  client:
    service-url:
      #指定需要做负载均衡的注册中心地址
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    register-with-eureka: false

3.消费方通过微服务名称去调用服务(这里需要注意的的是因为RestTemplate上加了@LoadBalanced注解,所以原来的通过ip:端口的普通调用方式就失效了)

@RequestMapping(method = RequestMethod.GET,value = "dept2")
    /*通过微服务名称(等价ip+端口)访问服务*/
    public Dept findOne2(){
        return restTemplate.getForObject("http://DEPT-PROVIDER-8001/dept",Dept.class);
    }

在这里插入图片描述

4.模拟多个相同服务(所在机器不同)注册到注册中心。这里是实现Ribbon的效果的关键步骤,容易忘记。

新建几个相同的服务提供者
在这里插入图片描述
2.修改yml文件中的instance-id.但是application-name必须保持一致
在这里插入图片描述
在这里插入图片描述
第三个工程也是做以上改动,这里就省略贴图了。

改完之后再访问注册中心管理界面可以看到一个服务有三个提供者
在这里插入图片描述

3.测试,消费者多次调用同一个接口(Ribbon负载均衡默认的是轮询)可以看到多次访问来自不同的后端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值