精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

微服務實戰:服務遠程調用組件 Spring Cloud Feign 架構原理及用法,實戰講解!

開發 架構
Feign 是一個輕量級的 HTTP 客戶端框架,使用者能夠以一種更簡潔、易于維護的方式來實現 HTTP 服務請求。同時在 Spring Cloud 生態中,Feign 整合了 Ribbon,可以自動實現客戶端負載均衡功能。

一、背景介紹

今天通過這篇文章,結合之前的知識,我們一起來了解一下 Spring Cloud 技術體系中另一個最核心的組件之一 Fegin。

二、Fegin 簡介

Spring Cloud Feign 是一套基于 Netflix Feign 實現的 HTTP 客戶端工具,主要作用是簡化 HTTP 客戶端的開發和維護工作。

傳統的模式下,當我們要對某個接口發起 HTTP 請求時,首先會封裝 HTTP 請求報文,然后發起請求,最后處理響應結果。例如之前介紹過的RestTemplate工具。

其實這三步驟,可以編寫一個動態代理類來幫助我們以一種更簡潔、易于維護的方式完成 HTTP 請求的調用。Fegin 的實現邏輯大體就是這種思路,我們只需要創建一個接口并添加@FeignClient注解,然后配置相關的請求方法既可完成 HTTP 請求工作,剩下的就交給代理類來完成。不過底層,使用的依然是Apache HttpClientOkHttp發送請求。

與原生 Feign 組件相比,Spring Cloud Feign 還擴展了對 Spring MVC 注解的支持,同時還整合了 Ribbon 提供客戶端的負載均衡實現,以及 Hystrix 服務熔斷器。

下面我們通過具體的例子,看看如何使用 Feign 來實現 HTTP 請求。

三、方案實踐

與之前介紹 Ribbon 類似,依次創建eureka-servereureka-provider-1eureka-provider-2工程,就不重復粘貼了。

根據eureka-consumer復制一個服務消費者工程,命名為eureka-consumer-feign,并在pom.xml中引入 Feign 依賴包,示例如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.4.RELEASE</version>
    <relativePath/>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Edgware.SR3</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

