当前位置:首页 > 科技  > 软件

高并发下就该使用非阻塞式方式接口调用提高系统整体性能

来源: 责编: 时间:2023-09-25 10:38:17 461观看
导读简介OpenFeign是Spring Cloud的一部分,它基于Feign实现了声明式服务调用和负载均衡。以下是OpenFeign的一些主要特性:支持SpringMVC的注解:OpenFeign整合了SpringMVC的注解,例如@RequestMapping,使得用户可以直接在接口上

简介

OpenFeign是Spring Cloud的一部分,它基于Feign实现了声明式服务调用和负载均衡。以下是OpenFeign的一些主要特性:WZo28资讯网——每日最新资讯28at.com

  1. 支持SpringMVC的注解:OpenFeign整合了SpringMVC的注解,例如@RequestMapping,使得用户可以直接在接口上使用这些注解,而无需编写接口实现。
  2. 负载均衡:OpenFeign通过动态代理的方式生成实现类,这些实现类中包含了负载均衡的实现,并可以调用其他服务。
  3. 声明式服务调用:OpenFeign提供了一种声明式的方式来访问远程服务,这使得使用者可以像调用本地方法一样来调用远程服务。
  4. 可插拔的注解:OpenFeign提供了可插拔的注解支持,这意味着用户可以根据自己的需要选择不同的注解来使用。
  5. 异步通信:OpenFeign支持异步通信,这使得用户可以更好地利用异步请求带来的优势。
  6. 熔断器:OpenFeign可以与resilience4j集成,支持熔断器的功能,这可以在服务调用失败时保护系统,防止故障扩散。
  7. 服务发现:OpenFeign可以与nacos, loadbalancer配合使用,支持服务发现的功能及负载均衡,这使得用户可以更加方便地管理和调用远程服务。

总的来说,OpenFeign是一个功能强大的声明式服务调用和负载均衡工具,它可以提高服务调用的效率和灵活性,并可以帮助用户更好地管理他们的分布式系统。WZo28资讯网——每日最新资讯28at.com

但是OpenFeign并不支持反应式客户端,如Spring WebClient,Spring Cloud OpenFeign也不支持。WZo28资讯网——每日最新资讯28at.com

feign-reactor是Spring Cloud的feign的扩展,它提供了对Reactor Netty的支持,可以更好地处理HTTP请求。具体来说,feign-reactor基于Reactor Netty实现,它支持Reactive编程模型,可以更好地处理异步请求,并且可以更好地利用网络资源。此外,feign-reactor还提供了一些其他的特性,例如:支持负载均衡、支持熔断器、支持自定义请求和响应等。WZo28资讯网——每日最新资讯28at.com

总的来说,feign-reactor可以提升feign在处理HTTP请求时的效率和灵活性。WZo28资讯网——每日最新资讯28at.com

使用上基本与openfeign一致,就是将相应的注解换了相应的名称。WZo28资讯网——每日最新资讯28at.com

环境准备

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency>  <groupId>com.playtika.reactivefeign</groupId>  <artifactId>feign-reactor-spring-configuration</artifactId>  <version>3.3.0</version></dependency><dependency>  <groupId>com.playtika.reactivefeign</groupId>  <artifactId>feign-reactor-cloud</artifactId>  <version>3.3.0</version></dependency><dependency>  <groupId>com.playtika.reactivefeign</groupId>  <artifactId>feign-reactor-webclient</artifactId>  <version>3.3.0</version></dependency>

feign-reactor-cloud依赖提供了CircuitBreaker + LoadBalancer的支持。WZo28资讯网——每日最新资讯28at.com

feign-reactor-webclient依赖提供了有关WebClient客户端相关的实现及配置。WZo28资讯网——每日最新资讯28at.com

feign-reactor-spring-configuration依赖提供了Spring自动配置。WZo28资讯网——每日最新资讯28at.com

开启反应式客户端

@SpringBootApplication// 这里与openfeign就是名称不一样@EnableReactiveFeignClientspublic class SpringcloudFeignReactorApplication {}

reactor feign接口定义

