feign的用处以及替换实现请求方式的实现

2023-10-31

前言

处于分布式系统下的服务间的调用是如何实现的?


一、feign是什么?

fegin旨在简化服务间的调用实现。实现了开发人员不在关注服务间的http请求的编写,只关注与自生的业务实现!

二、feign只有Java Http客户端变得更加容易这一个功能么?

并不是这样,fegin本身集成了ribbon实现了服务的负载均衡

 

三、为什么选择使用feign?

在feign没有之前我们如果实现服务间的调用会使用RestTemplate去实现服务间的调用。但是在实际开发中,有偶遇对于服务依赖的调用可能不止一处,往往一个借口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。

所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务借口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它,即可完成对服务提供方的接口绑定,并且feign集成了ribbon和restTemplate简化了使用Spring cloud Ribbon,自动封装服务调用客户端的开发量。并且实现了服务间的负载均衡。

 

可以看到feign的pom文件中引入了ribbon的jar所以feign可以帮助我们更加友好的实现服务间的调用以及负载均衡

而且feign基于resttemplate实现。resttemplate有的ClientHttpRequestFactory requestFactory有三种实现服务间的调用方式,分别是jdk的URLConnection,httpclient和okhttp

  1. SimpleClientHttpRequestFactory(封装URLConnection)
  2. HttpComponentsClientHttpRequestFactory(封装HttpClient)
  3. OkHttp3ClientHttpRequestFactory(封装OKHttp)

 

@Configuration
public class RestConfig {

    @Bean
    public RestTemplate restTemplate(){
        RestTemplate restTemplate = new RestTemplate();
        return restTemplate;
    }

    @Bean("urlConnection")
    public RestTemplate urlConnectionRestTemplate(){
        RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory());
        return restTemplate;
    }

    @Bean("httpClient")
    public RestTemplate httpClientRestTemplate(){
        RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
        return restTemplate;
    }

    @Bean("OKHttp3")
    public RestTemplate OKHttp3RestTemplate(){
        RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());
        return restTemplate;
    }
}

其实使用的时候一般都会只选择其中的一种,所以上面的几种配置任选其一,替换掉最上边那个就好。默认的是使用的jdk的SimpleClientHttpRequestFactory!!!

 

在feign中只需要导入对应的jar并激活

1.pom文件增加feign-httpclient的依赖(请注意与feign-core的版本保持一致)

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>9.4.0</version>
</dependency>

2.application.properties配置激活

feign.httpclient.enabled=true

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

