Ribbon、Feign和OpenFeign的區別來了

Ribbon

隨著服務注冊中心的安裝完成后,客戶端的負載均衡和服務的調用又是我們關注的話題。Ribbon可以實現客戶端的負載均衡,

負載均衡LB

Load Balance(負載均衡):簡單的說就是將用戶的請求平攤的分配到多個服務器上,從而達到系統的HA(高可用)。常見的負載均衡工具有nginx、LVS,硬件上F5等

集中式LB

即在服務的消費方和提供方之間使用獨立的LB設施,可以是硬件F5、也可以是軟件nginx、LVS等,提供該設施將請求通過某種策略發送給服務提供方

進程內LB

將LB邏輯集成到消費方,消費方從服務注冊中心查找服務列表,然后獲取服務地址根據某種規則選出合適的服務器。Ribbon就是進程內LB,它只是一個類庫,集成于消費方進程,消費者通過它來獲取到服務提供方的地址

SpringCloud Ribbon是基于Netflix Ribbon實現的一套客戶端的負載均衡工具,主要功能是提供了客戶端的軟件負載均衡算法和服務調用。Ribbon客戶端組件提供了一系列完善的配置項例如連接超時、重試等。Ribbon目前也進入了維護模式

Ribbon 是 Netflix開源的基于HTTP和TCP等協議負載均衡組件

Ribbon 可以用來做客戶端負載均衡,調用注冊中心的服務

Ribbon的使用需要代碼里手動調用目標服務,請參考官方示例:https://github.com/Netflix/ribbon

Nginx是服務器端的負載均衡,客戶端的所有請求都會交給nginx,由nginx分發到各個服務器上。即負載均衡是由服務端實現的

Ribbon是本地的負載均衡,在調用微服務接口的時候,會在注冊中心上獲取注冊服務信息列表之后緩存到JVM本地,從而在本地實現RPC遠程服務調用的技術

?

?

Feign

Feign是Spring Cloud組件中的一個輕量級RESTfulHTTP服務客戶端

Feign內置了Ribbon,用來做客戶端負載均衡,去調用服務注冊中心的服務。

Feign的使用方式是:使用Feign的注解定義接口,調用這個接口,就可以調用服務注冊中心的服務

Feign支持的注解和用法請參考官方文檔:https://github.com/OpenFeign/feign

Feign本身不支持Spring MVC的注解,它有一套自己的注解

Feign是Spring Cloud組件中的一個輕量級Restful的HTTP服務客戶端,Feign內置了Ribbon,用來做客戶端的負載均衡,去調用服務注冊中心的服務。Feign的使用方式是:使用Feign的注解接口,調用這個接口,就可以調用服務注冊中心的服務

?

?

OpenFeign

而OpenFeign則是可以讓我們像調用Dubbo接口一樣,實現面向接口編程

OpenFeign是Spring Cloud 在Feign的基礎上支持了Spring MVC的注解,如@RequesMapping等等。
OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,
并通過動態代理的方式產生實現類,實現類中做負載均衡并調用其他服務。

OpenFeign是Spring Cloud在Feign的基礎上支持了SpringMVC的注解,如@RequestMapping等。OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口,并通過動態代理產生實現類,實現類中做負載均衡并調用其他服務

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/270613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270613.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開發插件:分享10個非常實用IDEA插件,值得看一看!

IDEA是Java開發者必備的開發神器,今天小編給大家分享10個十分實用的插件,希望能對大家的實際開發工作提供幫助! 1. Jump To Line 快速導航插件 IntelliJ IDEA 調試器中的許多導航操作可讓您在所需位置設置斷點,但有時您只需單擊即…

【bzoj1911】 Apio2010—特別行動隊

http://www.lydsy.com/JudgeOnline/problem.php?id1911 (題目鏈接) 題意 給出一個序列,將序列分成連續的幾段,每段的價值為a*s*sb*sc,其中a,b,c為給定常數,s為這一段中所有數之和。求最大價值和。 Solution 斜率優化。 dp方程&am…

python中的所有功能_python – 是否可以列出模塊中的所有功能?

參見英文答案 >listing all functions in a python module 12個答案 我以這種格式定義了一個.py文件:foo.pydef foo1(): passdef foo2(): passdef foo3(): pass我從另一個文件導入它:…

網絡知識:七類網線相關知識介紹

目錄 一、什么是七類網線? 二、7類線與超6類線的區別 三、7類線用什么水晶頭?如何制作水晶頭? 四、七類網線的應用場景 今天給大家介紹一下七類網線相關的知識,希望對大家能有所幫助! 一、什么是七類網線? …

Swift3.0語言教程獲取C字符串

