AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

高并發(fā)下就該使用非阻塞式方式接口調(diào)用提高系統(tǒng)整體性能

來源: 責編: 時間:2023-09-25 10:38:17 323觀看
導讀簡介OpenFeign是Spring Cloud的一部分,它基于Feign實現(xiàn)了聲明式服務調(diào)用和負載均衡。以下是OpenFeign的一些主要特性:支持SpringMVC的注解:OpenFeign整合了SpringMVC的注解,例如@RequestMapping,使得用戶可以直接在接口上

簡介

OpenFeign是Spring Cloud的一部分,它基于Feign實現(xiàn)了聲明式服務調(diào)用和負載均衡。以下是OpenFeign的一些主要特性:97p28資訊網(wǎng)——每日最新資訊28at.com

  1. 支持SpringMVC的注解:OpenFeign整合了SpringMVC的注解,例如@RequestMapping,使得用戶可以直接在接口上使用這些注解,而無需編寫接口實現(xiàn)。
  2. 負載均衡:OpenFeign通過動態(tài)代理的方式生成實現(xiàn)類,這些實現(xiàn)類中包含了負載均衡的實現(xiàn),并可以調(diào)用其他服務。
  3. 聲明式服務調(diào)用:OpenFeign提供了一種聲明式的方式來訪問遠程服務,這使得使用者可以像調(diào)用本地方法一樣來調(diào)用遠程服務。
  4. 可插拔的注解:OpenFeign提供了可插拔的注解支持,這意味著用戶可以根據(jù)自己的需要選擇不同的注解來使用。
  5. 異步通信:OpenFeign支持異步通信,這使得用戶可以更好地利用異步請求帶來的優(yōu)勢。
  6. 熔斷器:OpenFeign可以與resilience4j集成,支持熔斷器的功能,這可以在服務調(diào)用失敗時保護系統(tǒng),防止故障擴散。
  7. 服務發(fā)現(xiàn):OpenFeign可以與nacos, loadbalancer配合使用,支持服務發(fā)現(xiàn)的功能及負載均衡,這使得用戶可以更加方便地管理和調(diào)用遠程服務。

總的來說,OpenFeign是一個功能強大的聲明式服務調(diào)用和負載均衡工具,它可以提高服務調(diào)用的效率和靈活性,并可以幫助用戶更好地管理他們的分布式系統(tǒng)。97p28資訊網(wǎng)——每日最新資訊28at.com

但是OpenFeign并不支持反應式客戶端,如Spring WebClient,Spring Cloud OpenFeign也不支持。97p28資訊網(wǎng)——每日最新資訊28at.com

feign-reactor是Spring Cloud的feign的擴展,它提供了對Reactor Netty的支持,可以更好地處理HTTP請求。具體來說,feign-reactor基于Reactor Netty實現(xiàn),它支持Reactive編程模型,可以更好地處理異步請求,并且可以更好地利用網(wǎng)絡資源。此外,feign-reactor還提供了一些其他的特性,例如:支持負載均衡、支持熔斷器、支持自定義請求和響應等。97p28資訊網(wǎng)——每日最新資訊28at.com

總的來說,feign-reactor可以提升feign在處理HTTP請求時的效率和靈活性。97p28資訊網(wǎng)——每日最新資訊28at.com

使用上基本與openfeign一致,就是將相應的注解換了相應的名稱。97p28資訊網(wǎng)——每日最新資訊28at.com

環(huán)境準備

<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的支持。97p28資訊網(wǎng)——每日最新資訊28at.com

feign-reactor-webclient依賴提供了有關WebClient客戶端相關的實現(xiàn)及配置。97p28資訊網(wǎng)——每日最新資訊28at.com

feign-reactor-spring-configuration依賴提供了Spring自動配置。97p28資訊網(wǎng)——每日最新資訊28at.com

開啟反應式客戶端

@SpringBootApplication// 這里與openfeign就是名稱不一樣@EnableReactiveFeignClientspublic class SpringcloudFeignReactorApplication {}

reactor feign接口定義

@ReactiveFeignClient(    // 目標地址    url = "http://localhost:8088/demos",     // 這里沒有走服務發(fā)現(xiàn)機制,隨意    name = "demoReactorFeign",     // 回退;當發(fā)生異常或超時調(diào)用,這里與openfeign一樣都需要實現(xiàn)當前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注解,不需要,不過添加了也可以,只是可能會出現(xiàn)問題public class DemoReactorFeignConfig {  // 配置上面的回退類  @Bean  public DemoReactorFeignFallback demoReactorFeignFallback() {    return new DemoReactorFeignFallback() ;  }  }

以上對feign reactor的使用除了類不一樣外,其它都與openfeign是保持一致的。97p28資訊網(wǎng)——每日最新資訊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) ;  }  }

圖片圖片97p28資訊網(wǎng)——每日最新資訊28at.com

成功調(diào)用目標接口97p28資訊網(wǎng)——每日最新資訊28at.com

超時支持

超時配置,我們只需要提供配置即可97p28資訊網(wǎng)——每日最新資訊28at.com

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

以上是默認配置,對所有的接口都是一樣的超時時間。97p28資訊網(wǎng)——每日最新資訊28at.com

由于目標接口模擬了耗時操作,所以調(diào)用了回退接口由于目標接口模擬了耗時操作,所以調(diào)用了回退接口97p28資訊網(wǎng)——每日最新資訊28at.com

為具體接口配置超時

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

編程方式

也可以直接通過編程的方式97p28資訊網(wǎng)——每日最新資訊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()      //  指定方法返回值參數(shù)化類型        .target(DemoReactorFeign.class, "http://localhost:8088/demos") ;    target.info(6666).doOnNext(System.out::println).block() ;  }  }

完畢!!!97p28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-11247-0.html高并發(fā)下就該使用非阻塞式方式接口調(diào)用提高系統(tǒng)整體性能

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Go 語言史詩級更新-循環(huán)Bug修復

下一篇: 分布式微服務架構(gòu)中的關鍵技術解析

標簽:
  • 熱門焦點
  • 盧偉冰長文解析K60至尊版 對Redmi有著里程碑式的意義

    在今天的Redmi后性能時代戰(zhàn)略發(fā)布會結(jié)束之后,Redmi總經(jīng)理盧偉冰又帶來了一篇長文,詳解了為什么 Redmi 要開啟后性能時代?為什么選擇和 MediaTek、Pixelworks 深度合作?以及后性
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來官方優(yōu)惠,到手價12999元,比發(fā)布價便宜了7000元,在大屏電視市場開卷。據(jù)了解,Redmi MAX 100
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 如何使用JavaScript創(chuàng)建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業(yè)用途。(幾小時前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • 超閉合精工鉸鏈 徹底消滅縫隙 三星Galaxy Z Flip5與Galaxy Z Fold5發(fā)布

    2023年7月26日,三星電子正式發(fā)布了Galaxy Z Flip5與Galaxy Z Fold5。三星新一代折疊屏手機采用超閉合精工鉸鏈,讓折疊后的縫隙不再可見。同時,配合處
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發(fā)布的朋友圈
  • 微軟發(fā)布Windows 11新版 引入全新任務欄狀態(tài)

    近日,微軟發(fā)布了Windows 11新版,而Build 22563更新主要引入了幾周前曝光的平板模式任務欄等,系統(tǒng)更流暢了。更新中,Windows 11加入了專門針對平板優(yōu)化的任務欄
Top