有http了,为什么还要用rpc?
http 和 rpc 并不是一个并行概念。
http是超文本传输协议,应用层网络协议。
rpc不是协议,是指远程过程调用,对不同应用间相互调用的一种描述。其调用协议通常包含传输协议和编码协议;支持http和tcp;
rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。
例如rpc框架提供的负载均衡,服务治理,自动熔断/降级,实现二进制传输等;
如果把一个http server容器上封装一层服务发现和函数代理调用,那它就已经可以做一个rpc框架了。
总结:
RPC是一种编程模式,把对服务器的调用抽象为过程调用,通常伴随着框架代码自动生成等功能。使用RPC做网络服务开发时,通常只需要实现服务器端的一个处理函数,其余的客户端调用,序列化反序列化,方法派发等都由框架或者生成的代码来完成,较大地减轻了网络服务开发和调用的复杂性。RPC框架更多的在内网中应用间调用使用,http 除了内网传输,更习惯用在跨网间,跨语言间调用。