论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
云原生
›
RESTful架构与RPC架构
RESTful架构与RPC架构
泉缘泉
论坛元老
|
2024-10-5 12:59:41
|
显示全部楼层
|
阅读模式
楼主
主题
1003
|
帖子
1003
|
积分
3019
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
RESTful架构与RPC架构
在RESTful架构中,关注点在于资源,操作资源时利用标准方法检索并操作信息片断,在RPC架构中,关注点在于方法,调用方法时将像调用本地方法一样调用服务器的方法。
RESTful架构
REST即表述性状态传递Representational State Transfer,是一种软件架构风格,也可以称作是一种设计API的模式,REST通过HTTP协议定义的通用动词方法GET、POST、PUT、DELETE,以URI对网络资源举行唯一标识,相应端根据请求端的差别需求,通过无状态通讯,对其请求的资源举行表述,符合REST设计规范的架构就称为RESTful架构。
主要原则
网络上的全部事物都被抽象为资源
每个资源都有一个唯一的资源标识符
对资源的各种操作不会改变资源标识符
全部的操作都是无状态的
同一个资源具有多种表现形式如xml、json等
统一资源接口
安全性是指访问REST接口时不会对服务端资源状态发生改变。
幂等性是指对于同一REST接口的URI多次访问时,得到的资源状态是相同的。
GET: 安全的,幂等的,用于读取资源
POST: 不安全的,不幂等的,用于服务端主动产生的实例号创建资源,更新部分资源
PUT: 不安全的,幂等的,用于客户端的实例号创建资源,更新资源
DELETE: 不安全的,幂等的,用于客户端实例号删除资源
实例
查询user,GET https://127.0.0.1/user/1,通过直接携带params查询用户
新增user,POST https://127.0.0.1/user,请求body附带用户注册信息
修改user,PUT https://127.0.0.1/user,请求body附带userid标识信息
删除user,DELETE https://127.0.0.1/user,请求body附带userid标识信息
通过请求头Accept来获取同一资源的差别形式,如application/json与application/xml等
若将版本号看作同一资源的差别表现形式的话,同样应该在Accept字段来区分版本而不是直接在URI中添加版本号
RPC架构
RPC即远程过程调用Remote Procedure Call,简单的理解是一个节点请求另一个节点提供的服务,远程过程调用,是相对于本地过程调用来说的,当调用方法时就像调用本地方法一样调用远程服务器的方法,做到了轻量、无感知通讯。
结构组成
客户端client:服务的调用方
服务端server:服务的提供方
客户端存根client stub:将客户端请求参数打包成网络消息,再发给服务方
服务端存根server stub:吸取客户端发来的消息,将消息解包,并调用本地方法
通讯过程
客户端
1. 将这个调用映射为Call Id
2. 将这个Call Id与参数等序列化,以二进制形式打包
3. 将序列化数据包通过网络通信发送到服务端
4. 等待服务端响应
5. 服务端调用成功并返回结果,反序列化后进行下一步操作
服务端
1. 在本地维护一个Call Id的Map,用以保证Id与调用方法的对应
2. 等待客户端请求
3. 得到一个请求后,将数据包反序列化,得到Call Id与参数等
4. 通过Map寻找Call Id所对应的函数指针
5. 通过函数指针调用函数,并将数据包反序列化后的参数传递,得到结果
6. 将结果序列化之后通过网络通信返回到客户端
注:
此处的客户端指的是本地调用者,也可以是一台服务器
此处的服务端指的是被调用者,也可以是一台服务器
数据包通信时无论是使用socket进行TCP传输,或使用HTTP进行传输都是可行的
复制代码
相关比较
在通讯协议方面来说,RESTful是利用HTTP协议举行数据传输,RPC一样平常是利用TCP协议数据传输,当然传输协议并不是RPC的重点,一样平常利用TCP协议传输是因为其服从高,利用HTTP协议传输是完全可行的。
在性能方面,RPC的传输服从高于RESTful数据传输的服从,因为RCP具有高效紧凑的历程通讯机制,且传输数据量小,在互换大量消息时服从高。
在机动度方面,RESTful架构的机动度高于RPC架构,利用RESTful架构具有比较好的可读性,RPC在编写与调试时略显繁琐。
利用RESTful架构的接口举行数据传输可以得到多语言支持,HTTP协议相对更规范、更通用、更标准,对于中心件而言最先支持的几种协议都包罗RESTful数据传输规范。
内部服务的相互调用推荐利用RPC,而对外的接口推荐利用RESTful,比方微服务架构模式一样平常就采取对内RPC对外RESTful的模式。
每日一题
https://github.com/WindrunnerMax/EveryDay
复制代码
参考
https://www.jianshu.com/p/7d6853140e13
https://www.jianshu.com/p/ee92c9accedd
https://www.zhihu.com/question/28570307
https://www.zhihu.com/question/25536695
https://www.runoob.com/w3cnote/restful-architecture.html
https://blog.csdn.net/bieleyang/article/details/76272699
https://blog.csdn.net/u014590757/article/details/80233901
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
泉缘泉
论坛元老
这个人很懒什么都没写!
楼主热帖
华为一镜到底主题__荣耀30系列安装教程 ...
日志模块
「Docker入门指北」容器很难理解?带你 ...
数据资产为王,如何解析企业数字化转型 ...
信创环境下分布式文件存储MinIO集群部 ...
28基于java的简单酒店数据管理 ...
xss-labs靶场
Vulnhub之M87靶机详细测试过程(不同提 ...
解决NuGet加载或下载资源慢的问题 ...
前端后端的爱恨情仇
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
网络安全
SQL-Server
.Net
程序人生
Oracle
物联网
Mysql
Java
快速回复
返回顶部
返回列表