SpringCloud-Ribbon搭建

文章目录

    • 前言
    • 1.服务消费方引入Ribbon相关依赖(Ribbon依赖EureKa来做负载均衡,所以需要EureKa相关)
    • 2.消费端的RestTemplate上加注解@LoadBalanced,以及开启EurekaClient和配置yml中EureKa相关
    • 3.消费方通过微服务名称去调用服务(这里需要注意的的是因为RestTemplate上加了@LoadBalanced注解,所以原来的通过ip:端口的普通调用方式就失效了)
    • 4.模拟多个相同服务(所在机器不同)注册到注册中心。这里是实现Ribbon的效果的关键步骤,容易忘记。

前言

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

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


        
            org.springframework.cloud
            spring-cloud-starter-eureka
        
        
            org.springframework.cloud
            spring-cloud-starter-ribbon
        
        
            org.springframework.cloud
            spring-cloud-starter-config
        

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);
    }

SpringCloud-Ribbon搭建_第1张图片

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

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

改完之后再访问注册中心管理界面可以看到一个服务有三个提供者
SpringCloud-Ribbon搭建_第5张图片

3.测试,消费者多次调用同一个接口(Ribbon负载均衡默认的是轮询)可以看到多次访问来自不同的后端
SpringCloud-Ribbon搭建_第6张图片
SpringCloud-Ribbon搭建_第7张图片
SpringCloud-Ribbon搭建_第8张图片

你可能感兴趣的:(springCloud)