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发布服务。
基于Java的实现方式是通过动态代理完成对网络服务的请求和调用。
概念和特点
RPC:
远程服务调用,像调用本地服务一样。
用于构建分布式服务。
透明化
案例
阿里巴巴 hsf、dubbo
Facebook thrift
Google grpc
Twitter finagle
原理
Java方式:
动态代理
字节码生成(?)
协议
Hessian
protobuf
thrift
avro
通信方式
IO模型:NIO、BIO
框架:
NIO自研
Mina
Netty(HSF、Dubbo、finagle等)
发布方式
zookeeper
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。