说一下HTTP和RPC的区别?

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

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

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

HTTP是什么?

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

RPC是什么?

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

# include<iostream>
int add(int a, int b){
	return a+b;
}

int main(){
	int a = 6, b = 7;
	int c = add(a, b);
}

我们实现了一个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

发布了132 篇原创文章 · 获赞 13 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览