**
Ribbon组件: 实现客户端负载均衡。
**
配置文件application.properties
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/
server.port=9003
spring.application.name=service-ribbon
启动类代码如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableDiscoveryClient
public class RibbonClientStarter {
public static void main(String[] args) {
SpringApplication.run(RibbonClientStarter.class, args);
}
//ribbon组件配合一个对象RestTemplate
//利用restTemplate调用服务
@Bean //其他代码可以注入使用
@LoadBalanced //利用这个对象访问服务,底层的负载均衡需要指定
//这个注解,轮训
public RestTemplate getResouce(){
return new RestTemplate();
}
}
控制层示例:
@Controller
public class HiController {
@Autowired
private RestTemplate template;
@RequestMapping("hi")
@ResponseBody
public String hello(String name){
//利用template对象访问服务
//url是服务连接地址
//http://service-hi对应了后台服务提供者的工程
///hi?name=传入的参数
//相当于用服务名称代替了工程访问的域名+端口
String hi = template.getForObject("http://service-hi/hi?name="+name, String.class);
return hi;
}
}
pom.xml核心配置
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Eureka相关依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!--Ribbon相关依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>