hadoop ipc類圖如下
連線"font-size: 14px;">//為了提高通訊效率,連線是可以復用的,通過connectionid來區分不同的連線
class connectionid
//connectionheader類是客戶端和服務端tcp連線建立之後交換的第一條訊息,包括connectionid中的
"font-size: 14px;">//使用者資訊和ipc介面資訊,用於確認使用者是否有權利連線
connectionheader
//服務端連線物件
public
class connection
//客戶端連線
private
class connection extends thread
call
//客戶端
private
class call
//服務端
private
static
class call
//客戶端和服務端通過各自的call物件傳送呼叫
客戶端還有parallelcall 用於同時傳送多個遠端ipc呼叫
服務端處理
//處理監聽事件的執行緒
class listener extends thread
acceptchannel.register(selector, selectionkey.op_accept);
} //處理accept事件
public
void run()
}
} }
//reader執行緒,用於處理讀事件並交由handler執行緒處理
class reader implements runnable
iteratoriter = readselector.selectedkeys().iterator();
while (iter.hasnext())
} }
} }
//非同步的處理寫事件
class responder extends thread
} synchronized (writeselector.keys())
} }
} }
void doasyncwrite(selectionkey key)
} //inhandler用於表示是handler中直接呼叫寫操作
//還是responer執行緒的非同步寫操作
void processresponse(linkedlistresponsequeue,boolean inhandler)
void doread(selectionkey key)
遠端過程呼叫
遠端過程呼叫 rpc remote procedure call protocol 遠端過程呼叫協議 它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。為通訊程式之間攜帶資訊資料。採用客戶端 伺服器方式 請求 響應 三種主流的實現方式 rest soap xmlrpc xml...
遠端過程呼叫 RPC
rpc是遠端過程呼叫 remote procedure call 的縮寫。就是一台伺服器上的服務通過引數傳遞的方式呼叫另一台服 務器的服務,並獲取返回結果。比如有兩台伺服器a b,a上的服務想要呼叫b上的函式或方法,由於不在同乙個記憶體空間,不能直接呼叫,需要通過網路來表達呼叫的語義和傳達呼叫的資料...
遠端過程呼叫協議
rpc remote procedure call 遠端過程呼叫,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp或udp,為通訊程式之間攜帶資訊資料。在osi網路通訊模型中,rpc跨越了傳輸層和應用層。rpc使得開發包括網路分布式...