@ReactiveFeignClient(    // 目标地址    url = "http://localhost:8088/demos",     // 这里没有走服务发现机制,随意    name = "demoReactorFeign",     // 回退;当发生异常或超时调用,这里与openfeign一样都需要实现当前feign接口    fallback = DemoReactorFeignFallback.class,    // 配置    configuration = {DemoReactorFeignConfig.class})public interface DemoReactorFeign {  // 下面这个注解是feign的注解  // @RequestLine("GET /info/{id}")  // feign中@PathVariable => @Param  // 基于SpringMVC的注解  @GetMapping("/info/{id}")  public Mono<Object> info(@PathVariable("id") Integer id) ;  }

回退类定义

public class DemoReactorFeignFallback implements DemoReactorFeign {  @Override  public Mono<Object> info(Integer id) {    return Mono.just("请求失败") ;  }}

配置类

// 这里没有添加@Configuration注解,不需要,不过添加了也可以,只是可能会出现问题public class DemoReactorFeignConfig {  // 配置上面的回退类  @Bean  public DemoReactorFeignFallback demoReactorFeignFallback() {    return new DemoReactorFeignFallback() ;  }  }

以上对feign reactor的使用除了类不一样外,其它都与openfeign是保持一致的。WZo28资讯网——每日最新资讯28at.com

测试接口

@RestController@RequestMapping("/reactor")public class DemoController {  @Resource  private DemoReactorFeign demoReactorFeign ;    @GetMapping("/{id}")  public Object info(@PathVariable("id") Integer id) {    return this.demoReactorFeign.info(id) ;  }  }

图片图片WZo28资讯网——每日最新资讯28at.com

成功调用目标接口WZo28资讯网——每日最新资讯28at.com

超时支持

超时配置,我们只需要提供配置即可WZo28资讯网——每日最新资讯28at.com

reactive:  feign:    client:      config:        default:          options:             connectTimeoutMillis: 1000            readTimeoutMillis: 1000

以上是默认配置,对所有的接口都是一样的超时时间。WZo28资讯网——每日最新资讯28at.com

由于目标接口模拟了耗时操作,所以调用了回退接口由于目标接口模拟了耗时操作,所以调用了回退接口WZo28资讯网——每日最新资讯28at.com

为具体接口配置超时

reactive:  feign:    client:      config:        demoReactorFeign:          options:            connectTimeoutMillis: 2000            readTimeoutMillis: 2000

编程方式

也可以直接通过编程的方式WZo28资讯网——每日最新资讯28at.com

public class ProgramReactorFeignMain {  @Headers({ "Accept: application/json" })  static interface DemoReactorFeign {    @RequestLine("GET /info/{id}")    public Mono<Object> info(@Param("id") Integer id) ;      }    public static void main(String[] args) throws Exception {    DemoReactorFeign target =         WebReactiveFeign                  //  WebClient based reactive feign          //JettyReactiveFeign              //  Jetty http client based        //Java11ReactiveFeign             //  Java 11 http client based        .<DemoReactorFeign>builder()      //  指定方法返回值参数化类型        .target(DemoReactorFeign.class, "http://localhost:8088/demos") ;    target.info(6666).doOnNext(System.out::println).block() ;  }  }

完毕!!!WZo28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-11247-0.html高并发下就该使用非阻塞式方式接口调用提高系统整体性能

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Go 语言史诗级更新-循环Bug修复

下一篇: 分布式微服务架构中的关键技术解析

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 中兴AX5400Pro+上手体验:再升级 双2.5G网口+USB 3.0这次全都有

    2021年11月的时候,中兴先后发布了两款路由器产品,中兴AX5400和中兴AX5400 Pro,从产品命名上就不难看出这是隶属于同一系列的,但在外观设计上这两款产品可以说是完全没一点关系
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现&ldquo;美团直播&rdquo;的固定入口。在直播聚合页面,外卖&ldquo;神枪手&rdquo;直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就&ldquo;胡锡进炒股是否知道认真报道&rdquo;展开讨论。有
  • 郭明錤称华为和江淮汽车合作开发问界MPV,定价100万左右、计划明年量产

    8 月 1 日消息,郭明錤今天在 Medium 平台发布博文,称华为正在和江淮汽车合作,开发售价在 100 万元的问界 MPV,预计在 2024 年第 2 季度量产,销量目标为
  • 由于成本持续增加,笔记本产品价格预计将明显上涨

    根据知情人士透露,由于材料、物流等成本持续增加,笔记本产品价格预计将在2021年下半年有明显上涨。进入6月下旬以来,全球半导体芯片缺货情况加剧,显卡、处理器
Top