笔记

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就可以了。解耦,开发效率高

小D课堂 - 新版本微服务springcloud+Docker教程_4-06 Feign核心源码解读和服务调用方式ribbon和Feign选择的更多相关文章

  1. 小D课堂 - 新版本微服务springcloud+Docker教程_汇总

    小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...

  2. 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介

    笔记 ============================================= SpringCloud课程笔记.txt 第一章 课程介绍和学习路线 1.微服务架构SpringClou ...

  3. 小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下

    笔记 4.Feign结合Hystrix断路器开发实战<下>     简介:讲解SpringCloud整合断路器的使用,用户服务异常情况     1.feign结合Hystrix       ...

  4. 小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响

    笔记 4.SpringCloud微服务核心组件Eureka介绍和闭源后影响     简介:         SpringCloud体系介绍             官方地址:http://projec ...

  5. 小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计

    笔记 4.微服务下电商项目基础模块设计     简介:微服务下电商项目基础模块设计 分离几个模块,课程围绕这个基础项目进行学习             小而精的方式学习微服务 1.用户服务       ...

  6. 小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务

    笔记 5.微服务调用方式之feign 实战 订单调用商品服务     简介:改造电商项目 订单服务 调用商品服务获取商品信息         Feign: 伪RPC客户端(本质还是用http)    ...

  7. 小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务

    笔记 2.微服务调用方式之ribbon实战 订单调用商品服务     简介:实战电商项目 订单服务 调用商品服务获取商品信息         1.创建order_service项目         2 ...

  8. 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解

    笔记 第四章 服务消费者ribbon和feign实战和注册中心高可用 1.常用的服务间调用方式讲解     简介:讲解常用的服务间的调用方式 RPC:             远程过程调用,像调用本地 ...

  9. 小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心

    笔记 第三章 SpringCloud核心组件注册中心 1.什么是微服务的注册中心     简介:讲解什么是注册中心,常用的注册中心有哪些 (画图)                  理解注册中心:服务 ...

随机推荐

  1. 《数据结构与算法之美》 <01>复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?

    我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间.所以,执行效率是算法一个非常重要的考量指标. 那如何来衡量你编写的算法代码的执行效率呢?这里 ...

  2. linux操作系统中的常用命令以及快捷键(一)

    接触了linux系统一年,总结一些常用的命令,快捷键等一些尝试 1.首先查看linux内核数量,常用于编译源码包时 用 make -j 来指定内核数来编译 grep ^processor /proc/ ...

  3. 1.开始认识flask

    1. pip安装flask包pip install flask2.对flask最基本的使用from flask import Flask # 导入flask包 app = Flask(__name__ ...

  4. day01_人类社会货币的演变

    1.货币的自然演变 1.1:从实物货币(贝壳.金银等一般等价物的稀有性等价于被交换物品的价值)---纸质货币(国家信用背书,使得一文不值的纸币可以兑换价值百元的商品)---记账货币(微信.二维码.银行 ...

  5. 一图一知-TS之泛型

  6. 一图一知-TS之symbol

  7. Python3+Appium学习笔记01-环境配置(上)

    公司可能也有关于对app自动化的一些想法,让我去研究下.当然以移动互联网的热度.对于app自动化测试技术听闻已久.也一直想要去学习.正好.这次可以在工作时间中学习.emmm.希望自己能坚持把这个系列更 ...

  8. CentOS7 内核优化 修改参数

    一:内核简介 内核是操作系统最基本的部分.它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,这种访问是有限的,并且内核决定一个程序在什么时候对某部分硬件操作多长时间. 内核的分类可分为单内核和 ...

  9. Vue入门(三)——模拟网络请求加载本地数据

    1.首先我们需要在webpack.dev.conf.js中const PORT = process.env.PORT && Number(process.env.PORT) 的后面追加 ...

  10. Mariadb多实例启动脚本

    #!/bin/bash port=3306 mysql_user="root" mysql_pwd="centos" cmd_path="/app/m ...