日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

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

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

簡介

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

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

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

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

使用上基本與openfeign一致,就是將相應的注解換了相應的名稱。MFg28資訊網(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的支持。MFg28資訊網(wǎng)——每日最新資訊28at.com

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

feign-reactor-spring-configuration依賴提供了Spring自動配置。MFg28資訊網(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是保持一致的。MFg28資訊網(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) ;  }  }

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

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

超時支持

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

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

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

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

為具體接口配置超時

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

編程方式

也可以直接通過編程的方式MFg28資訊網(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() ;  }  }

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

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

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

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

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

標簽:
  • 熱門焦點
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統(tǒng)將于今天下午正式登場,官方在發(fā)布會之前也已經(jīng)正式給出了可升級的機型產(chǎn)品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • K60 Pro官方停產(chǎn) 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經(jīng)透露了,Redmi K60 Pro已經(jīng)停產(chǎn)且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產(chǎn)之后
  • 2023年Q2用戶偏好榜:12+256G版本成新主流

    3月份的性能榜、性價比榜和好評榜之后,就要輪到2023年的第二季度偏好榜了,上半年的新機潮已經(jīng)過去,最明顯的肯定就是大內(nèi)存和存儲的機型了,另外部分中端機也取消了屏幕塑料支架
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數(shù)量是否小于或等于一個數(shù)字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 深度探索 Elasticsearch 8.X:function_score 參數(shù)解讀與實戰(zhàn)案例分析

    在 Elasticsearch 中,function_score 可以讓我們在查詢的同時對搜索結(jié)果進行自定義評分。function_score 提供了一系列的參數(shù)和函數(shù)讓我們可以根據(jù)需求靈活地進行設(shè)置。近期
  • 引領(lǐng)旗艦級影像能力向中端機普及 OPPO K11 系列發(fā)布 1799 元起

    7月25日,OPPO正式發(fā)布K系列新品—— OPPO K11 。此次 K11 在中端手機市場長期被忽視的影像板塊發(fā)力,突破性地搭載索尼 IMX890 旗艦大底主攝,支持 OIS
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風扇版本

    據(jù)10 月 30 日外媒 TheVerge 消息報道,英特爾 Xe HPG Arc Alchemist 的正面實被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風扇版本。另外,這款顯卡 PCB
Top 主站蜘蛛池模板: 盐津县| 安泽县| 富民县| 青川县| 康马县| 朝阳县| 峨边| 都兰县| 水富县| 阳信县| 锦州市| 盐亭县| 土默特右旗| 扎鲁特旗| 铜川市| 柘城县| 和田县| 公主岭市| 白银市| 海盐县| 大悟县| 昭平县| 海南省| 旬阳县| 盐池县| 广州市| 宜州市| 交城县| 盘山县| 迁安市| 岑巩县| 德庆县| 龙井市| 高雄市| 新津县| 七台河市| 堆龙德庆县| 宽甸| 福清市| 兴海县| 五河县|