国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Spring Cloud】基于 Feign 實現(xiàn)遠程調(diào)用,深入探索 Feign 的自定義配置、性能優(yōu)化以及最佳實踐方案

這篇具有很好參考價值的文章主要介紹了【Spring Cloud】基于 Feign 實現(xiàn)遠程調(diào)用,深入探索 Feign 的自定義配置、性能優(yōu)化以及最佳實踐方案。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

在微服務架構中,服務之間的通信是至關重要的,而遠程調(diào)用則成為實現(xiàn)這種通信的一種常見方式。在 Java 中,使用 RestTemplate 是一種傳統(tǒng)的遠程調(diào)用方式,但它存在一些問題,如代碼可讀性差、編程體驗不一致以及參數(shù)復雜URL難以維護等。

在本文中,我們將探討如何通過使用 Spring Cloud 中的 Feign 來解決這些問題,使得遠程調(diào)用變得更加優(yōu)雅和方便。

問題背景:使用 RestTemplate 遠程調(diào)用存在的問題

考慮以下使用 RestTemplate 進行遠程調(diào)用的代碼:

String url = "http://userservice/user/" + order.getUserId();
User user = restTemplate.getForObject(url, User.class);

這段代碼存在一些問題:

  • 可讀性差: URL 拼接直接放在代碼中,降低了代碼的可讀性。
  • 編程體驗不統(tǒng)一: 使用 RestTemplate 和其他 HTTP 客戶端的方式差異較大,不夠統(tǒng)一。
  • 參數(shù)復雜URL難以維護: 當 URL 中的參數(shù)較多時,拼接字符串的方式難以維護和管理。

解決方案:使用 HTTP 客戶端 Feign

Feign 是一個聲明式的、模板化的 HTTP 客戶端,是 Spring Cloud 生態(tài)中的一部分。它的設計目標是簡化微服務架構中服務之間的通信,使得遠程調(diào)用變得更加簡單和優(yōu)雅。

Feign 的基本概念:

  1. 聲明式 API:

Feign 提供了一種聲明式的 API 定義方式,通過接口的方式定義遠程服務的調(diào)用。這種聲明式的風格使得遠程調(diào)用看起來就像是調(diào)用本地方法一樣,大大提高了代碼的可讀性。

@FeignClient(name = "userservice")
public interface UserClient {

    @GetMapping("/user/{userId}")
    User getUser(@PathVariable("userId") String userId);
}

在上述代碼中,@FeignClient 注解用于定義一個 Feign 客戶端,@GetMapping@PathVariable 注解用于定義遠程調(diào)用的地址。

  1. 集成 Ribbon

Feign 默認集成了 Ribbon,這是一個負載均衡的客戶端。通過與 Ribbon 的集成,F(xiàn)eign 能夠實現(xiàn)對服務的負載均衡,提高了系統(tǒng)的可用性和穩(wěn)定性。

  1. 支持 Hystrix

Hystrix 是一個熔斷器框架,F(xiàn)eign 通過集成 Hystrix 提供了熔斷器的支持。這意味著在遠程服務不可用或響應時間過長時,F(xiàn)eign 能夠執(zhí)行預定義的降級邏輯,防止故障在整個系統(tǒng)中蔓延。

使用 Feign 的好處:

  1. 簡化調(diào)用代碼

通過使用 Feign,遠程調(diào)用的代碼變得簡潔清晰。不再需要手動拼接 URL,而是通過接口的方式直接定義調(diào)用的方法和參數(shù)。

  1. 統(tǒng)一的編程體驗

Feign 與其他 Spring Cloud 組件(如 Eureka、Ribbon、Hystrix 等)整合得很好,使得整體的編程體驗更加統(tǒng)一。這樣開發(fā)者在使用不同組件時,能夠保持相似的編程風格。

  1. 內(nèi)置負載均衡和熔斷器

