服务的调用-Ribbon + RestTemplate(独立的组件)
1、什么是Ribbon?
Ribbon是一个客户端的负载均衡器,用来进行SpringCloud间的微服务负载均衡调用
2、什么是客户端负载均衡?服务端负载均衡?
负载均衡的方式:
1)客户端负载均衡
2)服务端负载均衡
2.1)网络4层负载
2.2)网络7层负载 - nginx
3、Ribbon+RestTemplate的使用
1)再创建一个微服务(班级服务),用于后续的服务间调用
2)在**主动的调用方(学生服务 -> 班级服务,学生服务就是主动调用方)**添加依赖
<!-- 添加ribbon依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
3)启动类中声明RestTemplate组件
@Bean
@LoadBalanced//负载均衡
public RestTemplate getRest(){
return new RestTemplate();
}
4)编写服务调用代码
//根据班级id,调用班级服务,查询班级信息
//关键 调用地址 MICRO-CLASSES 必须写一个微服务的名称
String classInfo = restTemplate
.getForObject("http://MICRO-CLASSES/cls/queryClsName?cid=1",String.class);
4、Ribbon的负载均衡
思考:Eureka如何知道两个服务是集群的关系?还是两个独立的微服务?
微服务名称相同,那么就是集群关系
spring: application: name: micro-classes
4.1 Ribbon的负载均衡策略
/**
* 切换负载均衡策略
* @return
*/
@Bean
public IRule getRule(){
return new RandomRule();
}
在这之前要先创建classes微服务