Ribbon是Netflix的组件之一,负责注册中心的负载均衡,有助于控制HTTP和TCP客户端行为。Spring Cloud Netflix Ribbon一般配合Ribbon进行使用,利用在Eureka中读取的服务信息,在调用服务节点时合理进行负载!
Spring Cloud Ribbon
是一个基于HTTP和TCP的客户端负载均衡工具 ʕ•ᴥ•ʔ
实操
创建两个provider,并且编写两个一样的接口,再创建一个consumer去访问该接口进行轮询调用
项目结构:
provider-01与provider-02都是创建Client
模块,并且创建controller
编写接口
@RestController
public class ProviderController {
@GetMapping("pengke")
public String pengke(){
return "我是碰磕接口2222";
}
}
@RestController
public class ProviderController {
@GetMapping("pengke")
public String pengke(){
return "我是碰磕接口1111";
}
}
consumer02模块则是使用ribbon
进行轮询调用接口
依赖:
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
2.2.9.RELEASE
Application
启动类中编写一个@Bean
减少多次new该对象
关键注解:
@LoadBalanced
/**
*编写防止多次new
* loadBalanced 会呗ribbon来操作
*/
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
controller
中编写接口用于访问另外两个模块的接口
由于在启动类中编写了
RestTemplate
所以通过@Autowired
注入即可通过
ribbon
实现了通过访问http://服务名/请求地址
接口实现轮询访问另外两个模块的接口!
@Autowired
private RestTemplate restTemplate;
@GetMapping("testRibbon")
public String testRibbon(String serviceName){
String result=restTemplate.getForObject("http://"+serviceName+"/pengke",String.class);
return result;
}
这就是ribbon
的应用~下一篇学习Feign(它集成了ribbon)