面试:请说一下rpc和http的区别?

【给大家分享Java面试中经常会被提问的问题哦,每天晚上9点30准时分享】

01

请说一下rpc和http的区别?

一、区别:

1、传输协议

RPC,可以基于TCP协议,也可以基于HTTP协议

HTTP,基于HTTP协议

2、传输效率

RPC,使⽤用⾃自定义的TCP协议,可以让请求报⽂文体积更更⼩小,或者使⽤用HTTP2协议,也可以很好的减少报⽂文的体积,提⾼高传输效率

HTTP,如果是基于HTTP1.1的协议,请求中会包含很多⽆无⽤用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为⼀一个RPC来使⽤用的,这时标准RPC框架更更多的是服务治理理

3、性能消耗,主要在于序列列化和反序列列化的耗时

RPC,可以基于thrift实现⾼高效的⼆二进制传输

HTTP,⼤大部分是通过json来实现的,字节⼤大⼩小和序列列化耗时都⽐比thrift要更更消耗性能

4、负载均衡

RPC,基本都⾃自带了了负载均衡策略略

HTTP,需要配置Nginx,HAProxy来实现

5、服务治理(下游服务新增,重启,下线时如何不不影响上游调⽤用者)

RPC,能做到⾃自动通知,不不影响上游

HTTP,需要事先通知,修改Nginx/HAProxy配置

二、总结:

RPC主要⽤用于公司内部的服务调⽤用,性能消耗低,传输效率⾼高,服务治理理⽅方便便。HTTP主要⽤用于对外的异构环境,浏览器器接⼝口调⽤用,APP接⼝口调⽤用,第三⽅方接⼝口调⽤用等。

【给大家分享Java面试中经常会被提问的问题哦,每天晚上9点30准时分享】 01 请说一下rpc和http的区别? 一、区别: 1、传输协议 RPC,可以基于TCP协议,也可以基于HTTP协议 HTTP,基于HTTP协议 2、传输效率 RPC,使⽤用⾃自定义的TCP协议,可以让请求报⽂文体积更更⼩小,或者使⽤用HTTP2协议,也可以很好的减少报⽂文的体积,提⾼高传输效率 HTTP,如果是基于HTTP1.1的协议,请求中会包含很多⽆无⽤用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以作为⼀一个RPC来使⽤用的,这时标准RPC框架更更多的是服务治理理 3、性能消耗,主要在于序列列化和反序列列化的耗时 RPC,可以基于thrift实现⾼高效的⼆二进制传输 HTTP,⼤大部分是通过json来实现的,字节⼤大⼩小和序列列化耗时都⽐比thrift要更更消耗性能 4、负载均衡 RPC,基本都⾃自带了了负载均衡策略略 HTTP,需要配置Nginx,HAProxy来实现 5、服务治理(下游服务新增,重启,下线时如何不不影响上游调⽤用者) RPC,能做到⾃自动通知,不不影响上游 HTTP,需要事先通知,修改Nginx/HAProxy配置 二、总结: RPC主要⽤用于公司内部的服务调⽤用,性能消耗低,传输效率⾼高,服务治理理⽅方便便。HTTP主要⽤用于对外的异构环境,浏览器器接⼝口调⽤用,APP接⼝口调⽤用,第三⽅方接⼝口调⽤用等。
经验分享 程序员 微信小程序 职场和发展