成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開(kāi)發(fā) 開(kāi)發(fā)工具
總的來(lái)說(shuō),OpenFeign是一個(gè)功能強(qiáng)大的聲明式服務(wù)調(diào)用和負(fù)載均衡工具,它可以提高服務(wù)調(diào)用的效率和靈活性,并可以幫助用戶(hù)更好地管理他們的分布式系統(tǒng)。

簡(jiǎn)介

OpenFeign是Spring Cloud的一部分,它基于Feign實(shí)現(xiàn)了聲明式服務(wù)調(diào)用和負(fù)載均衡。以下是OpenFeign的一些主要特性:

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

總的來(lái)說(shuō),OpenFeign是一個(gè)功能強(qiáng)大的聲明式服務(wù)調(diào)用和負(fù)載均衡工具,它可以提高服務(wù)調(diào)用的效率和靈活性,并可以幫助用戶(hù)更好地管理他們的分布式系統(tǒng)。

但是OpenFeign并不支持反應(yīng)式客戶(hù)端,如Spring WebClient,Spring Cloud OpenFeign也不支持。

feign-reactor是Spring Cloud的feign的擴(kuò)展,它提供了對(duì)Reactor Netty的支持,可以更好地處理HTTP請(qǐng)求。具體來(lái)說(shuō),feign-reactor基于Reactor Netty實(shí)現(xiàn),它支持Reactive編程模型,可以更好地處理異步請(qǐng)求,并且可以更好地利用網(wǎng)絡(luò)資源。此外,feign-reactor還提供了一些其他的特性,例如:支持負(fù)載均衡、支持熔斷器、支持自定義請(qǐng)求和響應(yīng)等。

總的來(lái)說(shuō),feign-reactor可以提升feign在處理HTTP請(qǐng)求時(shí)的效率和靈活性。

使用上基本與openfeign一致,就是將相應(yīng)的注解換了相應(yīng)的名稱(chēng)。

環(huán)境準(zhǔ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依賴(lài)提供了CircuitBreaker + LoadBalancer的支持。

feign-reactor-webclient依賴(lài)提供了有關(guān)WebClient客戶(hù)端相關(guān)的實(shí)現(xiàn)及配置。

feign-reactor-spring-configuration依賴(lài)提供了Spring自動(dòng)配置。

開(kāi)啟反應(yīng)式客戶(hù)端

@SpringBootApplication
// 這里與openfeign就是名稱(chēng)不一樣
@EnableReactiveFeignClients
public class SpringcloudFeignReactorApplication {
}

reactor feign接口定義

@ReactiveFeignClient(
    // 目標(biāo)地址
    url = "http://localhost:8088/demos", 
    // 這里沒(méi)有走服務(wù)發(fā)現(xiàn)機(jī)制,隨意
    name = "demoReactorFeign", 
    // 回退;當(dāng)發(fā)生異常或超時(shí)調(diào)用,這里與openfeign一樣都需要實(shí)現(xiàn)當(dāng)前feign接口
    fallback = DemoReactorFeignFallback.class,
    // 配置
    configuration = {DemoReactorFeignConfig.class}
)
public interface DemoReactorFeign {


  // 下面這個(gè)注解是feign的注解
  // @RequestLine("GET /info/{id}")
  // feign中@PathVariable => @Param
  // 基于SpringMVC的注解
  @GetMapping("/info/{id}")
  public Mono<Object> info(@PathVariable("id") Integer id) ;
  
}

回退類(lèi)定義

public class DemoReactorFeignFallback implements DemoReactorFeign {


  @Override
  public Mono<Object> info(Integer id) {
    return Mono.just("請(qǐng)求失敗") ;
  }


}

配置類(lèi)

// 這里沒(méi)有添加@Configuration注解,不需要,不過(guò)添加了也可以,只是可能會(huì)出現(xiàn)問(wèn)題
public class DemoReactorFeignConfig {


  // 配置上面的回退類(lèi)
  @Bean
  public DemoReactorFeignFallback demoReactorFeignFallback() {
    return new DemoReactorFeignFallback() ;
  }
  
}

以上對(duì)feign reactor的使用除了類(lèi)不一樣外,其它都與openfeign是保持一致的。

測(cè)試接口

@RestController
@RequestMapping("/reactor")
public class DemoController {


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

圖片圖片

成功調(diào)用目標(biāo)接口

超時(shí)支持

超時(shí)配置,我們只需要提供配置即可

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

以上是默認(rèn)配置,對(duì)所有的接口都是一樣的超時(shí)時(shí)間。

由于目標(biāo)接口模擬了耗時(shí)操作,所以調(diào)用了回退接口由于目標(biāo)接口模擬了耗時(shí)操作,所以調(diào)用了回退接口

為具體接口配置超時(shí)

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

編程方式

也可以直接通過(guò)編程的方式

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ù)化類(lèi)型
        .target(DemoReactorFeign.class, "http://localhost:8088/demos") ;
    target.info(6666).doOnNext(System.out::println).block() ;
  }
  
}

完畢!!!

責(zé)任編輯:武曉燕 來(lái)源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2023-09-28 08:01:06

MySQL事務(wù)失效

2017-01-15 09:56:48

LinuxIO性能

2010-02-22 10:38:44

Web交換技術(shù)

2010-01-05 13:59:22

網(wǎng)吧交換機(jī)

2020-11-24 20:54:17

數(shù)據(jù)

2014-06-12 19:53:08

達(dá)夢(mèng)DMETLETL

2011-12-21 17:12:07

2016-11-28 09:08:43

java系統(tǒng)異步非阻塞

2023-10-06 16:56:19

Python二進(jìn)制工具

2020-04-10 10:10:28

Nginx高并發(fā)性能

2019-10-30 16:54:08

golangredis數(shù)據(jù)庫(kù)

2024-08-05 11:34:49

2025-02-20 00:01:00

2020-09-23 22:36:27

分布式架構(gòu)系統(tǒng)

2025-02-26 08:20:18

2020-07-15 08:14:12

高并發(fā)

2014-08-08 13:30:44

Nginx

2013-01-30 10:12:24

NginxNginx優(yōu)化高并發(fā)

2025-03-21 06:20:00

連接池系統(tǒng)數(shù)據(jù)庫(kù)

2024-02-02 11:24:00

I/O高并發(fā)場(chǎng)景
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品一区二区三区在线播放 | 精品三区 | 日本成人中文字幕 | av在线免费网站 | 电影午夜精品一区二区三区 | 91久久国产综合久久 | 国产区一区 | 欧美三级在线 | 久久久久久国产 | 日韩国产中文字幕 | 91精品久久久久久久久久 | 国产精品海角社区在线观看 | 欧美黄色一级毛片 | 成人av片在线观看 | 麻豆久久久久久久 | 久久不卡| 波多野结衣二区 | 小早川怜子xxxxaⅴ在线 | 久久精品国产一区二区三区 | 一区二区在线看 | 精品av天堂毛片久久久借种 | 操网站 | 午夜精品福利视频 | 看a网站 | 亚洲欧美综合精品久久成人 | 国产色婷婷久久99精品91 | 九九色九九 | 中文字幕人成乱码在线观看 | 久久精品91久久久久久再现 | 欧美国产亚洲一区二区 | 国产激情免费视频 | 自拍偷拍av | 一区二区三区在线播放 | 久久宗合色 | 91天堂 | 亚洲一区二区三区免费 | 国产成人综合久久 | 国产91久久久久 | 日韩成人av在线播放 | 超碰3 | 日本精品一区二区三区在线观看视频 |