PHP轻量级开源接口框架,rpc接口

【PHP轻量级开源接口框架,rpc接口】Python如何调用RPC接口?

PHP轻量级开源接口框架,rpc接口


Python调用RPC接口方法如下:1.RPC(Remote Procedure Call)远程过程调用,要调用RPC接口,Python提供了一个框架grpc,这是google开源的库 rpc相关文档链接:https://grpc.io/docs/tutorials/basic/python.html 2. gRPC 的安装$ pip install grpcio$ pip install protobuf$ pip install grpcio-tools3.实际使用:编写 server 端代码:编写 client 端代码:运行结果:先启动 server,之后再执行 clientclient客户端控制台如果打印的结果为:“received: HELLO,WORLD!”,证明 gRPC 接口定义成功以上就是Python如何调用RPC接口的方法,希望对你有帮助! 。
既然有http请求,为什么还要用rpc调用?
PHP轻量级开源接口框架,rpc接口


在程序开发中,我们经常会调用第三方API,而这类API一般提供多种方式供我们调用,比如:基于HTTP协议的、还有RPC方式调用的,以致于很多人会有这种质疑:既然有了HTTP这种请求方式,为什么还有RPC的存在?HTTP和RPC是完全不同的概念在这里我们需要搞清楚一点的是,HTTP和RPC在概念上就是不同的,两种是不能相提并论的 。
HTTP是超文本传输协议;RPC是指远程过程调用,它是对不同系统间相互调用方式的一种描述,RPC不是协议也不是一种新技术,严格意义上应该称它是一种解决方案(概念)或技术实现的框架 。RPC框架底层一般支持多种协议,比如:HTTP、TCP、自定协议等 。所以说RPC也是可以通过HTTP来实现的!RPC与HTTP调用的应用场景RPC框架提供的是面向服务的封装,它针对服务的性能效率、可用性等都做了优化(比如提供了:注册中心、服务治理、负载均衡、二进制传输、熔断、服务降级等功能),是一套完整的解决方案;而HTTP调用缺少这些高级特性,它只是简单的数据通信,另外HTTP API受限于HTTP协议(要带HTTP请求头),传输效率及安全性不如RPC 。
为什么使用RPC而不是简单的HTTP API?HTTP API一般在接口数量不多的情况下采用的,因为它使用起来简单快捷,直接利用现成的HTTP协议就可以进行数据传输 。但对于一个大型项目,内部模块子系统众多,接口也变得很多了,在这种情况下如果再使用一个个零散的HTTP API,维护成本极高 。所以RPC框架优点就显示出来了,比如说:支持长链接,减少了网络开销;拥有注册中心,服务治理起来更方便;有监控功能,易于定位问题;对调用方来说是无感知、统一化的 。
微服务调用为什么用RPC框架,http不更简单吗?
PHP轻量级开源接口框架,rpc接口


简单点,HTTP是协议,RPC是概念!实现RPC可以基于HTTP协议(Feign),TCP协议(Netty),RMI协议(Soap),WebService(XML—RPC)框架 。传输过程中,也因为序列化方式的不同,又有一些框架和协议,比如Dubbo中的Dubbo协议,gRpc—Protobuf序列化协议等等 。
其实,都是基于远程调用的概念,何为远程调用?重点是,RPC就是远程调用,远程调用就是客户端把调用的接口,参数,参数类型,方法,返回值,返回值类型等(这些称为方法签名),通过如上的协议,发送给服务端,告知服务端需要调用的接口方法,这个过程就是RPC的实现过程!HTTP和RPC是不同层面的两个东西!性能方面,HTTP本身是基于TCP协议的,属于应用层协议,所以HTTP协议本身在实现过程中就会占用大量的资源(内存,带宽等),性能上肯定没有通过TCP直接实现RPC协议快,不管HTTP如何优化肯定的是不如TCP的!而TCP则是依靠字节码,现在普遍采用的是将客户端调用的接口信息,序列化的方式发送给服务端,序列化框架又包含很多(Hession,Protobuf,Kryo等等,序列化性能最高的是Kryo,序列化后字节码最小的是Protobuf),序列化后的字节码越小,占用带宽越少,序列化时间越短,线程IO等待时间就会越小 。

推荐阅读