《微服务》(2)

 一.OpenFeign的工作原理:

  1. 首先通过@EnableFeignClients注解开启FeignClient 的功能。只有这个注解存在,才会在程序启动时开启对@FeignClient注解的包扫描。
  2. 根据Feign的规则实现接口,并在接口上面加上@FeignClient注解。
  3. 程序启动后,会进行包扫描,扫描所有的@ FeignClient 的注解的类,并将这些信息注入IoC容器中。
  4. 当接口的方法被调用时,通过JDK的代理来生成具体的RequestTemplate模板对象。
  5. 根据RequestTemplate再生成Http请求的Request对象。
  6. Request 对象交给Client去处理,其中Client的网络请求框架可以是HtpURLConnection、HttpClient和OkHttp。
  7. 最后Client被封装到LoadBalanceClient类,这个类结合类Ribbon做到了负载均衡。

二.OpenFeign和Ribbon的区别:

OpenFeign是基于Ribbon进行了封装,整合了Ribbon和SpringMvc注解,简化了Ribbon的url拼接,我们只需要简单编写Fiegn的客户端接口就可以像调用本地service去调用远程微服务。

三.Hystrix的功能有哪些:

熔断:自我保护机制,防止雪崩,服务器直接崩溃。

限流:到达上限限制,就拒绝请求

缓存:提供了请求缓存、请求合并实现 , 在高并发的场景之下,Hystrix请求缓存可以方便地开启和使用请求缓存来优化系统,达到减轻高并发时请求线程的消耗、降低请求响应时间的效果。

降级:当一个业务(请求)失败/超时,就会走预先设置好的第二种方案(也就是降级逻辑)。

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

1.线程池 :

hystix提供了一个线程池,让请求在新的线程中去执行(异步),限流上限就是线程池中的线程数量+队列长度,如果超出该限制-拒接请求,触发降级 

会有线程切换消耗

2.信号量:

设置一个信号量(数字) ,请求来了会给一个计数器+1,请求走了会-1,某一个时刻,计数器达到信号量上限-拒接请求,触发降级 (同步)

不会有线程切换消耗,开销低

五.Hystrix的熔断机制:

当请求多次失败,就会标记上熔断状态。如果再次请求熔断状态的就会快速失败,触发降级。

避免线程阻塞,导致雪崩。

六.zuul的执行流程:

正常执行流程:

请求到达首先会经过pre类型过滤器,而后到达routing类型,进行路由,请求就到达真正的服务提供者,执行请求,返回结果后,会到达post过滤器。而后返回响应。

异常执行流程:

  • 整个过程中,pre或者routing过滤器出现异常,都会直接进入error过滤器,再error处理完毕后,会将请求交给POST过滤器,最后返回给用户。

  • 如果是error过滤器自己出现异常,最终也会进入POST过滤器,而后返回。

  • 如果是POST过滤器出现异常,会跳转到error过滤器,但是与pre和routing不同的时,请求不会再到达POST过滤器了,就直接返回。

七.zuul如何定义filter

1.创建一个类继承 ZuulFilter

 

 2.重写它的四个方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值