有http了,为什么还要用rpc?

h33.jpg

 

http 和 rpc 并不是一个并行概念。

http是超文本传输协议,应用层网络协议。

rpc不是协议,是指远程过程调用,对不同应用间相互调用的一种描述。其调用协议通常包含传输协议和编码协议;支持http和tcp;

 

rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。

例如rpc框架提供的负载均衡,服务治理,自动熔断/降级,实现二进制传输等;

如果把一个http server容器上封装一层服务发现和函数代理调用,那它就已经可以做一个rpc框架了。

总结:

RPC是一种编程模式,把对服务器的调用抽象为过程调用,通常伴随着框架代码自动生成等功能。使用RPC做网络服务开发时,通常只需要实现服务器端的一个处理函数,其余的客户端调用,序列化反序列化,方法派发等都由框架或者生成的代码来完成,较大地减轻了网络服务开发和调用的复杂性。RPC框架更多的在内网中应用间调用使用,http 除了内网传输,更习惯用在跨网间,跨语言间调用。