Feign 默認集成了 Ribbon 和 Hystrix,無需額外配置,就能夠實現(xiàn)負載均衡和熔斷器的功能。這使得系統(tǒng)更加健壯和可靠。

總而言之,F(xiàn)eign 是一個優(yōu)秀的聲明式 HTTP 客戶端,它的設計使得遠程調(diào)用變得更加簡單和優(yōu)雅。通過整合 Ribbon 和 Hystrix,F(xiàn)eign 提供了負載均衡和熔斷器的支持,使得微服務架構中服務之間的通信更加健壯可靠。在構建微服務應用時,考慮使用 Feign,提高代碼的可讀性和系統(tǒng)的穩(wěn)定性。

一、基于 Feign 的遠程調(diào)用

1.1 引入依賴

在項目的 Maven 配置中,引入 Spring Cloud 和 Feign 的依賴:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

1.2 啟用 Feign

在 Spring Boot 應用的主類上添加 @EnableFeignClients 注解,以啟用 Feign:

@SpringBootApplication
@EnableFeignClients
public class YourApplication {

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

1.3 編寫 Feign 客戶端

創(chuàng)建一個接口,并使用 @FeignClient 注解指定服務的名稱:

@FeignClient(name = "userservice")
public interface UserClient {

    @GetMapping("/user/{userId}")
    User getUser(@PathVariable("userId") String userId);
}

1.4 使用 Feign 客戶端

在需要調(diào)用遠程服務的地方,注入 UserClient 并調(diào)用相應的方法:

@Service
public class UserService {

    @Autowired
    private UserClient userClient;

    public User getUserById(String userId) {
        return userClient.getUser(userId);
    }
}

通過上述步驟,就成功地使用了 Feign 進行遠程服務調(diào)用。

二、Feign 的自定義配置

2.1 Feign 的自定義配置項

Feign 提供了一些自定義配置項,可以根據(jù)項目的需求進行調(diào)整。以下是一些常用的配置項:

類型 作用 說明
feign.Logger.Level 修改日志級別 控制 Feign 的日志輸出級別,包含四種不同的級別:NONE、BASICHEADERS、FULL
feign.codec.Decoder 響應結果的解析器 用于解析 HTTP 遠程調(diào)用的結果,例如將 JSON 字符串解析為 Java 對象。
feign.codec.Encoder 請求參數(shù)編碼 用于將請求參數(shù)編碼,便于通過 HTTP 請求發(fā)送。
feign.Contract 支持的注解格式 定義 Feign 接口中支持的注解格式,默認是 SpringMVC 的注解。
feign.Retryer 失敗重試機制 控制請求失敗的重試機制,默認是沒有重試,但會使用 Ribbon 的重試。

詳細說明:

  1. feign.Logger.Level

    • 作用: 修改 Feign 的日志級別。
    • 說明: 控制 Feign 日志輸出的詳細程度,包括請求、響應的頭信息和正文。級別分為:
      • NONE:不輸出日志。
      • BASIC:僅輸出請求方法、URL、響應狀態(tài)碼和執(zhí)行時間。
      • HEADERS:在 BASIC 的基礎上,輸出請求和響應的頭信息。
      • FULL:輸出完整的請求和響應信息。
    @Configuration
    public class FeignConfig {
    
        @Bean
        public Logger.Level feignLoggerLevel() {
            return Logger.Level.FULL; // 可根據(jù)需求調(diào)整日志級別
        }
    }
    
  2. feign.codec.Decoder

    • 作用: 響應結果的解析器。
    • 說明: 用于將 HTTP 遠程調(diào)用的結果解析為 Java 對象。通常情況下,F(xiàn)eign 會自動選擇合適的解析器,比如將 JSON 字符串解析為 Java 對象。如果需要定制解析過程,可以實現(xiàn) Decoder 接口。
    @Configuration
    public class FeignConfig {
    
        @Bean
        public Decoder feignDecoder() {
            return new YourCustomDecoder(); // 自定義的解析器
        }
    }
    
