什么是Feign技术

简介: 基础

简单说说什么是Feign?

Feign是一种声明式、模板化的HTTP客户端技术(仅在consumer中使用)。

524.什么是声明式,有什么作用,解决什么问题?

声明式调用就像调用本地方法一样调用远程方法;无感知远程http请求。

1、Spring Cloud的声明式调用, 可以做到使用 HTTP请求远程服务时能就像调用本地方法一样的体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。

2、它像Dubbo一样,consumer直接调用接口方法调用provider,而不需要通过常规的Http Client构造请求再解析返回数据。

3、它解决了让开发者调用远程接口就跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。


什么是服务的灾难性的雪崩效应?

在微服务架构中,一个请求需要调用多个服务是非常常见的。如客户端访问A服务,而A服务需要调用B服务,B服务需要调用C服务,由于网络原因或者自身的原因,如果B服务或者C服务不能及时响应,A服务将处于阻塞状态,直到B服务C服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应


如何解决灾难性雪崩效应?

降级

超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。实现一个fallback方法, 当请求后端服务出现异常的时候, 可以使用fallback方法返回的值.

隔离(线程池隔离和信号量隔离)

限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。

熔断

当失败率(如因网络故障/超时造成的失败率高)达到阀值自动触发降级,熔断器触发的快速失败会进行快速恢复。

缓存

提供了请求缓存。

请求合并

提供请求合并。


线程池隔离和信号量隔离的区别


请回答微服务架构的六种常用设计模式是什么?

答:如下这六种

代理设计模式

聚合设计模式

链条设计模式

聚合链条设计模式

数据共享设计模式

异步消息设计模式

相关文章
SpringCloud极简入门-Feign开启Hystrix
1.支付服务集成Hystrix 官方文档:https://cloud.spring.io/spring-cloud-static/Greenwich.SR5/single/spring-cloud.html#spring-cloud-feign-hystrix 支付服务 springcloud-pay-server-1040 之前集成了Feign,修改该工程集成Hystrix。我们除了要给Feign开启Hystrix以外还需要为Feign接口编写托底类。
161 0
|
4月前
Feign使用原理
Feign使用原理
116 0
|
6月前
|
负载均衡 Java 应用服务中间件
Ribbon、Feign和OpenFeign的区别来了
Ribbon、Feign和OpenFeign的区别来了
272 2
|
6月前
|
Java Apache
Feign
Feign
42 0
|
6月前
|
监控 安全 Java
深入理解Feign
深入理解Feign
222 2
|
6月前
|
JSON Java Apache
spring cloud 整合Feign经行远程调用
spring cloud 整合Feign经行远程调用
78 0
|
负载均衡 Dubbo Java
简单理解Feign的原理与使用
简单理解Feign的原理与使用
189 0
|
JSON 负载均衡 Java
SpringCloud Feign 远程调用(史上最详细讲解)
SpringCloud Feign 远程调用(史上最详细讲解)
7686 0
SpringCloud Feign 远程调用(史上最详细讲解)
|
消息中间件 JavaScript 小程序
Spring 6 正式“抛弃”feign
Spring 6 正式“抛弃”feign
SpringCloud——Feign远程调用(一)
SpringCloud——Feign远程调用(一)
92 0
SpringCloud——Feign远程调用(一)