1、定義:
遠端過程呼叫, 也叫遠端函式呼叫, 最早出現在sun公司和hp公司的執行unix作業系統的計算機中,用於系統間通訊的一種機制.
rpc的基本通訊模型是基於client/server程序間相互通訊模型的一種同步通訊形式;它對client提供了遠端服務的過程抽象,其底層訊息傳遞操作對client是透明的。在rpc中,client即是請求服務的呼叫者(caller),而server則是執行client的請求而被呼叫的程式 (called)
2、協議及其用途:
rpc是一種大而泛的遠端呼叫機制,不侷限於語言,更不侷限於協議。我們可以認為rmi就是一種rpc,其區別在於rmi是基於物件的,本地虛擬機器中通過stub可以呼叫遠端虛擬機器的物件。
不過從傳輸的資料格式來說,rpc可以分為基於二進位制的rpc、基於xml的rpc、以及其他諸如基於json的rpc。
它可以作為web服務的一種實現方式,web服務可以從多層架構的關注點分離中受益。業務邏輯和資料可以由自動客戶端和 gui 客戶端共享。惟一的不同點在於客戶端的本質和中間層的表示層。此外,從資料訪問中分離業務邏輯可實現資料庫獨立性,並為各種型別的資料儲存提供外掛程式能力.
3、三種請求傳輸模式:
(1)同步請求-響應(synchronous request-response):客戶端呼叫遠端程式並阻塞,直到它收到乙個返回值或異常。
(2)單向 rpc(one-way rpc):客戶端呼叫遠端過程,但自身不阻塞或等待直到收到乙個返回值。jax-rpc 客戶端的執行時系統可能會丟擲異常。
(3)非阻塞 rpc 呼叫(non-blocking rpc invocation):客戶端呼叫遠端過程,並繼續處理同乙個執行緒的內容而不等待返回值。此後,客戶端通過阻塞來接受返回值或輪詢返回值,以此來處理遠端方法的返回。
4、應用場景:
現有的實現框架包括sun公司的jersey、google的protocol buffers、 facebook的thrift還有missian框架等
missian簡介
missian是乙個構建於mina和hessian基礎上的非同步rpc框架,能夠相容http協議和tcp協議,能和hessian互通相容,它提供了:
1)、乙個基於mina的高效能伺服器,具備mina所有的一切優秀基因。missian伺服器能夠在乙個埠之上相容tcp和http協議格式,因 此開啟了missian服務之後,即可以用missian客戶端呼叫(同步/非同步,http/tcp),也可以供hessian客戶端呼叫。
2)、乙個基於阻塞式的傳統socket的同步客戶端,同樣支援http和tcp,它可以使用http或tcp去訪問missian服務,同時也可以 使用http方式去訪問hessian服務。您可以選擇使用短連線的方式,也可以使用長連線(這時強制要求使用連線池,但missian提供了乙個基於 apache commons-pool的socket連線池實現)。可以根據具體情況決定使用方式。
3)、乙個基於mina niosocketconnector的非同步客戶端。預設使用乙個4個執行緒的執行緒池來處理**,但開發者也可以指定執行緒數,或者傳入乙個存在的執行緒池。異 步客戶端只能呼叫missian服務,而不能夠呼叫hessian服務(正在思考如何實現)。同樣,協議可以是http或者tcp。
其它相關框架的資料請自行蒐集。
6、具體框架的使用(jersey使用)
@get@path ("age/")
@produces ("text/plain")
public string getage(@pathparam ("name") jsonobject name)
上述get請求接收的引數型別為json型別,其他型別的引數將無法完成請求;
2)、具體的乙個post請求可以使用下面的方式進行處理:
@post@path ("testjson")
public
string gettestjson( string str)
如何理解 RPC 遠端服務呼叫?
講解 rpc 遠端服務呼叫相關的知識。rpc 框架用到哪些技術 rpc 遠端服務呼叫是分布式服務架構的基礎,無論微服務設計上層如何發展,討論服務治理都繞不開遠端服務呼叫,那麼如何理解 rpc 有哪些常見的 rpc 框架 實現一款 rpc 框架需要哪些技術呢?如何理解 rpc rpc remote p...
grpc python呼叫c 的rpc服務
python使用grpc也是需要有依賴庫的支援 最終是要生成兩個下面檔案,這兩個檔案是被client和server呼叫的 python生成 pb2.py和 pb2 grpc.py grpc 的安裝 pip install grpcio pip install protobuf 安裝 python g...
Rpc和Rest介面,微服務之Rpc
介面呼叫通常包含兩個部分,序列化和通訊協議。常見的序列化協議包括json xml hession protobuf thrift text bytes等 通訊比較流行的是http soap websockect,rpc通常基於tcp實現,常用框架例如dubbo,netty mina thrift 首...