feign的用处以及替换实现请求方式的实现 的相关文章

  • 分布式系统的特征

    分布式系统概念与设计 读书笔记 第一章 第一章 分布式系统的特征 1 0 简介 分布式系统是其组件分布在联网的计算机上 组件之间通过传递消息进行通信和动作协调的系统 该定义引出了分布式系统的下列重要特征 组建的并发性 缺乏全局时钟 组件故障
  • 【业务功能篇104】 补充【业务功能篇99】微服务-springcloud-springboot-电商订单模块--整合支付

    在前面我们业务功能篇98 99中 我们介绍了电商项目中的订单模块服务 那么最后就是需要进行支付动作 那么我们这里就通过订阅第三方平台支付宝的支付调用接口功能 来进一步完成订单提交后的支付动作 支付宝的接口使用可以登录官网开发指南详情去了解
  • Jmeter Springboot Redisson分布式锁并发订单操作(下单、取消单、完成单、加库存)

    Jmeter Springboot Redisson分布式锁并发订单操作 下单 取消单 完成单 加库存 涉及知识点 java springboot mybatis开发 redis分布式锁 Redisson客户端 Jmeter各种骚操作 用户
  • dubbo配置提供者和消费者

    1 找到对应的文件 提供者 消费者 参考dubbo官网 http dubbo apache org zh cn docs user quick start html
  • 深度学习大模型训练--分布式 deepspeed PipeLine Parallelism 源码解析

    deepspeed PipeLine Parallelism 源码解析 basic concept PipeDream abstract 1F1B 4 steps Code comprehension in deepspeed prepar
  • java脚本引擎Groovy实战

    前言 互联网时代随着业务的飞速发展 不仅产品迭代 更新的速度越来越快 个性化需求也是越来越多 如何快速的满足各种业务的个性化需求是我们要重点思考的问题 我们开发的系统如何才能做到热部署 不重启服务就能适应各种规则变化呢 实现业务和规则的解耦
  • 安装并配置HBase集群(5个节点)

    安装并配置HBase 集群规划 HBase2 2 5安装 将安装包拷贝到5台机器上并解压缩 配置环境变量 配置HBase 时间同步 修改 usr local src hbase 2 2 5 conf hbase env sh 文件 修改 h
  • ZooKeeper踩坑

    一 下载安装包时要下载文件名中带有bin的安装包 否则会报错 找不到或无法加载主类 org apache zookeeper server quorum QuorumPeerMain Error contacting service 这是由
  • Dubbo远程传输协议详解

    前言 上次小编为大家带来了Dubbo调用及容错机制详解 不知道大家有没有去看小编最后留下的问题 欢迎对文章进行评论也希望大家和小编多多交流 今天接着为大家带来Dubbo的内容 传输协议 上次调用机制中并没有涉及Dubbo传输的协议 这次容小
  • 分布式数字身份DID简介(五)DID的应用

    在上一篇文章中 我们给出了一种零知识证明的方法 解决用户身份属性的隐私问题 下面我们再来谈谈基于DID技术 我们都能在什么场景去应用 01 无密码安全登录 这个使用场景大家应该都很熟悉了 就类似于微信扫码登录 当我们要注册或者登录一个网站时
  • 基于一致性理论的孤岛微电网分布式控制策略研究(Simulink仿真实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 仿真搭建 2 2 优化控制
  • 什么是自动化测试,看完你就懂了!

    随着互联网技术的飞速发展 软件本身的规模和复杂度也是逐步增加 为了保证软件项目能够保质保量交付到客户手中 软件测试环节就显得非常重要了 它可以看作是软件项目交付给客户最后一道安全保证 今天给大家聊聊软件测试当中自动化测试相关的知识 希望对大
  • 消息队列选型:Kafka 如何实现高性能?

    在分布式消息模块中 我将对消息队列中应用最广泛的 Kafka 和 RocketMQ 进行梳理 以便于你在应用中可以更好地进行消息队列选型 另外 这两款消息队列也是面试的高频考点 所以 本文我们就一起来看一下 Kafka 是如何实现高性能的
  • 网站被攻击了怎么恢复?如何在被攻击后第一时间接入高防恢复正常访问?

    网站受到攻击的原因是多种多样的 包括技术漏洞 人为疏忽 社会工程学等各种因素 保护网站的安全需要综合运用技术手段 当网站遭到攻击时 以下几个步骤可以帮助恢复网站的正常运行 1 分析攻击 首先要确认网站被攻击的类型和程度 以确定所需的恢复步骤
  • 华纳云:ServiceComb如何实现zipkin分布式调用链追踪

    Apache ServiceComb是一个开源的微服务框架 它提供了分布式系统开发所需的一系列工具和服务 在ServiceComb中 实现分布式调用链追踪可以通过整合Zipkin来实现 Zipkin是一个开源的分布式追踪系统 它可以帮助你跟
  • spark相关

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 【复现】遗传算法求解分布式电源选址定容问题并考虑环境因素研究【IEEE33节点】(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • CAP与BASE理论

    CAP与BASE理论 CAP 一个分布式系统最多只能同时满足一致性 Consistency 可用性 Availability 和分区容错性 Partition tolerance 这三项中的两项 C一致性 状态的一致性 缓存 数据库 集群等
  • 手把手教你使用HarmonyOS本地模拟器

    我们通过下面的动图来回顾下手机本地模拟器的使用效果 本期 我们将为大家介绍HarmonyOS本地模拟器的版本演进 并手把手教大家使用HarmonyOS本地模拟器 一 本地模拟器的版本演进 2021年12月31日 经过一个版本的迭代优化 随D
  • 2024年华为Harmony OS走到新里程碑:取代iOS成为国内第二大智能手机操作系统

    前言 如果要问2024年最火的技术是什么 那鸿蒙开发必须占据一些位置 HarmonyOS是华为自主研发的物联网操作系统 经历四年多的发展已构建起全新的智慧生态体系 彻底改变了智能终端的交互方式 当时鸿蒙生态的智能设备已超过7亿台 同时还带来

随机推荐

  • 二叉树面试题

    将二叉查找树变为有序双向链表 考虑 二叉查找树的特点是左子树比根节点小 根节点又比右子树小 所以要把二叉查找树变为有序的双向链表 就要把左子树连接到它的前一个结点 右子树作为后一个结点 递归的进行下去 如图所示 问题解决 按照中序遍历二叉树
  • leetcode1798. 你能构造出连续值的最大数目(前缀和,贪心)

    题面 程序 class Solution public int getMaximumConsecutive vector
  • DM6446的视频前端VPFE的驱动大框架解析

    本文均属自己阅读源码的点滴总结 转账请注明出处谢谢 欢迎和大家交流 qq 1037701636 email 200803090209 zjut com gzzaigcn2012 gmail com dm6446是基于Davinci架构设计的
  • 什么是NFT?

    什么是NFT Not Fungible Token 非同质化代币 NFT是啥 内啡肽吗 很苦很苦的那个 术语说明 NFT Non Fungible Token 非同质化代币 FT Fungible Token 同质化代币 UTXO Unsp
  • python 模块 — logging模块、smtplib和email模块

    python 模块 日志 什么时候需要日志记录 排错 程序调试 用户行为分析 logging模块 日志等级 数值表示 描述 DEBUG 10 最详细的日志 常用于调试 INFO 20 仅次于debug的详细日志 记录关键节点 WARNING
  • std::string用法详解

    前言 string 的角色 1 string 使用 1 1 充分使用string 操作符 1 2 眼花缭乱的string find 函数 1 3 string insert replace erase 2 string 和 C风格字符串 3
  • centos8启动docker-mysql8容器

    README 本文记录了 centos8 安装 启动mysql8的docker容器的步骤 1 安装mysql8 docker容器 步骤1 查看mysql8 docker镜像版本 最简单的方式是上 Docker Hubhttps hub do
  • plsql因事务未提交造成的锁表的解决办法

    针对自己经常plsql锁表情况做个备忘录 方便下次操作 原文链接 https blog csdn net nmjuzi article details 80353670 1 执行以下语句可查询被锁的表 select b owner b ob
  • 敏捷测试团队管理的挑战与机会

    敏捷团队的管理其实的确面临着很多的挑战 蔡老师分别从敏捷管理的挑战 接受敏捷 敏捷下面的组织结构 敏捷架构下的沟通 敏捷下的KPI考核 以及机会和发展几个方面进行深入的讨论 其实我觉得各个公司施行敏捷的时候都会遇见这次讲师所分享的一些问题
  • Hive jdbc运行方式

    1 在服务器端启动hiveserver2 metastore服务所在的服务器 hive service hiveserver2 2 代码和访问mysql数据库的一样 package com bjsxt hive import java sq
  • [币严区块链]数字货币交易所之以太坊(ETH)钱包对接(一) 以太坊Geth客户端安装...

    以太坊Geth客户端安装 geth是以太坊的官方客户端 它是一个命令行工具 提供很多命令和选项 可以运行以太坊节点 创建和管理账户 发送交易 挖矿 部署智能合约等 下面介绍geth的三种安装方法 直接下载可执行文件 在线安装 从源码编译安装
  • 特征选择-包裹式选择

    包裹式选择与过滤式选择不考虑后续学习器不同 直接把最终使用的学习器的性能作为特征子集的评价准则 换言之 包裹式选择的目的就是为给定学习器选择最有利于其性能 量身定做 的特征子集 与过滤式选择的区别 包裹式选择方法直接针对给定学习器进行优化
  • OSI七层作用及常见协议

    OSI 模型 Open Systems Interconnection Model 由国际化标准组织ISO The International Organization for Standardization 收录在ISO 7489标准中并
  • 设有一个线性表E = { e1, e2, … , en - 1, en },设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E'={ en , en-1 , … , e2 , e1

    设有一个线性表E e1 e2 en 1 en 设计一个算法 将线性表逆置 即使元素排列次序颠倒过来 成为逆线性表E en en 1 e2 e1 要求逆线性表占用原线性表空间 并且用顺序表和单链表两种方法表示 分别用两个程序来完成 将链表倒置
  • 使用R语言使用梯度提升算法进行预测建模

    目录 1 什么是梯度提升算法 2 梯度提升算法的步骤 3 在R中实现梯度提升算法进行预测建模
  • uniapp实现底部导航栏

    首先在pages json中找到 globalStyle 在它下面建立 tabBar 如下 tabBar color 7A7E83 selectedColor 3cc51f borderStyle black backgroundColor
  • statsmodels 无法安装

    statsmodels 安装报错 使用 whl 包也无法安装 error subprocess exited with error Getting requirements to build wheel did not run succes
  • End-to-End Human Object Interaction Detection with HOI Transformer(CVPR2021)

    基于HOI transformer进行端到端的人与物体的交互检测 介绍 这是CVPR2021年的一篇论文 主要是作者提出了一种端到端的HOI检测方法 基于Transformer结构 作者总结了以前的研究工作以及方法 基本上目前的HOI研究主
  • Transformers学习笔记5

    hugface hub上不仅有预训练模型还有数据集 下载数据集 from datasets import load dataset raw datasets load dataset glue mrpc raw datasets Datas
  • feign的用处以及替换实现请求方式的实现

    前言 处于分布式系统下的服务间的调用是如何实现的 一 feign是什么 fegin旨在简化服务间的调用实现 实现了开发人员不在关注服务间的http请求的编写 只关注与自生的业务实现 二 feign只有Java Http客户端变得更加容易这一