為什麼說Feign是偽RPC?

時間 2021-06-27 21:49:58

1樓:樂位元組官方

首先來解釋一下什麼是RPC和HTTP,RPC的中文意思是遠端過程呼叫,HTTP是一種應用層傳輸協議。二者不是乙個層面的東西,所以我們一般會稱呼RPC為框架,HTTP為協議,在RPC框架中可以選擇HTTP作為傳輸協議。

RPC,遠端過程呼叫可能讓人感覺到一頭霧水,無法很直觀的感受到這是個什麼東東。其實,說的簡單一點,遠端過程呼叫其實描述的是一件事兒,一件客戶端如何呼叫服務端的事兒。在這件事兒裡,包括了很多內容,例如:

序列化和反序列化協議怎麼弄,傳輸協議選什麼等等。說到這裡,把RPC稱做呼叫呼叫遠端過程是不是更合適一點。下面來簡單介紹2個常見的RPC框架吧。

1. Dubbo 中國產RPC框架

先扯一句題外話。有不少同學會把Dubbo和Spring Cloud都歸納為微服務體系下的框架,但是我認這樣表述稍微有點不妥。微服務是一種架構思想,其中涉及到的遠遠不止RPC這麼一件事兒,而Dubbo除了RPC和簡單的服務治理外,並沒有更多的可以服務於微服務的東西;而Spring Cloud被大家成為全家桶,那是因為在Spring Cloud為微服務提供了近乎完整元件(雖然SpringCloud把自己稱為搬運工,但是大家還是喜歡用全家桶來稱呼他)。

作為RPC框架,Dubbo還是很厲害的,在序列化、傳輸上都提供了豐富的選擇。我個人認為Dubbo做的比其他RPC框架好的一點是,引入了註冊中心的概念,從此開發小哥就擺脫了瘋狂配置的工作;此外,在大廠影響力的加持下,在過去的某一段時間裡,Dubbo被炒的沸沸揚揚,在國內的軟體行業中占有相當大的比重。在Dubbo預設的配置中,傳輸層並沒有使用HTTP協議,而是使用了傳統的TCP協議。

我現在負責的系統中就有使用Dubbo作為RPC框架的。

2. HttpInvoker Spring的親兒子

這個沒啥好說的了,Spring的親兒子,優勢就是在Spring體系中使用非常簡單,缺點是效率不行。從HttpInvoker的名字,我們都可以發現,在HttpInvoker的傳輸層,也是使用了HTTP協議。

3. Feign 微服務中最常見的RPC框架

題主問題中的RPC框架,說的應該就是Feign了吧。Feign是Spring Cloud全家桶中推薦使用的RPC框架,但是Feign也是使用了HTTP作為傳輸層協議的。

上文介紹了RPC,並且列舉了一些常見的RPC框架。總的來說,RPC和HTTP二者並不是乙個層面的東西,在RPC框架中可以選擇使用HTTP作為其傳輸層協議,而在微服務體系中,無論使用Feign還是使用RestTemplate,傳輸層都是基於HTTP協議進行傳輸的。

2樓:Andy

Feign是負責負載均衡的,單獨的Feign並不能實現RPC。

實現RPC首先要有服務註冊與發現中心,SpringCloud服務註冊發現中心主要有

Spring Cloud Netflix EurekaSpring Cloud ZookeeperSpring Cloud Consul

Eureka可以把連線變成介面函式。你呼叫了介面函式,函式裡面自然封裝了連線,可以遠端呼叫另乙個程式的介面。至於你的介面是tcp還是http都沒關係。

Eureka客戶端介面做的比較好。

SpringCloud本身並沒有做微服務的需求,它做的微服務框架都是整合了已經開源的微服務框架。

為什麼說不怕中醫是偽科學,就怕科學是偽真理?

肝膽之聲 概念遊戲?中醫研究生命屬性,寒熱虛實陰陽,取象比類,模擬類推,是人工智慧最早思想啟蒙 模式識別,何來不科學?陰陽五行最早的系統模型,等等, 張三瞎了 科學不是一種事實,科學是用來得出結果的工具,而不是結果本身,1 1 2,2不是科學,加法才是科學,用科學去觀察 論證 實驗 反駁,科學不排斥...

什麼是偽搖?

JoyJoeJoo 搖滾表達的是自由的精神和真實的內心,不裝不虛偽。或許搖滾和偽搖滾就好比利益是否是最終的目的。每個人都有自己的看法,真實和自由是我心中的搖滾。 輝輝輝輝 一般情況下每個搖滾歌手都有自己的搖滾定位 與流行樂有很明顯的差別 比如重金屬,朋克,哥特,工業各種。但是曾幾何時出現了這樣乙個名...

什麼是偽腐?

根本沒有偽腐,或者說,人人都有可能是偽腐。偽腐這個概念是虛假的,任何乙個腐女不能控制自己的理智就會成為偽腐,任何乙個偽腐在高潮結束認清現實後也會變成正常的腐女或者不再是腐女,偽腐這個概念只是一些自認為理智的腐女造出來開脫責任的標籤,開脫保持自己理智的責任,開脫勸說其他圈內人士保持理智的責任。 劉二呆...