对于这个问题,个人觉得是没有对rpc有一个深入的了解,可以自己实现一下过程,相信比阅读多少参考文档更有效。对于这个问题,简单的区别下。涉及更深入知识请自行翻阅之前内容。
首先:
http 和 rpc 并不是一个并行概念。
http是超文本传输协议,应用层网络协议。
rpc不是协议,是指远程过程调用,对不同应用间相互调用的一种描述。其调用协议通常包含传输协议和编码协议;支持http和tcp;
其次:
rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。
例如rpc框架提供的负载均衡,服务治理,自动熔断/降级,实现二进制传输等;
如果把一个http server容器上封装一层服务发现和函数代理调用,那它就已经可以做一个rpc框架了。
总结:
RPC是一种编程模式,把对服务器的调用抽象为过程调用,通常伴随着框架代码自动生成等功能。使用RPC做网络服务开发时,通常只需要实现服务器端的一个处理函数,其余的客户端调用,序列化反序列化,方法派发等都由框架或者生成的代码来完成,较大地减轻了网络服务开发和调用的复杂性。RPC框架更多的在内网中应用间调用使用,http 除了内网传输,更习惯用在跨网间,跨语言间调用。
更多内容请关注每日编程,每天进步一点。