看到了一些关于RPC的框架 比如 soap,yar,phprpc,thrift。 对这些东西不怎么了解,有什么样的作用
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架
通常我们调用一个方法,譬如: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义,要么存在于该语言的库函数中,也就说在localAdd方法的代码实现在本地,它是一个本地调用!
“远程调用”意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个地方;
譬如 A调用B提供的remoteAdd方法:,
首先A与B之间建立一个TCP连接;
然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;
B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;
RPC框架无非就是把我刚才说的那些细节通通封装起来,给用户暴露简单友好的API使用(ps:有些远程调用选择比较底层的socket协议,有些远程调用选择比较上层的HTTP协议);
至于soap,yar,phprpc,thrift这几样的东西,一个都没用过,所以不好评价
RPC(远程过程调用)是什么
远程过程调用发展历程
早期的 RPC
XML-RPC,SOAP,WebService
PHPRPC
Hessian
JSON-RPC
Microsoft WCF,WebAPI
ZeroC Ice,Thrift,GRPC
Hprose
关于比较经典和流行的RPC框架应该是facebook开源的thirft框架。可以参考下这篇博文浅谈Facebook的服务器架构
Web Service 里就会用到soap的方式啊。
RPC是Remote Procedure Call的缩写
Procedure就是function的另类写法,RPC就是在本地调用远程服务器上的一个function,仅此而已。
RPC有多种协议。SOAP是HTTP+XML base的RPC protocol。Thrift是binary的RPC protocol。
RPC的主要目的是解决不同语言间互相调用的问题。一个足够复杂的集群中,有的服务器跑PHP,有的服务器跑Python,有的服务器跑C++,互相之间怎么传递信息?这需要有一个约定:函数名有什么要求?函数参数支持什么类型?int类型的变量是32bit unsigned还是16bit signed?服务器和客户端之间通讯的字节流是big endian还是little endian?这些约定就是所谓的RPC协议。
至于什么是RPC框架?这个真不知道。第一次听说。
我也是醉了,这个和API有什么区别? API还可以更方便的做限制,RPC对于PHP意义不大啊
回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架
那什么是“远程调用”?
通常我们调用一个方法,譬如: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义,要么存在于该语言的库函数中,也就说在localAdd方法的代码实现在本地,它是一个本地调用!
“远程调用”意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个地方;
远程调用原理
譬如 A调用B提供的remoteAdd方法:,
首先A与B之间建立一个TCP连接;
然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;
B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;
RPC框架无非就是把我刚才说的那些细节通通封装起来,给用户暴露简单友好的API使用(ps:有些远程调用选择比较底层的socket协议,有些远程调用选择比较上层的HTTP协议);
远程调用好处:
至于soap,yar,phprpc,thrift这几样的东西,一个都没用过,所以不好评价
RPC(远程过程调用)是什么
远程过程调用发展历程
早期的 RPC
XML-RPC,SOAP,WebService
PHPRPC
Hessian
JSON-RPC
Microsoft WCF,WebAPI
ZeroC Ice,Thrift,GRPC
Hprose
关于比较经典和流行的RPC框架应该是facebook开源的thirft框架。可以参考下这篇博文
浅谈Facebook的服务器架构
Web Service 里就会用到soap的方式啊。
RPC是Remote Procedure Call的缩写
Procedure就是function的另类写法,RPC就是在本地调用远程服务器上的一个function,仅此而已。
RPC有多种协议。SOAP是HTTP+XML base的RPC protocol。Thrift是binary的RPC protocol。
RPC的主要目的是解决不同语言间互相调用的问题。一个足够复杂的集群中,有的服务器跑PHP,有的服务器跑Python,有的服务器跑C++,互相之间怎么传递信息?这需要有一个约定:函数名有什么要求?函数参数支持什么类型?int类型的变量是32bit unsigned还是16bit signed?服务器和客户端之间通讯的字节流是big endian还是little endian?这些约定就是所谓的RPC协议。
至于什么是RPC框架?这个真不知道。第一次听说。
我也是醉了,这个和API有什么区别? API还可以更方便的做限制,RPC对于PHP意义不大啊