快手、孩子王、华为等专家分享大模型在电商运营、母婴消费、翻译等行业场景的实际应用 了解详情
写点什么

REST 对云的实现真那么重要吗?

  • 2011-01-31
  • 本文字数:1435 字

    阅读完需:约 5 分钟

这些年我们听到了非常多 REST 为 web 开发带来的好处,特别是在 Web 服务环境和最近的 SOA 相关应用中。因此,随着云应用的增长,即使是在早期采用阶段,看到各种实现采用 REST 技术是毫不奇怪的。

早在 2009 年, William Vambenepe 就考虑到了 REST 在云应用中的角色,结论是,在那个时间点,Sun 和 Rackspace 会提供更多 Restful 的 API,而不是其它厂商。我们看到两年后的情况并不完全如他所料,随着更多的开发体验,更多的用户和更多的选择,William 看到,Amazon 可能是到目前为止最成功的云供应商,他提出了这样的问题:“ Amazon 并没有使用 REST,对于成功的云应用,REST 是必须的吗?”正如他所言:

每次新的云 API 都会宣布它的“RESTfulness”特性,好象这是必须具备的特征。但是最成功的云 API,AWS API,并不是 RESTful 的。

现在你可以不同意 William 的评价,虽然我们已经在使用云方面走得足够远,并假定这不是一个巧合,但这仍然是值得思考的有趣的环境。此外,William 并不认为 REST 是不重要的,他只是认为至少在云的管理方面并不是那么重要,没有提供任何明显的好处,比如,RPC。

AWS 主要采用了 HTTP 之上的 RPC,通过在 URL 中增加类似?Action=CreateKeyPair 的字串,可以发送 HTTP 的 GET 请求,或者 DeleteKeyPair。与其他资源一样(容量、快照、安全组…)。Amazon 没有把这些称为 RESTful,而是叫做“查询 API”(除了 DevPay API,不知道什么原因,Amazon 将其称为“REST-Query”)。

正如他指出的,RESTful API 的缺陷并没有阻止许多人使用它,也没有限制或明显的影响已经部署系统的可扩展性。也没有影响安全或限制应用程序和语言的类型。

这里有一个经验法则,如果你的大部分调用的 API 来自面向对象语言的库,或多或少每个 HTTP 请求与方法调用相对应,那么你的 API 是多么的 RESTful 可能并没那么重要。

William 指出,虽然 Rackspace 的工程师写的一篇早期文章对 AWS API 的 RESTfulness 进行的比较和对比是精确的,但看上去好象并没有什么不同:对于开发者和用户来说。总之,他建议最终云的 RESTfulness 无关紧要,只要简单就好。

AWS 的 API 是个很特别的样例,因为并没有前人可以借鉴。正如我在写 Sun 的云 API 时,“REST 并不重要,重要的是剩下的部分”。一年半之后,我认为这个案例已经结束了。

他的文章引发了很多评论,大部分是反对意见。例如一个评论是这样写的:

在我看来你说的并不假,虽然 EC2 的成功与他们的 API 关系不大,正如 John(第三个回复)指出的那样。更普遍的感觉是我不确认自己喜欢这样的论调。如果 Tim Berners-Lee 设计了一个接口——具体到物理学家——一旦他们的机器安装了某些具体的“物理学家的协作软件”就可以共享成果,那么今天还会有 Web 和互联网吗?

另一个补充到:

你的问题非常棒,但是忽略了这样一个目标:这些细节(像 RESTful API)主要影响的是库的开发人员,好的库可以把任何类型的 API 抽象为更面向资源的模型。这需要有人能有效和持续的进行概念映射。一旦设计优良的库开始使用,不会存在使用上的障碍,而且很少出现滥用和浪费的现象。最后的结果总是归结为一致性:只要你能提供一致的接口,即使与之前建立的概念和映射并不一致,这样的 API 给产品的成功带来的价值也是非常值得额外付出的。

随着越来越多软件厂商开发了的云实现以及开源的努力,RESTfulness 更多的做为一个重要的特征被提及。但是William 的问题是:如果最成功的云提供商没有使用REST,它真的那么重要吗?

查看英文原文: Is REST important for Cloud?

2011-01-31 07:082248

评论

发布
暂无评论
发现更多内容

无代码平台,完成业务的最后一公里

蓝黑

使用Grafana + simpod-json-datasource快速搭建数据看板

诸葛小猿

Grafana 数据可视化 simpod-json-datasource

关于Java Servlet找不到自定义包或者第三方包

谷鱼

classes

TensorFlow 篇 | TensorFlow 2.x 基于 Keras 模型的本地训练与评估

Alex

tensorflow 模型训练 keras

巡展2020第十三届亚洲国际物联网展览会-南京站

InfoQ_caf7dbb9aa8a

换道超车 区块链是你的捷径

CECBC

区块链 互联网

鼓励语言区块链技术的应用

CECBC

区块链

“哥伦布”华为,与智能联接新大陆

脑极体

问世间异步为何物?

架构师修行之路

微服务 异步

甲方日常 22

句子

Vue 工作 随笔杂谈 日常

12周作业-大数据

飞雪

二.图说Eureka源码(环境搭建)

阿亮

源码 SpringCloud Eureka

一个草根的日常杂碎(9月23日)

刘新吾

随笔杂谈 生活记录 社会百态

智能体:华为给时代炼一炉钢

脑极体

面试官:讲讲Redis的五大数据类型?如何使用?(内含完整测试源码)

冰河

redis Jedis JedisCluster

让世界为之赞叹的开源项目,除了Linux,你知道Git吗?

小Q

Java git 学习 程序员 面试

「架构师训练营第 1 期」第二周课后总结

睡不着摇一摇

极客大学架构师训练营

大作业

任小龙

智谱 AI 首席科学家唐杰团队荣获国际数据挖掘顶会时间检验应用科学奖

极客播报

大作业

SuperLab

架构师训练营期末大作业

史慧君

学完这篇Spring Cloud技术提升一个点!

Java架构师迁哥

架构师训练营第二周作业

Geek_4c1353

Redis做分布式锁可能不那么简单

架构师修行之路

分布式 分布式锁

三步带你开发一个短链接生成平台

葡萄城技术团队

Java SpreadJS Node

架构师训练营笔记2则分布式系统架构和数据结构

tuuezzy

朋友入职阿里请我吃饭,只因为面试前我逼他看了这些,经验很重要

小Q

Java 学习 程序员 架构 面试

JAVA集合之LinkedList底层实现和原理

彭阿三

linkedlist

数字货币管理,3 大新模式来了!

CECBC

区块链 数字货币

实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题

华为云开发者联盟

搜索 数据集 知识图谱

小朋友都能看懂的 HTTPS

Java架构师迁哥

REST对云的实现真那么重要吗?_SOA_Mark Little_InfoQ精选文章