  3. feign.codec.Encoder

    • 作用: 請求參數(shù)編碼。
    • 說明: 用于將請求參數(shù)編碼,便于通過 HTTP 請求發(fā)送。通常情況下,F(xiàn)eign 會根據(jù)請求的數(shù)據(jù)類型自動選擇合適的編碼器,比如將 Java 對象編碼為 JSON 字符串。如果需要定制編碼過程,可以實現(xiàn) Encoder 接口。
    @Configuration
    public class FeignConfig {
    
        @Bean
        public Encoder feignEncoder() {
            return new YourCustomEncoder(); // 自定義的編碼器
        }
    }
    
  4. feign.Contract

    • 作用: 支持的注解格式。
    • 說明: 定義 Feign 接口中支持的注解格式,默認是 SpringMVC 的注解??梢愿鶕?jù)項目需要選擇其他的注解格式,例如 feign.Contract.Default 或自定義的 feign.Contract 實現(xiàn)。
    @Configuration
    public class FeignConfig {
    
        @Bean
        public Contract feignContract() {
            return new feign.Contract.Default(); // 默認的注解格式
        }
    }
    
  5. feign.Retryer

    • 作用: 失敗重試機制。
    • 說明: 控制請求失敗的重試機制,默認是沒有重試,但會使用 Ribbon 的重試??梢酝ㄟ^自定義實現(xiàn) Retryer 接口來定制重試策略。
    @Configuration
    public class FeignConfig {
    
        @Bean
        public Retryer feignRetryer() {
            return new YourCustomRetryer(); // 自定義的重試策略
        }
    }
    

以上是一些常見的 Feign 自定義配置項,根據(jù)具體項目的需求進行選擇和調(diào)整。通過合理配置這些項,可以更好地滿足系統(tǒng)的特定需求,提高 Feign 在微服務架構中的靈活性和適用性。

2.2 示例:配置 Feign 的日志級別

在使用 Feign 進行遠程調(diào)用時,配置日志級別是一種常見的需求,以便更好地監(jiān)控和調(diào)試遠程調(diào)用過程。配置 Feign 的日志級別有兩種方式:配置文件方式和 Java 代碼方式。

1. 配置文件方式

首先,在項目的配置文件(例如 application.propertiesapplication.yml)中配置 Feign 的日志級別。以下是一個示例,假設你的 Feign 客戶端接口為 UserClient

# 配置 Feign 的日志等級
feign:
  client:
    config:
      default:
        loggerLevel: FULL

這里的 UserClient 是你的 Feign 客戶端接口的名稱,按照規(guī)范是接口的類名首字母小寫。通過這種方式,你可以為每個不同的 Feign 客戶端設置不同的日志級別。

這是沒有配置日志時訪問輸出的結果:
feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

這是配置了 FULL 等級日志后訪問輸出的結果:

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

此時,輸出完整的 HTTP 請求和響應信息。

2. Java 代碼方式

如果要使用 Java 代碼完成 Feign 日志的配置,則需要創(chuàng)建一個 Feign 的配置類,并配置 Feign 的日志 Bean 對象。

示例代碼如下:

public class FeignConfig {
    @Bean
    public Logger.Level logLevel(){
        return Logger.Level.BASIC;
    }
}

但是,光有這個類,F(xiàn)eign 的日志并不會生效,還需要額外加上注解,這里有兩種方式:

  1. 如果是針對所有的 Client 類都生效,則把這個類放到啟動類的@EnableFeignClients注解中:
@EnableFeignClients(defaultConfiguration = FeignConfig.class)

例如:

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

  1. 如果這個配置只針對某個特定的 Feign 客戶端生效,將配置類放到這個 Feign 客戶端接口上的 @FeignClient 注解中:
@FeignClient(value = "userservice", configuration = FeignConfig.class)

例如:
feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

通過以上的方式進行配置,我們可以靈活地控制 Feign 的日志輸出,以適應不同環(huán)境和調(diào)試需求。

