上文提到的服务消费者采用的是RestTemplate+ribbon
(实现负载均衡) 目前,在Spring cloud
中服务之间经过restful方式
调用有两种方式java
delete()
在特定的URL上对资源执行HTTP DELETE操做exchange()
在URL上执行特定的HTTP方法,返回包含对象的ResponseEntity,这个对象是从响应体中映射获得的execute()
在URL上执行特定的HTTP方法,返回一个从响应体映射获得的对象getForEntity()
发送一个HTTPGET请求,返回的ResponseEntity包含了响应体所映射成的对象getForObject()
发送一个HTTP GET请求,返回的请求体将映射为一个对象postForEntity()
POST数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射获得的postForObject()
POST 数据到一个URL,返回根据响应体匹配造成的对象headForHeaders()
发送HTTP HEAD请求,返回包含特定资源URL的HTTP头optionsForAllow()
发送HTTP OPTIONS请求,返回对特定URL的Allow头信息postForLocation()
POST 数据到一个URL,返回新建立资源的URLput()
PUT 资源到特定的URL声明式
的伪Http客户端,它使得写Http客户端变得更简单。 使用Feign,只须要建立一个接口并注解,它具备可插拔的注解特性
,可以使用Feign 注解和JAX-RS注解
,Feign支持可插拔
的编码器和解码器,Feign默认集成了Ribbon
,并和Eureka结合
,默认实现了负载均衡
的效果。JAX-WS
:Java API for XML Web Services,规范是一组XML web services的JAVA API,容许开发者能够选择RPC-oriented或者message-oriented 来实现本身的web services。以动词为中心,指定的是每次执行函数(RPC
)。JAX-RS
:Java API for RESTful Web Services,以名词为中心,每次执行的时候指的是资源(REST
)。Feign特性git
Feign
能干Ribbon
和Hystrix
的事情,可是要用Ribbon
和Hystrix
自带的注解必需要引入相应的jar包才能够,
Feign还提供了HTTP请求
的模板,经过编写简单的接口和注解,就能够定义好HTTP请求的参数、格式、地址等信息github
添加依赖web
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
复制代码
开启Feignspring
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class FeignConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(FeignConsumerApplication.class, args);
}
}
复制代码
建立接口(feign提供的http请求模板) 经过@FeignClient("服务名")
,来指定调用哪一个服务restful
@FeignClient("eureka-provider")
public interface HomeClient {
@GetMapping("/") //服务提供者”/“访问的方法
String consumer();
}
复制代码
消费方法架构
//不解释了吧
@RestController
public class ConsumerController {
@Autowired
private HomeClient homeClient;
@GetMapping(value = "/hello")
public String hello() {
return homeClient.consumer();
}
}
复制代码
消费配置app
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
spring:
application:
name: feign-consumer
server:
port: 9000
复制代码
在github
上有关于Spring Cloud
完整的部署。
其它相关文章
Spring cloud(1)-简介以及选择
Spring cloud(2)-服务发现(Eureka,Consul)
Spring cloud(3)-负载均衡(Feign,Ribbon)
Spring cloud(4)-熔断(Hystrix)
Spring cloud(5)-路由网关(Zuul)
Spring cloud(6)-配置管理及刷新(Config,Bus)
最后,给个 star 吧~
我的博客~
简书~负载均衡