rpc和restful的區(qū)別如下:
HTTP是不是RPC完全取決于client的具體形式。傳統(tǒng)的RPC一般是基于二進(jìn)制協(xié)議的,client發(fā)個(gè)二進(jìn)制包過(guò)來(lái)(然后阻塞),server處理完回復(fù)一個(gè)包,client收到后醒來(lái)。在二進(jìn)制協(xié)議中一般可以在包中加個(gè)id來(lái)指明回復(fù)和請(qǐng)求的對(duì)應(yīng)關(guān)系,這樣我們就能在一個(gè)tcp連接上同時(shí)發(fā)起多個(gè)請(qǐng)求和回復(fù)。HTTP這種文本協(xié)議也可以加id,但由于一些原因(Content-Length可能缺失),即使加了id也做不到一個(gè)連接上同時(shí)傳多個(gè)HTTP消息,所以HTTP協(xié)議一般會(huì)和server保持多個(gè)連接,每個(gè)連接上同時(shí)最多只有一個(gè)HTTP消息。此種”連接池“方式即為HTTP中的”Keep-alive“。所以即使在HTTP上(或任何協(xié)議上),仍然可以做到高效地發(fā)送一個(gè)請(qǐng)求過(guò)去,阻塞,等待server處理完后,再醒來(lái)。這就是RPC。面向終端用戶的盡量用Restful HTTP。原因是認(rèn)知廣,直觀,編程語(yǔ)言都支持HTTP(包括shell,這樣調(diào)試起來(lái)方便),性能不是那么重要,方便用戶share鏈接。而面向內(nèi)部系統(tǒng)的話如果機(jī)器不多也可以考慮用Restful HTTP,如果機(jī)器很多還是盡量用二進(jìn)制的RPC吧,性能差距還是很大的。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com