1、ribbon 是什么?用来干嘛?
ribbon 是一个负载均衡组件,当我们的服务有是集群部署的时候,我们可以使用ribbon来进行负载均衡。
2、不存在服务注册与发现中心场景使用spring-cloud-netflix-ribbon
项目结构:
方式1: 使用LoadBalancerClient 来进行服务选者,服务调用链路user-service --------------------> order-service
1、user-service项目maven依赖引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
需要依赖spring-cloud-starter-netflix-ribbon jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>com.wzy</groupId>
<artifactId>order-api</artifactId>
<version>${project.version}</version>
</dependency>
2、user-service 微服务启动类:
@SpringBootApplication
public class UserServiceRibbonApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceRibbonApplication.class, args);
}
}
3、user-service中演示的Controller:
@RestController
public class UserLoabBalancerClientGetServerInstanceController {
@Autowired
private RestTemplate restTemplate;
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
spring-cloud-starter-netflix-ribbon 会自动装配一个LoadBalancerClient在上下文中,类型是RibbonLoadBalancerClient
@Autowired
private LoadBalancerClient loadBalancerClient;
@GetMapping("userGetOrderById")
public OrderDto userGetOrderById(@RequestParam("orderId") String orderId){
/*
使用负载均衡客户端进行服务选择,按照服务的id进行选择,服务的列表我们使用配置的方式:
order-service.ribbon.listOfServers=http://localhost:7071,http://localhost:7072
在后续集成服务注册与发现的时候就不需要这样配置了
*/
ServiceInstance serviceInstance = loadBalancerClient.choose("order-service");
System.out.println(serviceInstance.getHost(