• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

说一下HTTP和RPC的区别?

不管是后端开发还是算法开发过程中,这两个词大家都如雷贯耳,大家一定和我一样很好奇这两者的区别呢?什么时候改用http什么时候改用RPC呢?

刚毕业出去面试,算法封装用的是RPC。虽然这个不是算法的核心,但是面试官经常会问RPC和HTTP的区别?

我也是两眼一抹黑,说不知道,这样很减分,对于技术人来说,保持持续专研的态度是一个比较好的状态。

HTTP是什么?

学过网络协议的都知道,http是应用层协议,有丰富的用途。具体参考书籍为《图解HTTP》和《透视HTTP课程》

RPC是什么?

rpc是Remote Procedure Call的简称,现在有一个场景:
有如下代码:

我们实现了一个add函数,并在单机的情况下使用了它。但是如果是分布式的情况下呢?
这时候我们就可以用到RPC技术。

RPC的定义

RPC就是说在分布式场景下,我们要使用另一台主机上的函数,这个协议屏蔽掉了具体的实现细节,我们可以直接像使用本地函数一样使用它。

HTTP和RPC的区别

其实本质上rpc是一种编程理念,HTTP是一种应用程协议。RPC具体的实现方式上可以用HTTP协议或者用基于TCP/IP协议的socket编程实现。

简单来说成熟的rpc库相对http容器,更多的是封装了“服务发现”,“负载均衡”,“熔断降级”一类面向服务的高级特性。可以这么理解,rpc框架是面向服务的更高级的封装。如果把一个http servlet容器上封装一层服务发现和函数代理调用,那它就已经可以做一个rpc框架了。所以为什么要用rpc调用?因为良好的rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。

开源的实现工具

java:dubbo/hessian
C++:grpc和brpc


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址