在学习微服务的远程调用的时候,学到了RPC服务,之前呢,也学过HTTP服务,那么他们的区别是什么呢?今天小编就带你看一下他们的区别

首先,无论是微服务还是分布式服务(都是SOA,都是面向服务编程),都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?


RPC服务和HTTP服务


常见的远程调用方式有以下几种:

RPC:Remote Produce Call远程过程调用,类似的还有RMI(Remote Methods Invoke 远程方法调用,是JAVA中的概念,是JAVA十三大技术之一)。

RPC的框架:webservice(cxf)、dubbo

RMI的框架:hessian(比较轻量)

Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议。也可以用来进行远程服务调用。缺点是消息封装臃肿。

现在热门的Rest风格,就可以通过http协议来实现。

http的实现技术:HttpClient


相同点:

底层通讯都是基于socket,都可以实现远程调用,都可以实现服务调用服务


不同点:

RPC:框架有:dubbo、cxf、(RMI远程方法调用)Hessian

当使用RPC框架实现服务间调用的时候,要求服务提供方和服务消费方 都必须使用统一的RPC框架,

要么都dubbo,要么都cxf

跨操作系统在同一编程语言内使用

优势:调用快、处理快


http:框架有:httpClient

当使用http进行服务间调用的时候,无需关注服务提供方使用的编程语言,也无需关注服务消费方使用的编程语言,服务提供方只需要提供restful风格的接口,服务消费方,按照restful的原则,请求服务,即可


跨操作系统跨编程语言的远程调用框架

优势:通用性强


对比RPC和http的区别

1 RPC要求服务提供方和服务调用方都需要使用相同的技术,要么都hessian,要么都dubbo,而http无需关注语言,只需要遵循rest规范

2 RPC的开发要求较多,像Hessian框架还需要服务器提供完整的接口代码(包名.类名.方法名必须完全一致),否则客户端无法运行

3 Hessian只支持POST请求

4 Hessian只支持JAVA语言