Swift3.0語言教程獲取C字符串 Swift3.0語言教程獲取C字符串,為了讓Swift和C語言可以實現很好的交互,開發者可以使用NSString的cString(using:)方法在指定編碼格式后,獲取C字符串,其語法形式如下: func cString(using: …

rdf mysql持久化l_Jena 利用數據庫保存,持久化本體

1 Jena的數據庫接口Jena提供了將RDF數據存入關系數據庫的接口,Model、Resource、Query等接口可以用于訪問和維護數據庫里的RDF數據。在處理數據時,應用程序不必直接操作數據(而是通過Jena的API),也不必知道數據庫的模式。Jena提供了支持MySQL…

效率工具:分享7款實用的任務管理軟件,值得收藏!

今天小編給大家分享10款實用的任務管理工具,歡迎推薦給身邊的朋友,選擇一款適合自己的利器吧。1.Microsoft To-Do 微軟推出的一款效率管理神器Microsoft To-Do微軟推出的有款簡介并且實用的待辦列表效率軟件,實用它可以輕松規劃您的每一天。無…

洛谷 2921 記憶化搜索 tarjan 基環外向樹

洛谷 2921 記憶化搜索 tarjan 傳送門 (https://www.luogu.org/problem/show?pid2921) 做這題的經歷有點玄學,,起因是某個random題的同學突然發現了一個0提交0通過的題目,然后就引發了整個機房的興趣,,然后&#xff0c…

單片機位尋址舉例_單片機學習:51單片機尋址方式詳解

51單片機是對所有兼容Intel 8031指令系統的單片機的統稱。該系列單片機的始祖是Intel 8031單片機,后來隨著Flash rom 技術的發展,8031單片機取得了長足的發展,成為了應用最廣泛的8位單片機之一。51單片機是基礎入門的一個單片機,并…

網絡知識:LAN、WAN、WLAN相關知識介紹

今天給大家介紹一下LAN、WAN、WLAN相關知識,希望對大家能有所幫助! 一、什么是lan、wan和wlan口的區別? 很多朋友對lan口與wan及wlan的用途了解不清楚,尤其是在做路由器橋接時,wan口與lan的連接與設置容易弄混。 1、LA…

jps

jps位于jdk的bin目錄下,其作用是顯示當前系統的java進程情況,及其id號。 jps相當于Solaris進程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用應用程序名來查找JVM實例。因此,它查找所有的Java應用程序&#xff0…

SQL

修改表的列名: exec sp_rename testtable.id,ID,column 根據傳入時間刪除同一天的記錄 1、 delete InventoryMovementsTemp where DateDiff(DD,TrnDate ,1/11/2013)0 2、 where convert(varchar(10),TrnDate,126)’’213-01-10 2、 where trndate>’2013-01-10’…

后端技術:mybatis中resultMap用法示例筆記

1、概念resultMap屬于mybatis返回操作結果的一個標簽,可以用來映射select查詢出來結果的集合,主要作用是將實體類中的字段與數據庫表中的字段進行關聯映射。并且支持復雜的返回結果類型。2、使用場景2.1 屬性映射當數據庫字段和項目中的實體屬性不一致時…

將mysql服務移除_怎么將mysql服務移除?

將mysql服務移除的方法:1、進入“控制面板->程序->卸載或更改程序”,刪除mysql程序;2、刪除MySQL文件夾下的【my.ini】文件,如果備份好,可以直接將文件夾全部刪除 ;3、進入注冊表,將相關M…

程序人生:程序員的9個層次,你屬于哪個層次

目錄 第一級:糟糕的程序員 第二級:菜鳥級程序員 第三級:碼農 第四級:普通程序員 第五級:中級程序員 第六級:骨干程序員 第八級:著名程序員 第九級:祖師爺級別 . 第一級:糟…

lsof -i:port 的作用

lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件。如TC和UDP等,系統在后臺都為該應用程序分…

SpringBoot定時任務實現的兩種方式介紹

今天給大家介紹SpringBoot定時任務實現的幾種方式,希望對大家能有所幫助!1、SpringTask 用法框架介紹:SpringTask是Spring自帶的輕量級定時任務工具,相比于Quartz使用更加簡單方便,并且不需要不需要引入其他依賴即可使…

mvc調用mysql存儲過程_使用.NET MVC +EF調用oracle的存儲過程

題記:需求如題,在網上搜索了一下,沒有特別貼合我需求的資料,只好自己摸索,東拼西湊了解了一點東西慢慢嘗試做了出來。難點:.NET是微軟產品,主要支持Sql Server數據庫,對于Oracle的數…

Oracle12c:安裝后新建用戶及其默認表空間,并創建表測試

環境:操作系統:Windows Server2008 R2 X64 Oracle版本:12c 如何安裝? -- oracle 12c在oracle linux 6.6 x64上的安裝 -- Windows x64位下完美安裝winx64_oracle_12c_database 如何使用DataBase Cofiguration Assistant 創建數據庫…

數據庫:Redis相關知識梳理

1、數據類型string(字符串):最基本的k-v存儲 ,適合驗證碼、配置信息等list(列表):適合有序/固定的列表。比如行政區、字典表、消息隊列等。set(集合):支持交集…