RPC与HTTP的区别

转自:https://www.cnblogs.com/111testing/p/11297037.html

1. RPC API和RESTful API

 (1)RPC面向过程:内部调用建议RPC

(2)RESTful 面向资源:对外开发推荐RESTful

RPC远程调用不一定跨网络,同一台主机的两个进程直接也可以是RPC。REST就是一种RPC

RPC可以通过http也可以直接走socket。 选用http,是由于其更通用。

2. RPC与HTTP的不同特点

2.1 传输协议

(1)RPC:基于TCP,也可基于HTTP

(2)HTTP:基于HTTP

2.2传输效率

(1)自定义TCP协议,报文小。 如果基于HTTP2协议,也可减小报文,提高传输效率

(2)基于HTTP1.1协议,报文有很多无用内容,传输效率低

2.3 性能消耗,主要在于序列化和反序列化的耗时

(1)RPC,可以基于thrift实现高效二进制传输

(2)HTTP,大部分是json实现,字节大小和序列化耗时逗比thrift更消耗性能

2.4负载均衡

(1)RPC自带负载均衡策略

(2)HTTP,需要配置Nginx,HAProxy来实现

2.5服务治理

(1)RPC,自动通知

(2)HTTP,事先通知,修改Nginx/HAProxy配置

3.总结

(1)RPC:用于公司内部服务调用,性能消耗低,传输效率高,服务治理方便。 实现负载,适用于开发过程使用同一的技术栈

(2)HTTP:用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用。实现简单,更加灵活,跨语言,跨平台

微服务,强调的是独立、自治、灵活。而RPC方式限制多,因此微服务常用基于http的Rest风格服务。

原文地址:https://www.cnblogs.com/ppybear/p/12461460.html