专业的编程技术博客社区

网站首页 > 博客文章 正文

学习笔记-RPC & REST(rpc restapi)

baijin 2024-10-30 01:30:00 博客文章 8 ℃ 0 评论

RPC是什么

RPC 即远程过程调用, 很简单的概念, 像调用本地服务(方法)一样调用服务器的服务(方法)。由于此前我已经向大家详细地介绍过RPC,此处不过多赘述。详见【学习笔记-RPC简单理解】 。之前章节详细介绍过现流行的三种RPC框架,分别是Google 的Grpc(学习笔记-GRPC简单理解),Facebook的Thrift(学习笔记-Thrift简单理解),阿里的Dubbo(学习笔记-Dubbo简单理解)。

REST是什么

REST 不是一种协议,它是一种架构, 一种 Web Service 能够如果满足 REST 的几个条件, 通常就称这个系统是 Restful 的.由于此前我已经向大家详细地介绍过RESTful,此处不过多赘述。详见【学习笔记-RESTful简单理解】。

RPC与REST的区别

REST一种架构设计风格,提供了设计原则和约束条件,而不是架构。严格意义上说接口很规范,操作对象即为资源,致力于通过http协议中的POST/GET/PUT/DELETE等方法和一个可读性强的URL来提供一个http请求。并且参数都放在URL上,但是不严格地说Http+json、Http+xml,常见的http api都可以称为Rest接口。

Rpc即远程方法调用,就是像调用本地方法一样调用远程方法,RPC会隐藏底层的通讯细节,通信协议大多采用二进制方式

只需要记住一点, RPC是以动词为中心的, REST是以名词为中心的, 此处的 动词指的是一些方法, 名词是指资源.

以动词为中心,意味着,当你要需要加入新功能时,你必须要添加更多的动词, 这时候服务器端需要实现 相应的动词(方法), 客户端需要知道这个新的动词并进行调用.

而以名词为中心, 假使我请求的是 user/name/, 无论这个URI对应的服务怎么变化,客户端是无需 关注和更新的,而这种变化对客户端也是透明的.

至于其它的区别,如对语言的依赖, 耦合性等,这些都是上面提到的这个根本区别所衍生的.

应用场景

REST和RPC都常用于微服务架构中。

RESTful使用的是HTTP协议,相对更规范,更标准,更通用,无论哪种语言都支持http协议。现在开源中间件几乎都支持。

RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。

REST调用及测试都很方便,RPC就显得有点繁琐,但是RPC的效率是毋庸置疑的,所以建议在多系统之间的内部调用采用RPC。对外提供的服务,Rest更加合适。

总结:内对内RPC,内对外REST

协议对比

RESTful采用http,RPC使用高性能二进制协议

Restful架构是基于Http应用层协议的产物。http相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,相应的,如果采用http,无疑在你实现SDK之前,支持了所有语言,所以,现在开源中间件,基本最先支持的几个协议都包含RESTful。

RPC架构是基于TCP传输层协议的产物。RPC协议性能要高得多,例如Protobuf、Thrift、Kyro等,(如果算上序列化)吞吐量大概能达到http的二倍。响应时间更为出色。

REST与RPC比较

都是网络交互的协议规范。通常用于多个微服务之间的通信协议。

高与低是对实现两种规范框架的相对比较,但也不是绝对的,需要根据实际情况而定。

本文的初衷为学习笔记的分享,部分图文来源于网络,如侵,联删。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表