文章目录
1. Ribbon负载策略
负载均衡: 将用户的请求平摊的分配到多个相同功能的服务上,从而达到服务器的高效利用
2. 使用
步骤1:添加依赖
<dependencies>
<!-- Eureka_Client包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- 这个就是Ribbon包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--添加springboot_mybatis依赖-->
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
</dependencies>
步骤2:启动类中添加注解@LoadBalanced、以及注册RestTemplate对象、以及负载的策略给容器管理、
@SpringBootApplication
@EnableEurekaClient
public class OrderServiceApplication {
@Bean
@LoadBalanced //开启负载功能
public RestTemplate setRestTemplate() {
return new RestTemplate();
}
// Ribbon的负载策略配置
@Bean
public IRule getIRule() {
return new RandomRule();
}
public static void main(String[] args) {
SpringApplication.run(OrderServiceApplication.class, args);
}
}
步骤3:配置文件application.yml 跟 Eureka_client的配置文件差不多
步骤4:访问另一个微服务获取数据
@Service
public class BookServiceImpl implements BookService {
@Autowired
RestTemplate restTemplate;
@Override
public int add(Book book) {
// 产品的id号
int productId = 1;
//获取订单明细中关于产品的信息 -- 调用商品服务进行获取信息
String url = "http://productService/products/" + productId;
//将json数据转为对应的对象
Product product = restTemplate.getForObject( url, Product.class );
}
}