转自:http://www.javashuo.com/article/p-ohyhqoxw-ms.htmlhtml
1. RPC API和RESTful APIjson
(1)RPC面向过程:内部调用建议RPC浏览器
(2)RESTful 面向资源:对外开发推荐RESTful网络
RPC远程调用不必定跨网络,同一台主机的两个进程直接也能够是RPC。REST就是一种RPC负载均衡
RPC能够经过http也能够直接走socket。 选用http,是因为其更通用。socket
2. RPC与HTTP的不一样特色微服务
2.1 传输协议性能
(1)RPC:基于TCP,也可基于HTTPspa
(2)HTTP:基于HTTPhtm
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风格服务。