三、性能優(yōu)化

在使用 Feign 進行遠程調(diào)用時,性能優(yōu)化是一個重要的方面,涉及到連接池的配置和日志級別的選擇。下面將重點討論 Feign 的性能優(yōu)化,包括連接池配置和日志級別的優(yōu)化。

3.1 Feign 的性能優(yōu)化之連接池配置

Feign 的底層支持多種客戶端實現(xiàn),包括 URLConnection、Apache HttpClient 和 OKHttp。其中,URLConnection 是默認實現(xiàn),不支持連接池,而 Apache HttpClient 和 OKHttp 支持連接池。

下面以添加 HttpClient 為例,進行 Feign 的連接池配置:

1. 添加 HttpClient 支持

首先,我們需要添加 HttpClient 的支持。在項目的 Maven 配置中引入 feign-httpclient 依賴:

<!-- 添加 HttpClient 支持 -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>

2. 配置連接池

接下來,我們需要配置連接池的相關參數(shù)。在配置文件(例如 application.yml)中添加如下配置:

feign:
  client:
    config:
      default:
        loggerLevel: BASIC # 日志級別,BASIC 表示基本的請求和響應信息
  httpclient:
    enabled: true # 開啟 Feign 對 HttpClient 的支持
    max-connections: 200 # 最大的連接數(shù)
    max-connections-per-route: 50 # 每個路徑的最大連接數(shù)

上述配置中,max-connections 表示最大的連接數(shù),max-connections-per-route 表示每個路徑的最大連接數(shù)。通過這樣的配置,我們可以充分利用連接池來提高遠程調(diào)用的性能。

3.2 Feign 的性能優(yōu)化之日志級別優(yōu)化

Feign 的日志級別選擇也對性能有一定的影響。在遠程調(diào)用中,通常建議使用 BASICNONE 級別的日志,以減少不必要的日志輸出,提高性能。

例如,在配置文件中,將 Feign 的日志級別設置為 BASIC

feign:
  client:
    config:
      default:
        loggerLevel: BASIC # 日志級別,BASIC 表示基本的請求和響應信息

或者,如果不需要任何日志輸出,可以將日志級別設置為

feign:
  client:
    config:
      default:
        loggerLevel: NONE # 不輸出任何日志

選擇適當?shù)娜罩炯墑e,可以降低日志輸出的數(shù)量,減輕系統(tǒng)的負擔,提高遠程調(diào)用的性能。特別是在生產(chǎn)環(huán)境中,通常建議選擇較低的日志級別,以減少不必要的日志信息。

綜上所述,優(yōu)化 Feign 的性能主要包括連接池的配置和日志級別的選擇。通過使用連接池代替默認的 URLConnection,以及選擇適當?shù)娜罩炯墑e,我們可以提高遠程調(diào)用的效率,減輕系統(tǒng)負擔。在實際項目中,根據(jù)具體需求和場景進行合理的配置,以達到性能優(yōu)化的目的。

四、最佳實踐方案

4.1 使用 Feign 存在的問題及解決方案

在使用 Feign 進行微服務間通信時,可能會出現(xiàn)接口定義的重復開發(fā)問題。例如,在服務提供者的 Controller 中定義了一個接口方法,而在服務消費者的 Feign Client 中也需要定義相同的接口方法。這樣的重復開發(fā)顯然是不夠優(yōu)雅和高效的。

問題描述:

以示例代碼為例:

user-service 中的 UserController 中有以下方法:

@GetMapping("/{id}")
public User findById(@PathVariable("id") Long id) {
    return userService.queryById(id);
}

而在 order-service 中的 UserClient 中,需要定義相似的接口方法:

@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);

這兩段代碼的功能相似,但卻存在重復的問題。

解決方案:

為了解決這個問題,我們可以考慮提前它們公共的代碼,這個提取公共代碼的方式則可以考慮使用繼承或者抽取來實現(xiàn)。

