1. RPC调用和HTTP调用的区别
RPC远程过程调用(Remote Procedure Call),和HTTP调用的区别,都是写一个服务然后在客户端调用,但是他们是有本质区别的,HTTP服务主要是基于HTTP协议的,RPC主要是基于TCP/IP协议的,HTTP协议是在传输层协议TCP之上的,所以RPC的效率更高。
1.1 RPC服务
HTTP是应用层协议,而TCP是传输层协议,所以重点放在应用层和传输层这两个层面。
RPC服务:分为1.RPC架构2.同步异步调用、3.流行的RPC框架
1.PRC架构:包含四个核心组件,客户端(Client)服务的调用方;服务端(Server),真正的服务提供者;客户端存根(Client Stub),存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。服务端存根(Server Stub),接收客户端发送过来的消息,将消息解包,并调用本地的方法。
2.同步调用与异步调用:同步调用就是客户端等待调用执行完成并返回结果。异步调用就是客户端不等待调用执行完成返回结果。
3.流行的RPC框架:gRPC、Thrift、阿里的Dubbo。Dubbo是开源RPC框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。同样 的远程接口是基于Java Interface,并且依托于spring框架方便开发。可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。
和HTTP区别总结
RPC服务和HTTP服务还是存在很多的不同点的,一般来说,RPC服务主要是针对大型企业的,而HTTP服务主要是针对小企业的,因为RPC效率更高,而HTTP服务开发迭代会更快。总之,选用什么样的框架不是按照市场上流行什么而决定的,而是要对整个项目进行完整地评估,从而在仔细比较两种开发框架对于整个项目的影响,最后再决定什么才是最适合这个项目的。一定不要为了使用RPC而每个项目都用RPC,要具体情况具体分析。