作者:長卿
www.cnblogs.com/ygj0930/p/6542811.html
RPC(Remote Procedure Call Protocol)遠程程序呼叫協議,通過網路從遠程計算機上請求呼叫某種服務,一次RPC呼叫的程序大概有10步:
1.執行客戶端呼叫陳述句,傳送引數
2.呼叫本地系統發送網路訊息
3.訊息傳送到遠程主機
4.服務器得到訊息并取得引數
5.根據呼叫請求以及引數執行遠程程序(服務)
6.執行程序完畢,將結果回傳服務器句柄
7.服務器句柄回傳結果,呼叫遠程主機的系統網路服務發送結果
8.訊息傳回本地主機
9.客戶端句柄由本地主機的網路服務接收訊息
10.客戶端接收到呼叫陳述句回傳的結果資料
RMI 遠程方法呼叫
RMI:遠程方法呼叫(Remote Method Invocation),能夠讓在客戶端Java虛擬機上的物件像呼叫本地物件一樣呼叫服務端java 虛擬機中的物件上的方法,點擊這里查看Dubbo架構詳解,

RMI遠程呼叫步驟:
1,客戶呼叫客戶端輔助物件stub上的方法
2,客戶端輔助物件stub打包呼叫資訊(變數,方法名),通過網路發送給服務端輔助物件skeleton
3,服務端輔助物件skeleton將客戶端輔助物件發送來的資訊解包,找出真正被呼叫的方法以及該方法所在物件
4,呼叫真正服務物件上的真正方法,并將結果回傳給服務端輔助物件skeleton
5,服務端輔助物件將結果打包,發送給客戶端輔助物件stub
6,客戶端輔助物件將回傳值解包,回傳給呼叫者
7,客戶獲得回傳值
RPC 與 RMI 的區別
1:方法呼叫方式不同
RMI中是通過在客戶端的Stub物件作為遠程介面進行遠程方法的呼叫,每個遠程方法都具有方法簽名,如果一個方法在服務器上執行,但是沒有相匹配的簽名被添加到這個遠程介面(stub)上,那么這個新方法就不能被RMI客戶方所呼叫,點擊這里查看Dubbo架構詳解,
RPC中是通過網路服務協議向遠程主機發送請求,請求包含了一個引數集和一個文本值,通常形成“classname.methodname(引數集)”的形式,RPC遠程主機就去搜索與之相匹配的類和方法,找到后就執行方法并把結果編碼,通過網路協議發回,
2:適用語言范圍不同
RMI只用于Java;
RPC是網路服務協議,與作業系統和語言無關,
3:呼叫結果的回傳形式不同
Java是面向物件的,所以RMI的呼叫結果可以是物件型別或者基本資料型別;
RMI的結果統一由外部資料表示 (External Data Representation, XDR) 語言表示,這種語言抽象了位元組序類和資料型別結構之間的差異,
推薦去我的博客閱讀更多:
1.Java JVM、集合、多執行緒、新特性系列教程
2.Spring MVC、Spring Boot、Spring Cloud 系列教程
3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程
4.Java、后端、架構、阿里巴巴等大廠最新面試題
覺得不錯,別忘了點贊+轉發哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/160510.html
標籤:Java
上一篇:Spring中基于xml的AOP
下一篇:java集合筆記
