webservice接口開發(fā)實(shí)例 微服務(wù)調(diào)用為什么用RPC框架,http不更簡單嗎?
微服務(wù)調(diào)用為什么用RPC框架,http不更簡單嗎?簡單點(diǎn),HTTP是協(xié)議,RPC是概念!實(shí)現(xiàn)RPC可以基于HTTP協(xié)議(Feign),TCP協(xié)議(Netty),RMI協(xié)議(Soap),WebServi
微服務(wù)調(diào)用為什么用RPC框架,http不更簡單嗎?
簡單點(diǎn),HTTP是協(xié)議,RPC是概念!實(shí)現(xiàn)RPC可以基于HTTP協(xié)議(Feign),TCP協(xié)議(Netty),RMI協(xié)議(Soap),WebService(XML—RPC)框架。傳輸過程中,也因?yàn)樾蛄谢绞降牟煌?,又有一些框架和協(xié)議,比如Dubbo中的Dubbo協(xié)議,gRpc—Protobuf序列化協(xié)議等等。其實(shí),都是基于遠(yuǎn)程調(diào)用的概念,何為遠(yuǎn)程調(diào)用?
重點(diǎn)是,RPC就是遠(yuǎn)程調(diào)用,遠(yuǎn)程調(diào)用就是客戶端把調(diào)用的接口,參數(shù),參數(shù)類型,方法,返回值,返回值類型等(這些稱為方法簽名),通過如上的協(xié)議,發(fā)送給服務(wù)端,告知服務(wù)端需要調(diào)用的接口方法,這個(gè)過程就是RPC的實(shí)現(xiàn)過程!HTTP和RPC是不同層面的兩個(gè)東西!
性能方面,HTTP本身是基于TCP協(xié)議的,屬于應(yīng)用層協(xié)議,所以HTTP協(xié)議本身在實(shí)現(xiàn)過程中就會(huì)占用大量的資源(內(nèi)存,帶寬等),性能上肯定沒有通過TCP直接實(shí)現(xiàn)RPC協(xié)議快,不管HTTP如何優(yōu)化肯定的是不如TCP的!而TCP則是依靠字節(jié)碼,現(xiàn)在普遍采用的是將客戶端調(diào)用的接口信息,序列化的方式發(fā)送給服務(wù)端,序列化框架又包含很多(Hession,Protobuf,Kryo等等,序列化性能最高的是Kryo,序列化后字節(jié)碼最小的是Protobuf),序列化后的字節(jié)碼越小,占用帶寬越少,序列化時(shí)間越短,線程IO等待時(shí)間就會(huì)越小。所以,在具體應(yīng)用層面有很多可探討的技術(shù),可以根據(jù)自己的硬件能力來選擇相應(yīng)的技術(shù)就可以了!
歡迎熱愛技術(shù)的人來探討!
后端開發(fā)完接口才給出接口文檔,合理嗎?你怎么看?
一個(gè)非常好的問題,我是工作多年的Web應(yīng)用架構(gòu)師,來回答一下這個(gè)問題。歡迎關(guān)注我,了解更多IT專業(yè)知識(shí)。
后端給出接口文檔太晚,也合理也不合理,要看具體情況,總有解決方法,我來說一下我的觀點(diǎn)。
不合理:成熟的技術(shù)團(tuán)隊(duì),重視功能設(shè)計(jì),在動(dòng)手寫代碼之前已經(jīng)有了完整的技術(shù)文檔和功能定義,甚至在TDD測(cè)試驅(qū)動(dòng)開發(fā)模式中,測(cè)試數(shù)據(jù)已經(jīng)準(zhǔn)備就緒,那么這時(shí)接口文檔不管寫沒寫,接口邏輯都是已經(jīng)確定的,整理出來是水到渠成。
合理:多存在于早期小型創(chuàng)業(yè)公司,主觀客觀原因都有。
- 先說主觀原因。趕進(jìn)度、沒時(shí)間、懶得寫,甚至開發(fā)前都沒做仔細(xì)的設(shè)計(jì),邊做邊改,這些原因普遍存在,也實(shí)在沒啥好辦法。
- 客觀原因,需求在變,功能跟著變,接口也要變,那么如果寫了文檔,理所當(dāng)然也要更新維護(hù)?。课业奶炷?。
有解決方法嗎?建議試試:
1,Swagger接口文檔,將文檔融合到代碼中,讓維護(hù)文檔和修改代碼整合為一體,使得修改代碼邏輯的同時(shí)方便的修改文檔說明。
2,Postman接口測(cè)試工具,導(dǎo)入導(dǎo)出JSON文件,高效團(tuán)隊(duì)協(xié)作。Postman支持各種請(qǐng)求方式和配置環(huán)境變量,并對(duì)返回結(jié)果進(jìn)行測(cè)試校驗(yàn),支持批量自動(dòng)化運(yùn)行,可以和自動(dòng)構(gòu)建系統(tǒng)集成。