RestTemplate :是一个访问Restful风格的第三方服务的 网络请求框架
使用 : 1.使用配置类配置一个RestTemplate的bean
2.在要使用的服务中自动注入
Nacos:一个微服务的服务注册中心(nacos关闭后服务的链接不会失效)
Ribbon:一个springcloud组件,用来实现服务调用的负载均衡
使用:在restTemplate 的bean上加上@LoadTemplate注解就能使用默认的均衡算法 来均衡
ribbon还提供了重试机制
几个参数:建立连接的超时时间(connectTimeout),处理请求的超时时间,同一实例的最大重试次数,所有其他实例(不包括第一次链接)的最大重试次数
OpenFeign: 一个伪http客户端,集成了 ribbon和resttemplate
feign 中ribbon的关键属性
OkToRetryOnAllOperations
:true //所有请求都会重试 (不安全,可能会想数据库插入两个相同记录)
:false //只有get类型,也就是查询才会出发重试机制(推荐)
feign参数传递:
get:服务调用方接口中的feign方法 传递对象的参数 前面要加@SpringQueryMap注解
post:服务提供方 的controller中参数要加 @RequestBody
服务雪崩:下游的服务不可用导致上游的不可用
解决方案:隔离 超时 限流 熔断 降级
sentinel : 一套服务容错的综合性解决方案
sentinel配置限流 qps ,该controller 1秒钟内可以被访问的次数
sentinel配置熔断降级(以后请求不再执行) RT 和时间窗口 该controller执行平均时间不能超过 如(RT) 100ms ,否则在 30s(时间窗口)内不再处理请求,
而是抛出异常,30s后恢复
限流,降级等会导致被保护的controller抛出FlowException ,DegradeException等异常
这类异常无法被普通的异常切面捕获到,需要一个实现UrlBlockHandler的类来处理该类型异常
原文:https://www.cnblogs.com/javarook/p/13574558.html