feign與openfeign 微服務調用為啥用RPC框架,http不更簡單嗎?
微服務調用為啥用RPC框架,http不更簡單嗎?簡單一點,HTTP是協(xié)議,RPC是概念!RPC可以基于HTTP協(xié)議(feign)、TCP協(xié)議(netty)、RMI協(xié)議(soap)和web服務(XML-
微服務調用為啥用RPC框架,http不更簡單嗎?
簡單一點,HTTP是協(xié)議,RPC是概念!RPC可以基于HTTP協(xié)議(feign)、TCP協(xié)議(netty)、RMI協(xié)議(soap)和web服務(XML-RPC)框架實現(xiàn)。在傳輸過程中,由于序列化方法的不同,也出現(xiàn)了一些框架和協(xié)議,如Dubbo中的Dubbo協(xié)議、grpc protobuf序列化協(xié)議等。實際上,它們都是基于遠程調用的概念。什么是遠程呼叫?
關鍵是RPC是遠程調用。遠程調用是客戶端通過上述協(xié)議向服務器發(fā)送接口、參數、參數類型、方法、返回值、返回值類型等(稱為方法簽名),通知服務器要調用的接口方法。這個過程就是RPC的實現(xiàn)過程!HTTP和RPC是兩碼事
!在性能方面,HTTP本身是基于TCP協(xié)議的,屬于應用層協(xié)議,所以HTTP協(xié)議本身在實現(xiàn)過程中會占用大量的資源(內存、帶寬等)。在性能方面,它肯定不如直接通過TCP實現(xiàn)的RPC協(xié)議快。不管HTTP有多優(yōu)化,它絕對沒有TCP那么快!另一方面,TCP依賴于字節(jié)碼。目前常用的是將客戶端調用的接口信息以序列化的方式發(fā)送到服務器端。序列化框架包括許多內容(Hession、protobuf、kryo等)。Kryo具有最高的序列化性能,protobuf具有序列化后最小的字節(jié)碼)。序列化后的字節(jié)碼越小,占用的帶寬越小,序列化時間越長,線程IO延遲越短,線程IO延遲越小。因此,在具體的應用層,有很多技術可以討論。您可以根據自己的硬件能力選擇相應的技術
!歡迎熱愛科技的人們來探索
feign連接池配置?
連接電池配置為電池,3000 Ma電池。
數據庫連接池的作用是什么?
1. 資源重用,避免頻繁建立和關閉數據庫連接的開銷
2。更快的系統(tǒng)響應速度,直接從連接池獲取連接,更快的響應速度
3??刂瀑Y源的使用。如果不使用連接池,則每次訪問數據庫時都需要創(chuàng)建連接。這樣,系統(tǒng)的連接要求對系統(tǒng)的穩(wěn)定性影響很大,容易產生資源浪費和高負載異常。連接池可以最大限度地提高性能,并將資源利用率控制在一定水平以下。連接池可以控制連接池中的連接數,提高系統(tǒng)在大量用戶應用時的穩(wěn)定性。
通用數據庫連接池:DBCP、c3p0、Druid
1。相似之處
Dubbo和feign都依賴于注冊表和負載平衡。
2、區(qū)別
1。協(xié)議
Dubbo:
支持多種傳輸協(xié)議(Dubbo、RMI、HTTP、redis等),您可以根據業(yè)務場景選擇最佳方式。非常靈活。
默認Dubbo協(xié)議:采用netty、TCP傳輸,單點、異步、長連接,適合數據量小、并發(fā)性高且服務提供商遠少于消費者的場景。
外掛:
基于HTTP傳輸協(xié)議,連接短,不適合高并發(fā)訪問。
2. 負載平衡
Dubbo:
支持四種算法(隨機、輪詢、活躍度、哈希一致性),并在算法中引入了權重的概念。
配置表單不僅支持代碼配置,還支持Dubbo控制臺的靈活動態(tài)配置。
負載平衡算法可以精確到某個服務接口的某個方法。
Feign:
僅支持n個策略:輪詢、隨機和響應時間加權。
負載平衡算法是客戶端級的。
3. 容錯策略
Dubbo:
支持多種容錯策略:故障轉移、快速故障、廣播、強制等,還引入了重試次數、超時等配置參數
Feign:
容錯是通過融合機制實現(xiàn)的,處理方法不同。
dubbo和feign區(qū)別?
Feign可以使用最新的HTTP組件優(yōu)化此問題。默認情況下,feign使用JDK本機urlconnection發(fā)送HTTP請求。沒有連接池,但它將為每個地址維護一個長連接,即使用HTTP持久性連接。我們可以使用Apache的HTTP客戶端來代替feign原來的HTTP客戶端,從而獲得連接池、超時等性能相關的控制功能。春天的云Brixtion.SR5型版本開始支持此替換。首先,在項目中聲明apachehttp客戶機和假httpclient依賴關系