4.2 方式一(繼承):定義統(tǒng)一的父接口

通過繼承的方式,我們可以定義一個統(tǒng)一的父接口,包含了微服務間通信的所有可能方法。

如下圖所示:
feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

以下是詳細的實現(xiàn)步驟:

  1. 定義統(tǒng)一的接口

    // UserAPI.java
    public interface UserAPI {
        @GetMapping("/user/{id}")
        User findById(@PathVariable("id") Long id);
    }
    
  2. 服務消費者的 Feign Client 繼承接口

    // UserClient.java
    @FeignClient(value = "userservice")
    public interface UserClient extends UserAPI {
        // 這里無需再次定義方法,直接繼承 UserAPI 即可
    }
    
  3. 服務提供者的 Controller 實現(xiàn)接口

    // UserController.java
    @RestController
    public class UserController implements UserAPI {
    
        @Override
        public User findById(@PathVariable("id") Long id) {
            // 實現(xiàn)業(yè)務邏輯
        }
    }
    

通過這種方式,我們實現(xiàn)了統(tǒng)一的 API 定義,服務消費者直接繼承接口,無需重復定義。服務提供者實現(xiàn)接口,確保了對外提供的接口和消費者使用的接口一致性。

優(yōu)勢:

  • 提高代碼的一致性和可讀性。
  • 統(tǒng)一接口定義,降低維護成本。

存在的問題:

  1. 緊密耦合: 繼承接口的方式會引入服務提供者和服務消費者之間的緊密耦合。一旦服務提供者的接口發(fā)生變化,所有繼承的 Feign Client 都需要進行相應的修改,這可能導致維護成本的增加。

  2. 不適用于當前形式的 Spring MVC: 在 Spring MVC 中,方法參數(shù)映射并不是通過繼承關系來實現(xiàn)的,而是通過注解等機制。因此,直接繼承可能并不是最合適的選擇。

考慮到這些問題,采用抽取的方式,將 Feign Client 抽取為獨立模塊,通過獨立的接口定義和配置來提供給服務消費者,確實是更加靈活和可維護的選擇。

4.3 方式二(抽取):抽取 Feign Client 為獨立模塊

在這個方式中,我們將 Feign Client 抽取為一個獨立的模塊,其中包含了所有服務的客戶端、相關的實體類以及 Feign 的自定義配置。這個模塊將被所有服務的消費者引入,從而實現(xiàn)對 Feign Client 的共享使用。

示例圖:

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

在這個示例中,創(chuàng)建了一個名為 feign-api 的模塊,它包含了所有服務的 Feign Client 接口 UserClient、相關的實體類 User,以及 Feign 的自定義配置 FeignConfig。

實現(xiàn)最佳實踐方式二的步驟如下:

  1. 首先新創(chuàng)建一個模塊,命名為feign-api,然后在 pom.xml 中引入feignstarter依賴
<!-- feign的starter依賴-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
  1. order-service 中編寫的UserClientUser、FeignConfig等類都復制到feign-api項目中

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

  1. order-service中引入feign-api的依賴
<!--引入 deign-api 的依賴-->
<dependency>
    <groupId>cn.demo.cloud</groupId>
    <artifactId>feign-api</artifactId>
    <version>1.0</version>
</dependency>
  1. 修改order-service中的所有與上述三個組件有關的import部分,改成導入feign-api中的包

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

  1. 重啟測試

重新啟動 order-service 服務,發(fā)現(xiàn)找不到 UserClinet 這個 Bean 對象:

feign遠程調(diào)用實現(xiàn)過程,微服務,spring cloud,spring,Feign

其原因在于當定義的FeignClient不在 order-serviceSpringBootApplication的掃描包范圍,此時這些FeignClient無法使用。

有兩種方式解決:

  1. 指定FeignClient所在包
@EnableFeignClients(basePackages = "cn.itcast.feign.clients")
  1. 指定FeignClient字節(jié)碼
