首页 > 其他分享 >Feign与RestTemplate的区别

Feign与RestTemplate的区别

时间:2023-05-08 12:00:35浏览次数:37  
标签:Feign 服务 请求 区别 RestTemplate 接口 HTTP

微服务之间的通信方式

  1. 常见的方式有两种:
    • RPC——代表-dubbo
    • HTTP——代表-SpringCloud
    • 在SpringCloud中,默认是使用http来进行微服务的通信,最常用的实现形式有两种:
      • RestTemplate
      • Feign
  2. Feign跟RestTemplate的区别
    • 请求方式不一样
      • RestTemplate需要每个请求都拼接url+参数+类文件,灵活性高但是消息封装臃肿。
      • feign可以伪装成类似SpringMVC的controller一样,将rest的请求进行隐藏,不用再自己拼接url和参数,可以便捷优雅地调用HTTP API。
    • 底层实现方式不一样
      • RestTemplate在拼接url的时候,可以直接指定ip地址+端口号,不需要经过服务注册中心就可以直接请求接口;也可以指定服务名,请求先到服务注册中心(如nacos)获取对应服务的ip地址+端口号,然后经过HTTP转发请求到对应的服务接口(注意:这时候的restTemplate需要添加@LoadBalanced注解,进行负载均衡)。
      • Feign的底层实现是动态代理,如果对某个接口进行了@FeignClient注解的声明,Feign就会针对这个接口创建一个动态代理的对象,在调用这个接口的时候,其实就是调用这个接口的代理对象,代理对象根据@FeignClient注解中name的值在服务注册中心找到对应的服务,然后再根据@RequestMapping等其他注解的映射路径构造出请求的地址,针对这个地址,再从本地实现HTTP的远程调用。

标签:Feign,服务,请求,区别,RestTemplate,接口,HTTP
From: https://www.cnblogs.com/Twittery/p/17381305.html

相关文章

  • Python 和 JavaScript 的区别是什么?
    Python和JavaScript是两门非常流行的编程语言,它们各自有着独特的特点和应用场景。Python和JavaScript是两种不同的编程语言,它们的设计目标和应用场景有所不同。Python是一种多用途、高级、解释型的编程语言,可用于开发各种应用程序,包括Web开发、数据分析、人工智能、科学计算......
  • make clean与make distclean的区别
    makeclean仅仅是清除之前编译的可执行文件及配置文件。而makedistclean要清除所有生成的文件。Makefile在符合GNUMakefiel惯例的Makefile中,包含了一些基本的预先定义的操作:make根据Makefile编译源代码,连接,生成目标文件,可执行文件。makeclean清除上次的make命令所产生......
  • sizeof和strlen的区别
    1.sizeof和strlen的区别strlen是头文件cstring中的函数,sizeof是c++的运算符,strlen测量的是字符串的实际长度,以\0结束,而sizeof测量的是对象或者表达式类型占用的字节大小size_tstrlen(constchar*str){size_tlength=0;while(*str++){++leng......
  • new和malloc区别
    new1.调用名为operatornew的标准库函数,分配足够大的原始的未类型化的内存,以保存指定类型的一个对象2.运行该类型的一个构造函数初始化对象3.返回指向新分配并构造的构造函数对象的指针malloc在堆中申请一块内存,返回指向该内存的指针,不会对内存进行初始化 1.new可以在指定内......
  • #define和inline的区别(转)
    原文:https://blog.csdn.net/weixin_43870837/article/details/107350586特性差异对于两者的区别涉及到c与c++语言两者的差异性。C++有着更加严格编译系统,这使得C++程序的错误在编译阶段即可发现许多问题,从而使得出错率大为减少。也正是因为如此,c++中引入inline来代替define的功......
  • 关于docker的Cgroup Driver相关的配置说明以及其值为cgroupfs与systemd的区别
    在我们安装完docker-ce软件后(笔者这里安装的docker-ce-20.10.24-3.el8.x86_64)就可以直接启动docker服务 systemctlrestartdocker.service这时我们通过 dockerinfo命令,可以看到当前docker的一些配置信息,今天笔者主要是看CgroupDriver相关的,如下:[root@k8s-masterqq-5201......
  • Feign Method Timeout 配置
    项目背景这个应用是微服务架构,使用Springboot+Springcloud,其中Springcloud部分使用了openfeign来实现通讯交互。项目结构层次,我们将一个微服务暴力的拆分成两个模块:xxx-api/xxx-server,xxx-api是用来发布交互的接口,xxx-server模块是用来运行web服务。对于xxx-api模块,我们根据业务......
  • 简单说说HashMap和LinkedHashMap的区别
    HashMap和LinkedHashMap的区别我们知道HashMap的变量顺序是不可预测的,这意味着便利的输出顺序并不一定和HashMap的插入顺序是一致的。这个特性通常会对我们的工作造成一定的困扰。为了实现这个功能,我们可以使用LinkedHashMap。LinkedHashMap详解先看下LinkedHashMap的定义:pu......
  • vue v-bind与v-model的区别
    1.v-bind是单向绑定,用来绑定数据和属性以及表达式,数据只能从data流向页面;v-model是双向绑定,数据能从data流向页面,也能从页面流向data。2.v-bind可以给任何属性赋值,v-model只能给表单类,也就是具有value属性的元素进行数据双向绑定,如input、text、radio、checkbox、selected。可以......
  • 负载均衡和反向代理的区别
    Client和负载均衡设备之间的报文交互过程RS和负载均衡设备之间的报文交互过程结果分析:TCP握手过程:同反向代理模式交互过程HTTP报文交互过程:    Client向负载均衡设备的VIP地址172.16.75.84以源IP10.8.21.40发送HTTP请求,当负载均衡设备收到报文后,与优选后的RS进行TCP三......