客服端集成Ribbon
客服端pom.xml添加Ribbon依赖
springcloud-consumer-dept-8082
<!-- 添加负载均衡Ribbon依赖 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-ribbon --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-ribbon</artifactId><version>1.4.6.RELEASE</version></dependency><!-- 加入eureka依赖进行服务注册 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId><version>1.4.6.RELEASE</version></dependency>
通过yml配置文件配置ribbon和eureka设置
#服务消费者只需要配置启动端口server:port: 8082# eureka配置eureka:client:register-with-eureka: false # 不想eureka中注册自己,消费不需要注册自己service-url:# 服务注册到哪里 打开eureka服务配置以配置中的地址为准# eureka配置好之后,开启eureka功能注解defaultZone: http://eureka7001.com:7001/eureka,http://eureka7001.com:7002/eureka,http://eureka7001.com:7003/eureka
服务启动类添加启动eureka注解
springcloud-consumer-dept-8082
package org.springcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})@EnableDiscoveryClientpublic class DeptConsumer_8082 {public static void main(String[] args) {SpringApplication.run(DeptConsumer_8082.class, args);}}
RestTemplate实现负载均衡
通过RestTemplate进行服务调用,所以将它实现负载均衡就可以
package org.springcloud.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;// 相当于spring 中的 applicationContext.xml//指示一个类声明一个或多个@Bean方法,并且可以由Spring容器处理,以便在运行时为这些bean生成BeanDefinition和服务请求@Configurationpublic class ConfigBean {// 原来是<bean></bean>// 现在使用spring注解/*** RestTemplate中没有@Bean,容器中没有该类,需要new一个新类,* 所以需要手动配置一个bean,这样容器中就有改类,就可以使用@Autowired进行注入 也就是说通过@Bean 将该类交给spring进行管理及ioc*/// 配置负载均衡实现,现在是通过RestTemplate进行调用所以将它实现负载均衡就可以@Bean@LoadBalanced // ribbon基于客服端实现负载均衡public RestTemplate getRestTemplate() {return new RestTemplate();}}
通过ribbon实现远程调用时,不应该是指定的url
DeptConsumerController


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