@EnableFeignClients(clients = {UserClient.class})

優(yōu)點:

  • 代碼復用性: 將 Feign Client 抽取為獨立模塊,可以在多個微服務中實現(xiàn)代碼的復用,避免了重復定義 Feign Client 接口和相關實體類。
  • 統(tǒng)一配置: 集中管理 Feign 的自定義配置,確保所有服務使用相同的配置,提高了配置的一致性。
  • 模塊化: 將相關的內(nèi)容放置在獨立的模塊中,使得項目結構更加清晰,易于維護和管理。

缺點:

  • 依賴冗余: 有時一個服務可能只會使用 feign-api 中的部分內(nèi)容,例如僅僅需要其中的一個實體類,但卻引入了整個 feign-api 模塊,可能導致依賴的冗余。

注意事項:文章來源地址http://www.zghlxwxcb.cn/news/detail-764485.html

  • 在設計 feign-api 模塊時,需要根據(jù)實際需求進行合理的劃分,確保模塊中的內(nèi)容是相關的、有復用性的。
  • 對于可能引入的依賴冗余問題,可以根據(jù)具體情況權衡使用方式一或方式二。

到了這里,關于【Spring Cloud】基于 Feign 實現(xiàn)遠程調(diào)用,深入探索 Feign 的自定義配置、性能優(yōu)化以及最佳實踐方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Spring Cloud Gateway如何優(yōu)雅地進行feign調(diào)用

    Spring Cloud Gateway如何優(yōu)雅地進行feign調(diào)用

    之前寫過一篇文章,介紹微服務場景下的權限處理,方案如下: 在實踐中,上面的網(wǎng)關選型為Spring Cloud Gateway,所以這里就存在一個問題,即網(wǎng)關如何調(diào)用用戶服務進行鑒權的問題。 在微服務場景下,服務間的調(diào)用可以通過feign的方式,但這里的問題是,網(wǎng)關是reactor模式,即

    2024年02月08日
    瀏覽(22)
  • Spring Cloud Alibaba全家桶(四)——微服務調(diào)用組件Feign

    Spring Cloud Alibaba全家桶(四)——微服務調(diào)用組件Feign

    本文小新為大家?guī)?微服務調(diào)用組件Feign 的相關知識,具體內(nèi)容包含 什么是Feign , Spring Cloud Alibaba快速整合OpenFeign , Spring Cloud Feign的自定義配置及使用 (包括: 日志配置 、 契約配置 、 自定義攔截器實現(xiàn)認證邏輯 、 超時時間配置 、 客戶端組件配置 、 GZIP 壓縮配置 )等

    2024年02月19日
    瀏覽(57)
  • 使用Feign進行微服務之間的接口調(diào)用:Spring Cloud Alibaba中的聲明式服務調(diào)用

    使用Feign進行微服務之間的接口調(diào)用:Spring Cloud Alibaba中的聲明式服務調(diào)用

    ????????Feign是一個聲明式的 HTTP客戶端框架 ,用于簡化微服務架構中服務之間的通信。它是Spring Cloud框架的一部分,旨在提供一種優(yōu)雅且易于使用的方式來定義和調(diào)用HTTP請求。 ????????Feign的設計目標是讓服務之間的通信變得更加簡單和直觀。通常情況下,在微服務

    2024年02月15日
    瀏覽(34)
  • Spring Cloud Feign調(diào)用異常:feign.RetryableException: connect timed out executing POST http://xxx

    本機JUnit單元測試時,調(diào)用部署在開發(fā)環(huán)境(Centos7)的服務時,報feign.RetryableException: connect timed out 直接訪問服務地址時,提示網(wǎng)絡無法訪問 http://192.168.1.15:7002/comDictionary/getDictionaryById?dictionaryId=GIVE_LOGIN 發(fā)現(xiàn)端口沒有打開。需要打開linux防火墻的端口 firewall-cmd --permanent --zon

    2024年03月22日
    瀏覽(22)
  • SpringCloud-基于Feign遠程調(diào)用

    SpringCloud-基于Feign遠程調(diào)用

    Spring Cloud 是一個用于構建分布式系統(tǒng)的開發(fā)工具包,它提供了一系列的微服務組件,其中之一就是 Feign。Feign 是一種聲明式的 Web 服務客戶端,它簡化了在 Spring Cloud 中進行遠程調(diào)用的過程。本文將介紹如何在 Spring Cloud 中使用 Feign 進行遠程調(diào)用。 我們在 Spring Cloud 項目的

    2024年02月21日
    瀏覽(18)
  • 微服務day04-基于Feign的遠程調(diào)用

    微服務day04-基于Feign的遠程調(diào)用

    是http客戶端,因為使用RestTemplate存在一些問題:代碼可讀性差,參數(shù)配置費事,不夠優(yōu)雅… Feign是一個聲明式的HTTP客戶端,可以幫助我們發(fā)送更加方便的發(fā)送HTTP請求。 1.1 Feign的使用 1.導入依賴 在order-service中導入依賴 2.開啟注解 在oder-service啟動類上加上注解@EnableFeignClien

    2024年03月17日
    瀏覽(25)
  • 2023年4月21日-關于遠程feign調(diào)用實現(xiàn)文件上傳下載

    一、客戶需求:做一個查詢程序,客戶提供一個excel模板,將查詢結果保存到excel模板中,上傳到文件服務,供客戶下載使用。 二、代碼實現(xiàn)

    2023年04月21日
    瀏覽(17)
  • 【Spring Cloud】深入探索統(tǒng)一網(wǎng)關 Gateway 的搭建,斷言工廠,過濾器工廠,全局過濾器以及跨域問題

    【Spring Cloud】深入探索統(tǒng)一網(wǎng)關 Gateway 的搭建,斷言工廠,過濾器工廠,全局過濾器以及跨域問題

    在微服務架構中,網(wǎng)關是至關重要的組件,具有多重職責,為整個系統(tǒng)提供了一系列關鍵功能。從下面的微服務結構圖中,我們可以明確網(wǎng)關的幾項主要作用: 微服務結構圖: 請求過濾與安全: 用戶的所有請求首先經(jīng)過網(wǎng)關,這使得網(wǎng)關成為系統(tǒng)的第一道防線。通過對傳入

    2024年02月07日
    瀏覽(23)
  • 【Spring Cloud】深入探索 Nacos 注冊中心的原理,服務的注冊與發(fā)現(xiàn),服務分層模型,負載均衡策略,微服務的權重設置,環(huán)境隔離

    【Spring Cloud】深入探索 Nacos 注冊中心的原理,服務的注冊與發(fā)現(xiàn),服務分層模型,負載均衡策略,微服務的權重設置,環(huán)境隔離

    在微服務架構中,服務注冊中心是整個體系中的關鍵組件之一。它負責服務的注冊、發(fā)現(xiàn)和管理,為微服務之間的通信提供了基礎設施。在這方面,Nacos(Namespace Aware Clustered Object Storage)作為一種服務發(fā)現(xiàn)和配置管理系統(tǒng),提供了豐富的功能,旨在簡化微服務架構中的服務注

    2024年02月06日
    瀏覽(1451)
  • [RPC]:Feign遠程調(diào)用

    [RPC]:Feign遠程調(diào)用

    摘要:RestTemplate;Feign;遠程調(diào)用; Feign是一個簡化HTTP客戶端編寫的框架,通過聲明式方式將遠程服務調(diào)用封裝成簡單接口調(diào)用。 1.2.1 使用RestTemplate發(fā)送遠程調(diào)用代碼 要求:系統(tǒng)調(diào)用者在查詢訂單的同時,根據(jù)訂單中包含的userId查詢出用戶信息,一起返回。 1.2.1.1 項目示例

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包