然后,創建一個服務啟動類并添加@EnableFeignClients注解,表示開啟掃描 Spring Cloud Feign 客戶端。

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {
    
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

接著,創建一個接口并使用@FeignClient注解指定要調用的目標服務實例名稱,接口中定義的各個方法使用 Spring MVC 的注解就可以指定要調用的目標服務接口地址,示例如下:

/**
 * 配置要調用的服務實例名稱
 */
@FeignClient(name = "eureka-provider")
public interface RpcService {

    /**
     * 要調用的目標服務接口地址
     * @return
     */
    @RequestMapping(value = "/hello")
    String hello();
}

最后,創建一個controller,通過定義的 feign 客戶端來調用服務提供方的接口。

@RestController
public class HelloController {

    @Autowired
    private RpcService rpcService;

    /**
     * 發起遠程調用測試
     * @return
     */
    @GetMapping("/rpc")
    public String rpc() {
        String result = rpcService.hello();
        return "發起遠程調用,收到返回的信息:" +  result;
    }
}

完成以上工程之后,依次將eureka-servereureka-provider-1eureka-provider-2eureka-consumer-feign服務啟動起來。

然后在瀏覽器上多次訪問http://localhost:9003/rpc,可以得到類似于如下內容。

圖片圖片

可以清晰的看到,客戶端以輪訓的方式調用目標接口。至此,最簡單的一個服務注冊與調用的例子就完成了。

四、Fegin 傳輸文件

默認情況下,Fegin 可以滿足絕大部分的 HTTP 請求場景。

但是在某些場景下,比如在服務之間實現文件遠程上傳,如何實現呢?

實際上,Spring Cloud Feign 并不支持直接傳文件,但可以通過引入 Feign 的擴展包來實現。

具體實現例子如下。

4.1服務提供方(接收文件)

服務提供方的實現比較簡單,按照 Spring MVC 的正常實現即可,文件上傳接口示例如下:

@RestController
publicclass HelloController {

    privatestaticfinal String SRC_PATH = "/Users/demo/file/";

    @PostMapping("/fileUpload")
    public String fileUpload(@RequestParam("file") MultipartFile file,
                             @RequestParam("prefixName") String prefixName) throws IOException {
        // 獲取上傳文件的文件名
        String fileName = file.getOriginalFilename();
        String absolutePath = SRC_PATH + prefixName + "_" + fileName;
        // 將文件保存到磁盤
        file.transferTo(new File(absolutePath));
        return"Upload file success:" + prefixName + "_" + fileName;
    }
}

4.2服務消費方(發送文件)

在服務消費方,由于需要利用 Feign 客戶端來上傳文件,需要在pom.xml文件引入支持文件上傳的依賴包,內容如下。

<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form</artifactId>
    <version>3.0.3</version>
</dependency>
<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form-spring</artifactId>
    <version>3.0.3</version>
</dependency>

接著,定義一個文件上傳的 Feign 客戶端接口,示例如下。

@FeignClient(name = "eureka-provider", configuration = FeignSupportConfig.class)
public interface RpcUploadService {


    @PostMapping(value = "/fileUpload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    String handleFileUpload(@RequestPart(value = "file") MultipartFile file,
                            @RequestParam("prefixName") String prefixName);

}

然后,為@FeignClient注解類創建所需的編碼器,也就是上文所配置的FeignSupportConfig類,不然調用的時候會報錯。

@Configuration
public class FeignSupportConfig {

    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;


    /**
     * 微服務傳輸文件用
     * @return
     */
    @Bean
    public Encoder feignFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
}

最后,創建一個controller,通過上文定義的 feign 客戶端來上傳文件到服務端。

@RestController
public class HelloController {

    @Autowired
    private RpcUploadService rpcUploadService;

    @PostMapping("/rpcUpload")
    public String rpcUpload(@RequestParam("file") MultipartFile file) throws IOException {
        String result = rpcUploadService.handleFileUpload(file,"feign");
        return "通過 feign 發起文件遠程上傳調用,收到返回的信息:" +  result;
    }
}

完成以上操作之后,依次將eureka-servereureka-provider-1eureka-provider-2eureka-consumer-feign服務啟動起來。

用 postman 調用客戶端接口上傳文件,不出意外的話,會看到類似如下的返回信息。

圖片圖片

可以清晰的看到,文件遠程上傳成功。

五、小結

最后總結一下,Feign 是一個輕量級的 HTTP 客戶端框架,使用者能夠以一種更簡潔、易于維護的方式來實現 HTTP 服務請求。同時在 Spring Cloud 生態中,Feign 整合了 Ribbon,可以自動實現客戶端負載均衡功能。

另外,Feign 還整合了 Hystrix 來實現服務的容錯保護,在下一篇文章中我們會對其進行介紹。

六、參考

  1. https://www.didispace.com/spring-cloud/spring-cloud-starter-dalston-2-4.html
責任編輯:武曉燕 來源: 潘志的技術筆記
相關推薦

2025-03-13 00:55:00

微服務架構系統

2025-03-04 02:20:00

EurekaNetflixSpring

2017-09-05 14:05:11

微服務spring clou路由

2017-08-10 11:15:05

Spring Clou微服務架構

2016-08-25 21:12:31

微服務架構發布

2016-08-25 20:55:19

微服務架構發布

2021-05-14 09:15:32

SpringCloud微服務日志

2021-03-09 09:33:42

網關授權微服務

2018-03-13 16:42:26

分布式服務跟蹤

2017-06-26 09:06:10

Spring Clou微服務架構

2018-04-16 14:56:56

微服務架構分布式服務

2017-09-04 16:15:44

服務網關架構

2021-01-28 10:10:51

微服務后端SpringCloud

2017-07-03 09:50:07

Spring Clou微服務架構

2017-08-09 15:50:47

Spring Clou微服務架構

2022-04-09 14:45:02

微服務常見概念Spring

2021-06-09 09:42:50

SpringCloud微服務灰度發布

2021-08-02 09:27:02

微服務接口場景

2021-04-22 09:31:58

服務器微服務配置

2017-07-04 17:35:46

微服務架構Spring Clou
點贊
收藏

51CTO技術棧公眾號

国产成人小视频在线观看| 日韩精品一区二区在线| 一区二区不卡视频| 国产视频在线观看视频| 一区二区三区四区五区精品视频| 亚洲免费精彩视频| 成人性生交视频免费观看| 黄色的视频在线观看| 91网址在线看| 亚洲最大av网站| 国产成人一级片| 亚洲一区二区三区| 日韩电影在线观看永久视频免费网站| 9l视频白拍9色9l视频| 欧美亚洲天堂| 国产精品水嫩水嫩| 精品视频一区二区三区四区| 91极品身材尤物theporn| 99国产精品| 久热精品视频在线| xxx在线播放| 精品无人区一区二区| 欧美精品日韩精品| 97在线播放视频| 国产极品人妖在线观看| 国产欧美一区二区三区在线老狼| 国产精品久久亚洲| 国产乱淫片视频| 日韩高清国产一区在线| 91精品国产91久久久久久最新 | 免费观看亚洲视频大全| 欧美综合久久久| 91传媒久久久| 黄色aa久久| 亚洲一区二区三区国产| 五月天在线免费视频| av午夜在线| 91免费看片在线观看| 国产精品区一区二区三含羞草| 在线观看毛片视频| 日韩中文字幕区一区有砖一区| 欧美交受高潮1| 欧美黄色免费看| 亚洲久久久久| 伦伦影院午夜日韩欧美限制| 国产suv精品一区二区68| 欧美呦呦网站| 揄拍成人国产精品视频| 亚洲午夜久久久久久久国产| 亚洲v天堂v手机在线| 亚洲国内精品视频| 国产成人精品无码片区在线| 97精品久久| 精品国产91乱码一区二区三区| 伊人五月天婷婷| 涩爱av色老久久精品偷偷鲁| 在线成人免费视频| 中文字幕资源在线观看| 91视频亚洲| 日韩欧美一区二区久久婷婷| aaaaaaaa毛片| 欧美国产亚洲精品| 精品久久久久香蕉网| 91人人澡人人爽| 精品国产18久久久久久洗澡| 日韩国产高清视频在线| 国产在线观看无码免费视频| 综合色就爱涩涩涩综合婷婷| 亚洲视频自拍偷拍| 日本黄色录像视频| 欧美ab在线视频| 欧美日韩福利视频| 91在线视频在线观看| 日韩国产高清影视| 91精品综合视频| 成人无码一区二区三区| 91香蕉视频mp4| 亚洲韩国在线| 污视频免费在线观看| 精品magnet| 日本新janpanese乱熟| 婷婷久久免费视频| 欧美精品一区二区三区视频| 37p粉嫩大胆色噜噜噜| 日韩国产在线| 欧美激情第1页| 在线视频一区二区三区四区| 久久国产精品72免费观看| 波多野结衣精品久久| 日韩精品一二| 最新日韩av在线| 丁香花在线影院观看在线播放| 综合毛片免费视频| 正在播放亚洲一区| 日本黄色录像片| 欧美美女视频| 欧美极品少妇与黑人| 国产精品尤物视频| 国产69精品一区二区亚洲孕妇| 免费av在线一区二区| 精品自拍一区| 欧美日韩精品在线播放| 蜜臀一区二区三区精品免费视频 | 欧美精品久久99| www.男人天堂| 久久久久国产精品| 国产成人免费av电影| 精品国产一级片| 久久久久久久免费视频了| 日韩人妻一区二区三区蜜桃视频| 欧美大片免费观看网址| 欧美不卡一二三| 欧美 变态 另类 人妖| 五月综合激情| 国产精品国产三级国产aⅴ9色| 99在线精品视频免费观看20| 97精品国产97久久久久久久久久久久 | 精品99在线视频| 老司机亚洲精品一区二区| 亚洲视频在线观看网站| 四虎成人精品永久免费av| 久久精品国产99| 日韩精品在在线一区二区中文| 四季久久免费一区二区三区四区| 欧美精品久久99| 国产在视频线精品视频| 日韩中文字幕1| 麻豆av一区| 国产在线美女| 精品粉嫩aⅴ一区二区三区四区| 老熟妇高潮一区二区三区| 美女视频第一区二区三区免费观看网站| 国产在线一区二区三区四区| 免费电影网站在线视频观看福利| 欧美精品v国产精品v日韩精品| 日韩av片在线免费观看| 久久蜜桃精品| 青青成人在线| 深夜成人福利| 精品性高朝久久久久久久| 国产午夜精品无码| 国产成人综合自拍| 国产一级大片免费看| 精品三级国产| 色综合久综合久久综合久鬼88| 国产精品视频一区二区三区,| 中文字幕av一区二区三区高| 视色视频在线观看| 色综合天天综合网中文字幕| 国产精品老女人视频| 国产亚洲依依| 黑人巨大精品欧美一区二区一视频 | 色播视频在线播放| 成人h版在线观看| 少妇人妻大乳在线视频| 老牛精品亚洲成av人片| 91精品国产99久久久久久| 日韩在线免费看| 色婷婷久久综合| 一级黄色片网址| 久久爱www久久做| 天天干天天操天天干天天操| 高清久久精品| 日韩在线观看免费| 99在线精品视频免费观看软件| 一区二区三区成人| 欧类av怡春院| 日韩中文字幕1| 久久久成人精品一区二区三区 | 蜜臀av在线播放一区二区三区| 亚洲欧洲日夜超级视频| 精品久久国产一区| 69影院欧美专区视频| 国产三级视频在线看| 欧美日韩国产天堂| 免费一级a毛片夜夜看 | 欧美aaa在线| 裸体裸乳免费看| 精品综合久久88少妇激情| 国产成人精品视频在线| 成人在线网址| 亚洲欧美日韩直播| 11024精品一区二区三区日韩| 一区二区三区四区不卡视频| 91精品人妻一区二区| 久久草av在线| 3d动漫一区二区三区| 残酷重口调教一区二区| 国产69精品久久久久9999apgf| 92国产精品| 不用播放器成人网| 免费在线超碰| 91精选在线观看| 日韩精品久久久久久免费| 亚洲欧洲日韩在线| 人人妻人人藻人人爽欧美一区| 国产在线麻豆精品观看| 久久成人免费观看| 亚洲激情中文| 日本精品一区二区三区高清 久久| 国产日韩欧美中文在线| 欧美在线不卡区| 曰本三级在线| 在线亚洲国产精品网| 日本高清视频网站| 欧美欧美午夜aⅴ在线观看| 日本少妇激情舌吻| 亚洲欧洲日本在线| 无码少妇一区二区| www成人在线观看| 丰满饥渴老女人hd| 美国欧美日韩国产在线播放| 男人揉女人奶房视频60分| 伊人色**天天综合婷婷| 色噜噜狠狠色综合网| 国产一级成人av| 亚洲va男人天堂| 韩国成人在线| 青青草一区二区| 91福利在线尤物| 欧美成人一区在线| 日本高清视频在线观看| 亚洲性xxxx| 欧美成熟毛茸茸| 亚洲国产古装精品网站| 国产黄色免费大片| 欧美日韩视频在线第一区 | 国产精品第72页| 亚洲天堂福利av| 欧美日韩生活片| 欧美激情一二三区| 女人十八毛片嫩草av| 久久久青草青青国产亚洲免观| 中国黄色a级片| 91在线精品一区二区三区| 在线看黄色的网站| 成人丝袜18视频在线观看| 又大又长粗又爽又黄少妇视频| 国产一区二区三区四区五区美女| 国产精品一区二区小说| 男女视频一区二区| 亚洲国产精品三区| 美女精品一区二区| 国产精品久久久毛片| 免费美女久久99| 日韩大片一区二区| 激情综合网最新| 中文字幕第22页| 国产又黄又大久久| 国产成人av片| 成人av一区二区三区| 亚洲av成人片色在线观看高潮| av电影在线观看不卡| 亚洲熟妇一区二区三区| 久久久精品欧美丰满| 色综合99久久久无码国产精品| 国产精品嫩草影院com| 日韩一区二区三区四区视频| 亚洲欧美自拍偷拍色图| 欧洲猛交xxxx乱大交3| 亚洲小说欧美激情另类| 91精品国产乱码在线观看| 欧美日韩另类字幕中文| 天天操天天操天天操天天| 在线观看不卡一区| 一区二区三区精| 日韩欧美的一区二区| 天堂中文在线看| 亚洲天堂第一页| 日本在线人成| 欧美极品少妇xxxxⅹ喷水 | 亚洲一区二区三区久久 | 日韩高清av在线| 国产youjizz在线| 最近2019年中文视频免费在线观看| 老司机精品影院| 国模精品视频一区二区| 在线最新版中文在线| 国产精品一区二区女厕厕| 欧美电影在线观看一区| 久久久7777| 久久久久久久久国产一区| 免费毛片网站在线观看| 日本不卡高清视频| 麻豆传媒在线看| 久久精品亚洲精品国产欧美kt∨| 97在线观看免费高| 黑丝美女久久久| 国产又粗又猛又爽又黄91| 亚洲国产精品99| 免费观看在线黄色网| 97av在线视频免费播放| 国产精品1区在线| 久久国产精品久久精品国产| 日韩免费视频| 性高湖久久久久久久久aaaaa| 日本大胆欧美人术艺术动态| 在线播放第一页| 日本一区二区三区免费乱视频| 欧美日韩精品在线观看视频| 色狠狠av一区二区三区| www日本在线| 最近更新的2019中文字幕| 成人ssswww在线播放| 91日韩在线视频| 国产成人ay| 成人免费观看在线| 蜜臀av一区二区| 黄色网址在线视频| 亚洲欧美日韩人成在线播放| 国产午夜麻豆影院在线观看| 精品国产乱码久久久久久浪潮 | 精品久久精品| 乱妇乱女熟妇熟女网站| 国产成人在线看| 99成人在线观看| 91福利在线导航| 五月婷婷六月色| 九九热精品视频国产| aaaa欧美| 日韩黄色影视| 国产欧美一级| 国产精久久久久| 亚洲精品国产品国语在线app| 最近日韩免费视频| 亚洲欧洲一区二区三区在线观看| 国产三线在线| 成人av片网址| 综合久久一区| 伊人五月天婷婷| 亚洲日本欧美天堂| 国产情侣免费视频| 亚洲视频axxx| 综合毛片免费视频| 蜜桃传媒视频麻豆一区| 国产精品hd| 成人欧美精品一区二区| 伊人婷婷欧美激情| 国产喷水吹潮视频www| 久久精品电影一区二区| 久久av影院| 自拍视频一区二区三区| 狠狠色丁香久久婷婷综合丁香| 萌白酱视频在线| 欧美二区三区的天堂| 免费日本一区二区三区视频| 成人精品一区二区三区| 91精品二区| 久久综合桃花网| 亚洲精品成人a在线观看| www.国产精品视频| 久久久久成人精品| 青青视频一区二区| 熟女性饥渴一区二区三区| 久久精品无码一区二区三区| 激情网站在线观看| 日韩在线一区二区三区免费视频| 日韩黄色三级在线观看| 欧美做受777cos| 成人手机电影网| 一区二区三区在线观看av| 亚洲图片制服诱惑| 不卡一区视频| 免费看毛片的网址| 91社区在线播放| 一卡二卡三卡在线| 欧美精品日韩三级| 成人另类视频| 69堂免费视频| 久久亚洲影视婷婷| 91精品国产乱码久久久| 精品中文字幕乱| 欧美人与动xxxxz0oz| 丁香婷婷激情网| 亚洲精品日韩专区silk| 蜜桃视频污在线观看| 国产经典一区二区| 亚洲国产不卡| 三级黄色片网站| 欧美人伦禁忌dvd放荡欲情| 毛片网站在线看| 日韩不卡av| 盗摄精品av一区二区三区| www五月天com| 欧美丰满少妇xxxxx做受| 香蕉久久精品日日躁夜夜躁| av免费一区二区| 午夜a成v人精品| 日本综合在线| 精品日韩欧美| 精品一区二区三区香蕉蜜桃| 国产精品免费av一区二区| 中文字幕av日韩| 久久久久久毛片免费看| 一本色道久久亚洲综合精品蜜桃| 性做久久久久久免费观看| 91在线视频免费看| 国产一区二区三区无遮挡| 久久国产生活片100| av黄色在线看|