Spring Cloud通信
微服务之间通讯方式一般为两种,一种是RPC,一种是HTTP,其中Dubbo为RPC的代表,
Spring Cloud为HTTP的代表,Spring Cloud微服务架构下本身用的是HTTP restful方式,
HTTP restful本身轻量、易用、适用性强,可以很容易的跨语言跨平台,与已有的SpringCloud微服务交互
Spring Cloud服务间两种restful调用方式
-
RestTemplate
-
Feign
Feign介绍
Feign具有如下特性:
- 可插拔的注解支持,包括Feign注解和JAX-RS注解;
- 支持可插拔的HTTP编码器和解码器;
- 支持Hystrix和它的Fallback;
- 支持Ribbon的负载均衡;
- 支持HTTP请求和响应的压缩。
Feign使用
说明:
- 声明式REST客户端(伪RPC)
- 采用了基于接口的注解
其内部使用Ribbon做负载均衡,不用关心负载问题
使用流程:
1.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
2.在启动的主类上添加启动注解
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OrderApplication{
public static void main(String [] args){
SpringApplication.run(OrderApplication.class, args);
}
}
3.定义一个Interface,添加注解
/**
* Feign Interface Demo
* @author xiehua
*/
@FeignClient(name = "product")
public interface ProductClient{
@PostMapping("/getProductListByIds")
List<ProductInfo> getProductListByIds(@RequstBody List<String> productIdList);
@GetMapping("getProductDetail")
ProductInfo getProductDetail(@RequestParam("productId")String productId);
}