什么是RPC

? ? ? 之前不了解什么是rpc,特意去百度了一下,然后給的解釋就是:rpc的全稱是遠程過程調(diào)用,他是一種通訊協(xié)議,說的那么官方,一點實質(zhì)性的解釋都沒,反正是云里霧里的。經(jīng)過反復(fù)的去了解和學(xué)習(xí),多多少少有一些了解,下面我就用具體案例來解釋一下,到底tm的什么是rpc,到底這個rpc是個啥玩意。

? ? ?廢話不多說:直接開始下面案例

案例1:有一臺筆記本,你現(xiàn)在需要把筆記本里面的小電影放到移動硬盤里面,打算晚上回家好好研究研究這里面的考研資料,當你興致勃勃的拿出移動硬盤,打算往電腦里面插的時候,你發(fā)現(xiàn)怎么都插不進去,這個時候,你仔細一看,原來你的移動硬盤上面的數(shù)據(jù)線是type-A的接口,你筆記本是type-c的接口,筆記本很無奈的移動硬盤說:對不起,我們不合適。你別想著插我,你插不進。從這個案例中,可以看出,兩個不同的usb接口,沒法進行通訊的,只有移動硬盤將type-A換成type-C,才能將電腦里面的小電影拷貝過來,那這案例和rpc有啥關(guān)系呢?那我就好好和你說一下他們的相同點,首先rpc叫做遠程過程調(diào)用,是一種通訊協(xié)議,這遠程過程調(diào)用,是不是得至少兩個載體呢?一個請求,一個接受接收并且適當時候給出反饋。針對案例1中,移動硬盤和筆記本,一個要接收小電影,一個要把小電影拷貝到硬盤上。另外他是一種協(xié)議,對應(yīng)的是不是就是筆記本和移動硬盤必須要是同一款usb接口。如果這樣理解,是不是就能解釋通了呢?因此rpc可以理解為:A通過一種方式向B發(fā)送一個特定的消息,并且B能理解,B在接收到A的消息后,根據(jù)設(shè)定的條件來取決是否給A發(fā)送反饋。

? ?那么就有人提出問題了,如果這樣說的話,http是不是就是rpc呢?

? ? ? 其實http和rpc還是有區(qū)別的,非要說的話,那可以說:可以使用http這種協(xié)議去實現(xiàn)rpc的調(diào)用,因為rpc是一種協(xié)議而不是一個具體的實現(xiàn),他是通過一種指定的通訊協(xié)議去實現(xiàn)服務(wù)和服務(wù)之間的數(shù)據(jù)通訊。就好比spring-cloud的@feign調(diào)用,就是通過http去實現(xiàn)rpc的調(diào)用。但是實現(xiàn)rpc調(diào)用可以用多種方式,可以用http實現(xiàn)也可以用socket,netty,mq等方式去實現(xiàn),而http的實現(xiàn),他只能遵循h(huán)ttp的規(guī)范才能實現(xiàn)服務(wù)和服務(wù)之間的通訊。說的那么繞口可能有點難以理解,下面我在舉個簡單的例子。

案例2:一起走進法外狂徒張三和他媳婦小芳的世界。有一天小芳在家燒飯,張三在田里耕地,小芳發(fā)現(xiàn)家里的醬油沒了,這時候她又沒法自己去買醬油,這個時候,她只能叫張三去買,這個時候,她可以直接到門口去喊張三去買醬油,也可以打個電話給張三讓他去買醬油,也可以讓隔壁鄰居張二狗幫忙去和張三說一聲讓他去買醬油,也可以讓自己的兒子王富貴去和張三說一聲讓他去買醬油,也可以發(fā)微信和張三說,也可以發(fā)短信和張三說等等,他可以有N多種方式去把這個消息傳遞給張三,從這個案例中可以知道,小芳讓張三去買醬油,可以通過直接喊,或者叫人,或者打電話,或者發(fā)微信,或者發(fā)短信等N多種方式,這些方式就可以看作rpc里面的一種通訊方式,而http,可以比作通過打電話的方式去告訴張三,當然打電話的要求,必須:兩個有手機,手機不欠費,要知道張三電話號碼等等要求,這些可以看作http實現(xiàn)的一些要求,比如要有url,要有heard等。但是小芳要是沒電話,或者不知道張三號碼,他就沒法傳遞這個消息了么?他可以通過其他方式去實現(xiàn)。所以從宏觀上來說,rpc的范圍要比http更廣,他可以稱作一種規(guī)范,也就小芳把買醬油這個事通過某種方式去告訴張三,具體怎么實現(xiàn),那就通過具體的通訊方式去實現(xiàn),因此針對于http和rpc的關(guān)系,可以說:服務(wù)和服務(wù)之間通過可以通過http這種方式去實現(xiàn)rpc。但是不能說http就是rpc。當然針對同一種通訊方式也是要滿足通訊要求的,就好比小芳是個非洲娘們,不會說普通話,張三是個地地道道的農(nóng)民聽不懂非洲話,小芳對著張三一頓子非洲語輸出,張三也聽不懂這娘們說啥,最后這醬油張三肯定買不成了。

通過這倆案例講解,應(yīng)該能多多少少知道什么是rpc了吧,對rpc有更多興趣的人可以下載一個rpc的demo,地址:https://github.com/young287/spring-rpc-demo 這是我寫的一個機遇springcould的demo,通過socket的通訊方式實現(xiàn)rpc的調(diào)用,希望能對您老有更多的幫助,要是覺得有幫助,就幫我github上面點個星。謝了,里面還涉及了一些spring源碼的知識點,要是想學(xué)習(xí)spring源碼的話,我的公開項目里面也有一個spring源碼,里面有各個重點的注釋,有興趣的也可以下載下來了解一下,包括里面還有spi實現(xiàn)的demo案例,覺得有幫助的點個星,讓我裝個B,謝謝了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、REST 與 RPC 1、什么是 REST 和 RPC 協(xié)議? 在單體應(yīng)用中,各模塊間的調(diào)用是通過編程語言級別...
    愿天堂沒有BUG閱讀 808評論 0 1
  • 一、REST 與 RPC 1、什么是 REST 和 RPC 協(xié)議? 在單體應(yīng)用中,各模塊間的調(diào)用是通過編程語言級別...
    廢柴程序員閱讀 447評論 0 1
  • RPC是指遠程過程調(diào)用,也就是說兩臺服務(wù)器A,B,一個應(yīng)用部署在A服務(wù)器上,想要調(diào)用B服務(wù)器上應(yīng)用提供的函數(shù)/方法...
    Cesc90閱讀 22,310評論 5 23
  • 誰能用通俗的語言解釋一下什么是 RPC 框架? - 遠程過程調(diào)用協(xié)議RPC(Remote Procedure Ca...
    luckee閱讀 3,795評論 0 0
  • 一個陽光明媚的早晨,老婆又在翻看我訂閱的技術(shù)雜志。 “老公,什么是RPC呀,為什么你們程序員那么多黑話!”,老婆還...
    柳樹之閱讀 244,183評論 106 1,130

友情鏈接更多精彩內(nèi)容