Spring Cloud中服务间调用有两种restful调用方式,一种是Resttemplate
,另外一种是Feign。java
一、使用LoadBalance注解,将restTemplate做为一个bean配置web
@Component
public class RestTemplateConfig {
//使用LoadBalance注解,将restTemplate做为一个bean配置
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return restTemplate();
}
}
二、在controller中将RestTemplate引入spring
@RestController
public class ClientController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/getProductMsg")
public String getProductMsg(){
//第三种方式(利用@LoadBalance注解,可在restTemplate里使用PRODUCT应用名字,来访问PRODUCT的服务)
String response = restTemplate.getForObject("http://PRODUCT/msg",String.class);
return response;
}
一、增长依赖服务器
<!-- 添加feign声明式webservice client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
二、在启动主类上加注解@EnableFeignClients
三、新建一个Client,来调用product的接口,声明调用呢些方法restful
//表示访问product的接口
//@FeignClient(name="product")
public interface ProductClient {
@GetMapping("/msg") //调用product的这个接口
String productMsg(); //返回productMsg
}
四、controllerapp
@RestController
public class ClientController {
//Feign的使用方法
@Autowired
private ProductClient productClient;
@GetMapping("/getProductMsg")
public String getProductMsg(){
//Feign的使用方法
String response = productClient.productMsg();
return response;
}
}
Eureka属于客户端发现,客戶端向Eureka Serve拉取已注册的可用服务信息,而后根据负载均衡策略,直接命中哪台服务器提供服务,这些操做都是在客户端完成,不须要服务端,spring cloud中的客户端负载均衡器就是Ribbon组件,Restemplate、Feign、Zuul都使用到了Ribbon,只要使用@template和@FeignClient时,ribbon就会自动使用。负载均衡