转自: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风格服务。