feign與openfeign 微服務(wù)調(diào)用為啥用RPC框架,http不更簡單嗎?
微服務(wù)調(diào)用為啥用RPC框架,http不更簡單嗎?簡單一點,HTTP是協(xié)議,RPC是概念!RPC可以基于HTTP協(xié)議(feign)、TCP協(xié)議(netty)、RMI協(xié)議(soap)和web服務(wù)(XML-
微服務(wù)調(diào)用為啥用RPC框架,http不更簡單嗎?
簡單一點,HTTP是協(xié)議,RPC是概念!RPC可以基于HTTP協(xié)議(feign)、TCP協(xié)議(netty)、RMI協(xié)議(soap)和web服務(wù)(XML-RPC)框架實現(xiàn)。在傳輸過程中,由于序列化方法的不同,也出現(xiàn)了一些框架和協(xié)議,如Dubbo中的Dubbo協(xié)議、grpc protobuf序列化協(xié)議等。實際上,它們都是基于遠(yuǎn)程調(diào)用的概念。什么是遠(yuǎn)程呼叫?
關(guān)鍵是RPC是遠(yuǎn)程調(diào)用。遠(yuǎn)程調(diào)用是客戶端通過上述協(xié)議向服務(wù)器發(fā)送接口、參數(shù)、參數(shù)類型、方法、返回值、返回值類型等(稱為方法簽名),通知服務(wù)器要調(diào)用的接口方法。這個過程就是RPC的實現(xiàn)過程!HTTP和RPC是兩碼事
!在性能方面,HTTP本身是基于TCP協(xié)議的,屬于應(yīng)用層協(xié)議,所以HTTP協(xié)議本身在實現(xiàn)過程中會占用大量的資源(內(nèi)存、帶寬等)。在性能方面,它肯定不如直接通過TCP實現(xiàn)的RPC協(xié)議快。不管HTTP有多優(yōu)化,它絕對沒有TCP那么快!另一方面,TCP依賴于字節(jié)碼。目前常用的是將客戶端調(diào)用的接口信息以序列化的方式發(fā)送到服務(wù)器端。序列化框架包括許多內(nèi)容(Hession、protobuf、kryo等)。Kryo具有最高的序列化性能,protobuf具有序列化后最小的字節(jié)碼)。序列化后的字節(jié)碼越小,占用的帶寬越小,序列化時間越長,線程IO延遲越短,線程IO延遲越小。因此,在具體的應(yīng)用層,有很多技術(shù)可以討論。您可以根據(jù)自己的硬件能力選擇相應(yīng)的技術(shù)
!歡迎熱愛科技的人們來探索
家用電信光纖寬帶有最大TCP連接數(shù)限制嗎?
權(quán)威答案。沒有限制。
我在運營商從事網(wǎng)絡(luò)運維工作10年。我清楚地告訴您,操作員不限制TCP連接的數(shù)量。只有帶寬限制。
物理設(shè)備沒有鏈接限制。只有帶寬限制。如果帶寬已滿,則可以緩存部分帶寬。如果緩存也已滿,則只能丟棄數(shù)據(jù)包。
只要帶寬未滿,就不會受到限制。
從技術(shù)角度看,沒有限制:一般家庭用戶使用光貓上網(wǎng),光貓是ONU的一種,如OLT、bras和bras。從光貓到OLT再到bras是一個通道,即使沒有撥號,也是一個通道,用戶的TCP數(shù)據(jù)量也不會被計算在內(nèi)。Bras負(fù)責(zé)寬帶認(rèn)證和數(shù)據(jù)連接。負(fù)責(zé)帶寬控制。帶寬的控制是基于單位時間內(nèi)所有包的大小來控制轉(zhuǎn)發(fā)或丟棄。也就是說,它是根據(jù)吞吐量來控制的。
如果每個數(shù)據(jù)包都很大,幾十個TCP鏈路可能會占用整個帶寬。如果每個數(shù)據(jù)包都很小,成千上萬的TCP鏈路可能不會占用整個帶寬。因此,操作員控制TCP連接的數(shù)量是沒有意義的,他們根本不會控制TCP連接的數(shù)量
假設(shè)操作員統(tǒng)計并限制TCP連接的數(shù)量,則需要TCP解碼。對于一個吞吐量為幾百克的設(shè)備,要解碼這么多TCP數(shù)據(jù)包,我們可以想象這個設(shè)備有多大的延遲?恐怕延遲超過100毫秒。所以它根本不限制TCP連接的數(shù)量。此外,許多TCP協(xié)議在建立連接后很長時間內(nèi)不使用數(shù)據(jù)。它們只發(fā)送消息來保持連接,以防止TCP隨著時間的推移而斷開連接。如果有大量這樣的TCP連接,但不去數(shù)據(jù),空連接的數(shù)量,你還能隨意上網(wǎng)嗎???
對于那些反駁我的人,我問你,UDP協(xié)議是不連接的,怎么限制???
連接數(shù)限制在哪里?在服務(wù)器系統(tǒng)軟件和服務(wù)軟件中。
系統(tǒng):例如,XP系統(tǒng)用作服務(wù)器,tcpip.sys系統(tǒng)此驅(qū)動程序文件,默認(rèn)限制為10個鏈接,要突破,需要替換此文件,替換為Win2003版本。因為2003是一個服務(wù)系統(tǒng),最大連接數(shù)可以達到2的32次方。
服務(wù)軟件:編寫服務(wù)軟件時,由于技術(shù)水平的原因,程序員的套接字處理能力有限,因此會設(shè)置連接數(shù)。一般游戲可以支持2000多個鏈接。
突破鏈路數(shù)量的最常見技術(shù)是負(fù)載平衡。
因此,請選擇主要運營商訪問互聯(lián)網(wǎng)。中國只有兩家一流的寬帶運營商,中國電信和中國網(wǎng)通(與中國聯(lián)通合并)。
dubbo和feign區(qū)別?
1、相似性
Dubbo和feign都依賴于注冊表和負(fù)載平衡。
2、區(qū)別
1。協(xié)議
Dubbo:
支持多種傳輸協(xié)議(Dubbo、RMI、HTTP、redis等),您可以根據(jù)業(yè)務(wù)場景選擇最佳方式。非常靈活。
默認(rèn)Dubbo協(xié)議:采用netty、TCP傳輸,單點、異步、長連接,適合數(shù)據(jù)量小、并發(fā)性高且服務(wù)提供商遠(yuǎn)少于消費者的場景。
外掛:
基于HTTP傳輸協(xié)議,連接短,不適合高并發(fā)訪問。
2. 負(fù)載平衡
Dubbo:
支持四種算法(隨機、輪詢、活躍度、哈希一致性),并在算法中引入了權(quán)重的概念。
配置表單不僅支持代碼配置,還支持Dubbo控制臺的靈活動態(tài)配置。
負(fù)載平衡算法可以精確到某個服務(wù)接口的某個方法。
Feign:
僅支持n個策略:輪詢、隨機和響應(yīng)時間加權(quán)。
負(fù)載平衡算法是客戶端級的。
3. 容錯策略
Dubbo:
支持多種容錯策略:故障轉(zhuǎn)移、快速故障、廣播、強制等,還引入了重試次數(shù)、超時等配置參數(shù)
Feign:
容錯是通過融合機制實現(xiàn)的,處理方法不同。