什么是RPC
RPC 全稱 Remote Procedure Call——遠(yuǎn)程過程調(diào)用。在學(xué)校學(xué)編程,我們寫一個(gè)函數(shù)都是在本地調(diào)用就行了。但是在互聯(lián)網(wǎng)公司,服務(wù)都是部署在不同服務(wù)器上的分布式系統(tǒng),如何調(diào)用呢?
RPC技術(shù)簡單說就是為了解決遠(yuǎn)程調(diào)用服務(wù)的一種技術(shù),使得調(diào)用者像調(diào)用本地服務(wù)一樣方便透明。
下圖是客戶端調(diào)用遠(yuǎn)端服務(wù)的過程:
1)客戶端client發(fā)起服務(wù)調(diào)用請求。
2)client stub 可以理解成一個(gè)代理,會將調(diào)用方法、參數(shù)按照一定格式進(jìn)行封裝,通過服務(wù)提供的地址,發(fā)起網(wǎng)絡(luò)請求。
3)消息通過網(wǎng)絡(luò)傳輸?shù)椒?wù)端。
4)server stub接受來自socket的消息
5)server stub將消息進(jìn)行解包、告訴服務(wù)端調(diào)用的哪個(gè)服務(wù),參數(shù)是什么
6)結(jié)果返回給server stub
7)sever stub把結(jié)果進(jìn)行打包交給socket
8)socket通過網(wǎng)絡(luò)傳輸消息
9)client slub 從socket拿到消息
10)client stub解包消息將結(jié)果返回給client。
一個(gè)RPC框架就是把步驟2到9都封裝起來。
為什么需要RPC
1、首先要明確一點(diǎn):RPC可以用HTTP協(xié)議實(shí)現(xiàn),并且用HTTP是建立在 TCP 之上最廣泛使用的 RPC,但是互聯(lián)網(wǎng)公司往往用自己的私有協(xié)議,比如鵝廠的JCE協(xié)議,私有協(xié)議不具備通用性為什么還要用呢?因?yàn)橄啾扔贖TTP協(xié)議,RPC采用二進(jìn)制字節(jié)碼傳輸,更加高效也更加安全。
2、現(xiàn)在業(yè)界提倡“微服務(wù)“的概念,而服務(wù)之間通信目前有兩種方式,RPC就是其中一種。RPC可以保證不同服務(wù)之間的互相調(diào)用。即使是跨語言跨平臺也不是問題,讓構(gòu)建分布式系統(tǒng)更加容易。
3、RPC框架都會有服務(wù)降級、流量控制的功能,保證服務(wù)的高可用。
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
54文章
11155瀏覽量
103304 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9160瀏覽量
85419 -
RPC
+關(guān)注
關(guān)注
0文章
111瀏覽量
11536
原文標(biāo)題:RPC協(xié)議了解一下
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論