RPC,即遠程過程調用(Remote Procedure Call),通常用於分佈式服務中。網絡
調用遠程服務的客戶端,像調用本地服務同樣調用遠程服務。
遠程服務的調用方式對客戶端是透明的。框架
現有的框架有阿里巴巴的Dubbo、Google的GRPC、Facebook的Thrift(支持各語言的通訊)等。分佈式
RPC能夠基於TCP或者UDP網絡協議實現,RPC協議有不少種,例如Hessian(二進制傳輸協議)、Google的protobuf等,甚至REST API。代理
基於Java的RPC的IO通訊模型有BIO和NIO,NIO如Mina、Netty。Dubbo就是基於Netty服務完成的NIO通訊。Dubbo通常經過zookeeper發佈服務。rpc
基於Java的實現方式是經過動態代理完成對網絡服務的請求和調用。it
RPC:阿里巴巴
遠程服務調用,像調用本地服務同樣。原理
用於構建分佈式服務。zookeeper
透明化dubbo
阿里巴巴 hsf、dubbo
Facebook thrift
Google grpc
Twitter finagle
Java方式:
動態代理
字節碼生成(?)
Hessian
protobuf
thrift
avro
NIO自研
Mina
Netty(HSF、Dubbo、finagle等)
zookeeper