PRC(Remote Procedure Call 遠程過程調用) 是本地計算機程序經過網絡調用遠程計算機服務。php
能夠作到分佈式,現代化的微服務html
部署靈活java
解耦服務git
擴展性強github
RPC的目的是讓你在本地調用遠程的方法,而對你來講這個調用是透明的,你並不知道這個調用的方法是部署哪裏。經過RPC能解耦服務,這纔是使用RPC的真正目的。web
client-server 結構,調用方爲client,遠程被調用方爲server。thinkphp
1.調用客戶端句柄;執行傳送參數
2.調用本地系統內核發送網絡消息
3.消息傳送到遠程主機
4.服務器句柄獲得消息並取得參數
5.執行遠程過程
6.執行的過程將結果返回服務器句柄
7.服務器句柄返回結果,調用遠程系統內核
8.消息傳回本地主機
9.客戶句柄由內核接收消息
10.客戶接收句柄返回的數據apache
通常主流框架都實現了跨平臺跨語言的C/S RPC調用。安全
dubbo
,主流配合hessian協議使用,duboo/hessian.服務器
DUBBO是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,是阿里巴巴SOA服務化治理方案的核心框架,天天爲2,000+個服務提供3,000,000,000+次訪問量支持,並被普遍應用於阿里巴巴集團的各成員站點。
thrift
,Apache Thrift software framework.
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.
hprose
,High Performance Remote Object Service Engine
是一款先進的輕量級、跨語言、跨平臺、無侵入式、高性能動態遠程對象調用引擎庫。它不只簡單易用,並且功能強大。
你無需專門學習,只需看上幾眼,就能用它輕鬆構建分佈式應用系統。
HTTP 本質來說是RPC調用的一種實現方式。換種方式說,RPC客戶端能夠經過HTTP鏈接到RPC服務端程序執行RPC(遠程過程調用)。
把RPC比做交通工具,那麼HTTP就是至關於汽車
協議統一,各個平臺幾乎都原生支持HTTP
調用簡單,直接
開發方便
RPC框架通常使用長連接,沒必要每次通訊都要3次握手,減小網絡開銷
RPC框架通常都有註冊中心,有豐富的監控管理
發佈、下線接口、動態擴展等,對調用方來講是無感知、統一化的操做
協議私密,安全性較高
rpc 協議更簡單內容更小,效率更高
服務化架構、服務化治理,RPC框架是一個強力的支撐
REST 是定義http接口調用的一種方式,REST 也能夠說是RPC調用的實現方式。
參考文檔: