zoukankan      html  css  js  c++  java
  • 小D课堂

    笔记

    6、Feign核心源码解读和服务调用方式ribbon和Feign选择    
        简介: 讲解Feign核心源码解读和 服务间的调用方式ribbon、feign选择
        
            1、ribbon和feign两个的区别和选择
                选择feign
                    默认集成了ribbon
                    写起来更加思路清晰和方便
                    采用注解方式进行配置,配置熔断等方式方便

            2、超时配置
                默认optons readtimeout是60,但是由于hystrix默认是1秒超时

                #修改调用超时时间
                feign:
                  client:
                    config:
                      default:
                        connectTimeout: 2000
                        readTimeout: 2000

                模拟接口响应慢,线程睡眠新的方式
                  try {
                        TimeUnit.SECONDS.sleep(1);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

    开始

    搜索这个类LoadBalacneFeignClient实现了类叫做Client

    Client是客户端这就是核心的了

    找到Client的实现

    点进去Request对象查看

    这是一个请求的对象。里面有一些http的请求属性

    option是一个配置类

    请求超时。 默认连接是10秒  读取是60秒

    链接是最长10秒。读取最长60秒

    Feign里面也是用的ribbon去做的

    主要理解LoadBalancerFeignClient里面的这个execute方法这里面的流程

    加一个断点调试


    发送请求


    这是request对象。

    option一些参数。链接时间和超时时间

    断点继续往下走,最后返回数据

    模拟超时

    使用线程睡眠的方法,休眠10秒钟。这里用了TimeUnit.SECOND。模拟查询商品详情的时候休眠10秒钟

    很多种方法可以选择天、小时、分钟都可以。这种方式的可读性更强

    启动商品服务。注册中心 注册了两个product的服务

    然后Order Service放调用服务。调用商品服务 报错。 

    控制台提示超时了

    控制连接时间

    可以去官方文档里面找

    我们把读取时间改为11秒,因为我们默认休眠了10秒。只要比10秒多就可以了。

    重启order服务。重新访问大概等待10秒多

    大多数超时时间一定不能超过2秒。所以我们一般在配置里面设置连接和读取为2秒时间

    product里面模拟睡眠1秒,

    orderService这里先注释掉

    代码里面默认的读取时间是60秒。我们模拟延迟了1秒按说不应该超时。超时1秒也报错了这是为什么呢

    虽然模式是60秒。但是由于hystrix默认是1秒超时。hystrix是熔断的知识点

    超时时间手动修改。注释这里放开。超时时间设置为2秒

    数据正常读取成功。这样就取代了hystrix的默认1秒。

    负载均衡

    feign的负载均衡方式和ribbon是一样的。这里先把负载均衡的设置先关掉

    product的服务超时时间模拟先注释掉

    启动product多个节点8772和8773

    验证feign是不是轮询的方式
    一直是8772和8773两个端口轮流


    开启随即的模式

    重新启动order Service


    没有固定的端口。每次都是随机访问的

    选择feign

                    默认集成了ribbon
                    写起来更加思路清晰和方便
                    采用注解方式进行配置,配置熔断等方式方便

    feign这只需要定义一个client就可以了。解耦,开发效率高



  • 相关阅读:
    双边沿采样
    `ifdef、`else、`endif 用法
    交通信号灯
    异步复位同步释放
    用Verilog来实现d触发器2分频的Verilog hdl程序
    谈谈Mux与门电路的相互替换(包含实例分析)
    数字电路笔试题
    仰视奶牛
    单调栈
    div2 620 C
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11445891.html
Copyright © 2011-2022 走看看