Rest和RPC接口区别

无论是Google、Amazon、netflix,还是阿里,实际上内部都是采用性能更高的RPC方式,而对外开放的才是RESTful。

1 REST接口
1.1 定义:REST是一种架构设计风格,提供了设计原则和约束条件。而满足这些约束条件和原则的应用程序或设计就是RESTful架构或服务。通过HTTP协议定义的通用动词方法(GET、PUT、DELETE、POST) ,以URI对网络资源进行唯一标识,响应端根据请求端的不同需求,通过无状态通信,对其请求的资源进行表述。

1.2 RESTful API设计
RESTful API一般分为对外和对内。对外的RESTful API为面向公网的公共服务接口,此类接口一般可以通过公网直接访问,或者经过一定的安全认证后(一般使用OAuth 2)通过公网访问。而对内的RESTful API主要是一套系统内部各个子系统或模块之间交互的标准接口。

URL指向资源,HTTP动词指向操作
按照REST的要求,Restful API的URL地址应指向具体的一个资源,例如用户user。URL中应当只包含资源名词,不应该包含指向操作的动词,例如新建、查询、修改、删除等。具体操作通过 HTTP 动词( GET / POST / PUT / DELETE )指定。
指定版本号
在设计 Restful API 时,特别是对外的 API ,通常需要考虑 API 多版本的问题
因为 API 会进行升级,而客户端则处于不可控状态,可能无法及时对 API 调用过程进行配合升级。因此,服务端需要提供对不同版本 API 的支持,同时,客户端在调用 API 时也需要指定特定的版本号,以确保调用过程正常进行。
指定参数
在Restful API请求中,可能需要根据不同的情况进行过滤,需要增加操作参数。一般来说,针对GET和DELTE请求需要增加操作参数的情况较多,而POST和PUT更多的是通过HTTP报文体提供操作数据信息。
例如:https://baidu.com/rt/user?id=123&type=Admin
1.3 应用:
http相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,相应的,如果采用http,无疑在你实现SDK之前,支持了所有语言,所以,现在开源中间件,基本最先支持的几个协议都包含RESTful。

2 RPC接口
2.1 概念:
应对不断增长的用户量及海量的请求,互联网应用的后端基本都是规模庞大的分布式集群,而RPC(远程过程调用)系统便是其中的核心技术。RPC是一种通过网络从远程计算机程序上请求服务来得到计算服务或者数据服务,且不需要了解底层网络技术的协议和框架。由于RPC具有简单、高效和通用等特性,市场迅速扩大,使得风靡一时的HTTP RESTful服务在远程通信技术上已经不再独树一帜了。

2.2 RPC原理
在这里插入图片描述

RPC架构里包含如下4个组件:

客户端(Client):服务调用方
客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方
服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务
服务端(Server):真正的服务提供者。
实现步骤:

客户端调用本地的客户端存根方法,对于客户端程序来说,这个调用很自然,因为它是一个普通的本地方法。客户端存根的方法会将参数打包并封装成一个或多个网络消息体并发送到服务端;
客户端存根通过系统调用,使用操作系统内核提供的socket套接字接口来向远程服务发送网络消息;
网络消息通过网络传输协议(UDP/TCP)传输到远程服务端;
服务端存根接收客户端发送的消息,并对参数消息进行解码;
服务端存根调用服务端的方法,并且将从客户端接收的参数传递给该方法;
服务端的方法在执行完成后,会把结果返回到服务端存根代码中;
服务端存根在将返回值进行编码并序列化后,通过一个或多个网络消息发送给客户端;
消息通过网络发送到客户端存根中;
客户端存根从本地socket接口中读取结果消息;
客户端存根将结果返回给客户端函数,完成远程服务调用。
2.3 RPC框架

阿里巴巴:HSF、Dubbo(开源);
Fackbook:Thrift(开源);
Google:gRPC(开源);
witter:Finagle(开源);
3 REST与RPC对比

3.1 区别:REST(HTTP-Based)、RPC(Socket-Based)

3.2 优缺点:
在这里插入图片描述

3.3 性能:http vs 高性能二进制协议
RPC协议性能要高的多,例如Protobuf、Thrift、Kyro等,(如果算上序列化)吞吐量大概能达到http的二倍。响应时间也更为出色。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值