zoukankan      html  css  js  c++  java
  • 微服务之间相互调用问题

    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的类来处理该类型异常

      

  • 相关阅读:
    作为一个新手程序员,该如何去挽救一个失败的项目?
    IOS查看APP的crash Log
    UITableView 性能优化(卡问题自检)
    ARC学习笔记(一)
    iPhone的UDID与push中使用的device token的关系
    跳转appstore的评分页面和软件的首页
    IOS项目Jenkins集成脚本举例
    jenkins集成学习心得
    学习设计模式心得
    网页跳转到APP
  • 原文地址:https://www.cnblogs.com/javarook/p/13574558.html
Copyright © 2011-2022 走看看