REST API和RPC区别是什么?怎么简单的理解这两个概念呢?

来源:2-3 服务发现、部署更新和扩容

狂奔的蜗牛wjh

2018-04-07

写回答

4回答

刘果国

2018-04-07

同学你好,首先说rpc,rpc的定义是远程过程调用,通俗讲就是客户端通过网络远程调用服务端的方法,比如一个用java写的method。rpc是基于tcp/ip协议之上的,一般每个rpc框架都定义了自己的协议(就是数据传输的格式,像前几位表示长度,用什么代表整数等等),一般rpc会非常注重效率,比如它会尽量减小传输的数据量以保证传输效率,还会精心设计数据的装包和解包以提升这个过程的速度。http协议在七层网络中属于应用层,其实本质上也可以认为是一种rpc,毕竟它也实现了远程方法调用,只不过速度不快,短链接,网络开销大而已。不过这个协议的设计非常适合一种场景,就是浏览器,跟其他rpc共性不多,所以大家一般说到rpc是不包含http的,restapi就好理解了,它就是http协议在使用过程中的一种规范,就像坐地铁上下电梯,左边总会空出来让人走一样,没有明文规定,只是大家觉得好就这么做了

1
1
狂奔的蜗牛wjh
非常感谢!
2018-04-08
共1条回复

狂奔的蜗牛wjh

提问者

2018-04-08

感谢果果老师的耐心解答,这下通透了,和之前一位做了四年的开发同事讨论,这下他也才明白了。非常感谢,祝果果老师的课程大卖,笔芯额。

0
0

刘果国

2018-04-07

对的,客户端与服务端必须使用同样的rpc协议。否则是无法通讯的。协议是在开发之前就定义好的,这样大家开发出来的代码才能够互相调用,浏览器是http的,但‘客户端’指的不一定是浏览器,比如:浏览器->JavaWeb服务->thrift服务,这里面浏览器是javaweb服务的客户端,而javaweb服务就是thrift服务的客户端,javaweb通过thrift rpc框架调用服务。

0
0

狂奔的蜗牛wjh

提问者

2018-04-07

老师,那么如果采用微服务的rpc协议的话,那么客服端调用的话,必须要使用我们的服务端的rpc协议的吗?那么在写客服端的时候就要定义好已经规范好的rpc协议吗?浏览器一定是http,但是客服端一定得是http吗

0
0

Docker+Kubernetes(k8s)微服务容器化实践

从开发到编排,快速,完整,深入的掌握微服务

2608 学习 · 607 问题

查看课程