客服端集成Ribbon

客服端pom.xml添加Ribbon依赖

springcloud-consumer-dept-8082

  1. <!-- 添加负载均衡Ribbon依赖 -->
  2. <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon -->
  3. <dependency>
  4. <groupId>org.springframework.cloud</groupId>
  5. <artifactId>spring-cloud-starter-ribbon</artifactId>
  6. <version>1.4.6.RELEASE</version>
  7. </dependency>
  8. <!-- 加入eureka依赖进行服务注册 -->
  9. <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
  10. <dependency>
  11. <groupId>org.springframework.cloud</groupId>
  12. <artifactId>spring-cloud-starter-eureka</artifactId>
  13. <version>1.4.6.RELEASE</version>
  14. </dependency>

通过yml配置文件配置ribbon和eureka设置

  1. #服务消费者只需要配置启动端口
  2. server:
  3. port: 8082
  4. # eureka配置
  5. eureka:
  6. client:
  7. register-with-eureka: false # 不想eureka中注册自己,消费不需要注册自己
  8. service-url:
  9. # 服务注册到哪里 打开eureka服务配置以配置中的地址为准
  10. # eureka配置好之后,开启eureka功能注解
  11. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7001.com:7002/eureka,http://eureka7001.com:7003/eureka

服务启动类添加启动eureka注解

springcloud-consumer-dept-8082

  1. package org.springcloud;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
  6. import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
  7. @SpringBootApplication
  8. @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
  9. @EnableDiscoveryClient
  10. public class DeptConsumer_8082 {
  11. public static void main(String[] args) {
  12. SpringApplication.run(DeptConsumer_8082.class, args);
  13. }
  14. }

RestTemplate实现负载均衡

通过RestTemplate进行服务调用,所以将它实现负载均衡就可以

  1. package org.springcloud.config;
  2. import org.springframework.cloud.client.loadbalancer.LoadBalanced;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.web.client.RestTemplate;
  6. // 相当于spring 中的 applicationContext.xml
  7. //指示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理,以便在运行时为这些bean生成BeanDefinition和服务请求
  8. @Configuration
  9. public class ConfigBean {
  10. // 原来是<bean></bean>
  11. // 现在使用spring注解
  12. /**
  13. * RestTemplate中没有@Bean,容器中没有该类,需要new一个新类,
  14. * 所以需要手动配置一个bean,这样容器中就有改类,就可以使用@Autowired进行注入 也就是说通过@Bean 将该类交给spring进行管理及ioc
  15. */
  16. // 配置负载均衡实现,现在是通过RestTemplate进行调用所以将它实现负载均衡就可以
  17. @Bean
  18. @LoadBalanced // ribbon基于客服端实现负载均衡
  19. public RestTemplate getRestTemplate() {
  20. return new RestTemplate();
  21. }
  22. }

通过ribbon实现远程调用时,不应该是指定的url

DeptConsumerController
image.png
image.png
image.png

启动eureka集群,启动服务提供者,启动服务调用者,通过调用者访问

image.png
image.png
image.png