RPC
参考理解地址:https://blog.csdn.net/veloi/article/details/111636500
RPC就是:远程调用框架(Remote Procedure Call)
远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。
1,远程调用原理
比如 A (client) 调用 B (server) 提供的remoteAdd方法:
- 首先A与B之间建立一个TCP连接;
- 然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;
- B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;
- A接受远程调用结果,输出30。
RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。
使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率
2,socket
socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:http、操作系统自带的管道等技术来实现对于远程程序的调用。
3,php中流行的rpc框架
php的rpc框架有: phprpc,yar, thrift, gRPC, swoole, hprose。phprpc 和 yar 是目前听说和接触最多的了。(自己公司使用的是yaf框架:https://www.php.net/manual/zh/book.yaf.php)
4,rpc和http区别及优缺点
参考地址:http://m.ccutu.com/244407.html
目前流行使用 thrift 4层协议
5,Thrift
Thrift提供跨语言的服务框架,这种跨语言主要体现在它对多种语言的编译功能的支持,用户只需要使用IDL描述好接口函数,只需要一条简单的命令,Thrift就能够把按照IDL格式描述的接口文件翻译成各种语言版本。
6,grpc
https://blog.csdn.net/weiwangchao_/article/details/82023191
7,grpc 和 Thrift 对比
https://blog.csdn.net/chengzhi0371/article/details/100788739