參考SpringCloud官網(wǎng)第16、17章
16. Client Side Load Balancer: Ribbon
Ribbon是一個客戶端的負載均衡器乍构,它提供對大量的HTTP和TCP客戶端的訪問控制周崭。Feign也是用的Ribbon柳譬,所以在這一章你也可以用@FeignClient
Ribbon的一個核心概念是命名的客戶端。每個負載均衡器都是這個組件的全體的一部分续镇,它們一起工作來連接到服務器美澳,并且它們?nèi)w都有一個給定的名字。
Spring Cloud用RibbonClientConfiguration在ApplicationContext中創(chuàng)建一個新的全體摸航,它包含一個ILoadBalancer制跟、一個RestClient和一個ServerListFilter
16.1 How to Include Ribbon
如果想學習Java工程化、高性能及分布式酱虎、深入淺出雨膨。微服務、Spring逢净,MyBatis哥放,Netty源碼分析的朋友可以加我的Java高級交流:854630135,群里有阿里大牛直播講解技術(shù)爹土,以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費分享給大家甥雕。
16.2 Customizing the Ribbon Client
Spring Cloud可以讓你自己完全控制Ribbon客戶端,通過用@RibbonClient來聲明額外的配置胀茵。例如
在這個例子中社露,這個客戶端由RibbonClientConfiguration和FooConfiguration一起組成。
注意:本例中琼娘,F(xiàn)ooConfiguration必須用@Configuration注解標注峭弟,但是它不應該在主Application Context的組件掃描之中,否則它將被所有的Ribbon客戶端共享脱拼。如果你用@ComponentScan(或者@SpringBootApplication)瞒瘸,那么你應該采取措施來避免它被包含到掃描的范圍中。
16.3 Customizing default for all Ribbon Clients
通過@RibbonClients注解可以為所有的Ribbon客戶端提供一個默認的配置熄浓。例如
16.6 Example: How to Use Ribbon Without Eureka
Eureka提供了一種抽象的發(fā)現(xiàn)遠程服務的便捷的方式情臭,這樣你就不必在客戶端代碼中硬編碼服務端的URL,但是如果你不用它赌蔑,那么Ribbon和Feign也是經(jīng)得起考驗的俯在。假設,你沒有使用Eureka娃惯,并且你用@FeignClient聲明了一個"stores"服務跷乐,這個時候Ribbon Client默認生成一個配置的服務列表,當然你也可以提供下面這樣的配置:
16.7 Example: Disable Eureka use in Ribbon
說了這么多趾浅,那究竟怎么用呢愕提?下面看示例演示
在這個示例中有三個角色:注冊中心馒稍、服務提供方、服務消費方
服務提供方是eureka-demo-client浅侨,消費方是ribbon-demo筷黔,下面看下消費方是如何配置的
首先是pom.xml,這個沒啥說的
其次是application.yml仗颈,也沒什么特別的
最后是啟動類
還有調(diào)用的類
先啟動eureka-demo-server佛舱,然后再啟動另外兩個工程
瀏覽器訪問消費方地址
哈哈哈,訪問成功0ぞ觥G胱妗!
17. Declarative REST Client: Feign
Feign是一個聲明式的Web服務客戶端脖祈,它使得訪問Web服務變得更容易肆捕。為了使用Feign,需要創(chuàng)建接口并且使用注解標注它盖高。使用Feign的時候慎陵,Spring Cloud集成Ribbon和Eureka來提供一個具有負載均衡能力的HTTP客戶端。
17.1 How to Include Feign
@FeignClient注解的value值是一個任意客戶端的名字喻奥,這個名字被用于創(chuàng)建Ribbon負載均衡器席纽。你還可以使用url屬性來指定一個url。
Ribbon客戶端想要發(fā)現(xiàn)"stores"這個服務的真實的物理地址撞蚕。如果你的應用中使用的是Eureka润梯,那么它將通過Eureka服務注冊類解析。
17.2 Overriding Feign Defaults
如果想學習Java工程化甥厦、高性能及分布式纺铭、深入淺出。微服務刀疙、Spring舶赔,MyBatis,Netty源碼分析的朋友可以加我的Java高級交流:854630135谦秧,群里有阿里大牛直播講解技術(shù)竟纳,以及Java大型互聯(lián)網(wǎng)技術(shù)的視頻免費分享給大家。
接下來油够,用Feign演示如何調(diào)用
再新建一個工程feign-demo
歡迎工作一到八年的Java工程師朋友們加入Java高級交流:854630135
本群提供免費的學習指導 架構(gòu)資料 以及免費的解答
不懂得問題都可以在本群提出來 之后還會有直播平臺和講師直接交流噢