极客视点
极客时间编辑部
极客时间编辑部
113243 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/06:00
登录|注册

观点:API已死,APIs万岁

讲述:丁婵大小:8.23M时长:06:00
近日,Axway 公司工程师大卫·麦肯纳(David Mckenna)发文称:REST API 的统治地位已经衰退,它的竞争者们正向它发起挑战。以下是麦肯纳的观点。
REST 是目前颇受欢迎的互联网超媒体分布式系统架构,它极大地简化了客户端可访问性的问题。此外,其动词 GET、PUT、POST 等允许使用简单的通用工具,比如 cURL 和 Postman,你可以简单地用多种语言创建自己的客户端。
不过,REST 正面临一些对手们的挑战。如果把这些挑战者比喻成各大家族,可以划分为 6 个家族:反向 API 家族、事件驱动家族、gRPC 家族、GraphQL 家族、OData 家族、IoT 家族。

1. 反向 API 家族

这个家族的标志是“电话”,服务器调用客户端,而且不能反过来调用。具体包括 Webhooks、WebSocket 以及 SSE。
先来看 Webhooks。它调用的发起方是服务器,服务器将状态变更通知给客户端,客户端应用程序注册一个回调 URL,当服务器上的资源发生状态变更时,就可以访问该 URL,客户端应用程序将收到状态变更的 HTTP 负载通知。
再看 WebSocket。这是一种传输协议,它通过一个 TCP 套接字连接在服务器和客户端之间,建立一个持久的双向通信通道。它适用于需要实时更新的应用程序,服务器可以在连接上随时推送数据。所有现代浏览器都支持 WebSocket。
SSE 也叫服务器发送事件,是一种服务器推送技术。它允许客户端通过带有内置自动重连机制的 HTTP 连接接收来自服务器的自动更新。SSE 适用于不需要从客户端发送数据,但要通过某些服务器操作进行更新的场景,例如股票行情、共享设施更新、好友状态更新等。

2. 事件驱动家族

这个家族的标志是 Kafka 图标,因为它是“事件驱动”的主导者。家族主要由三个字符组成,即基于提交日志的 Apache Kafka 和 NATS 的消息传递系统,以及 RabbitMQ 的消息队列。这些技术已经成为基于异步事件的微服务架构的实际支柱。在这些架构中,诸如 CQRS(命令查询职责分离)和事件源等不同的设计模式非常流行。
因为基于事件的系统是异步的,所以系统本身将具有最终一致性,开发人员必须处理服务之间的不一致数据。根据所使用的消息传递主干,并考虑接收重复事件、无序事件或丢失事件(保证交付)的处理。

3. gRPC 家族

这是 CNCF 的一个顶级项目,它是为远程过程调用(RPC)而设计的,通常在微服务架构中使用,并且支持双向流和可插拔的身份验证机制。
gRPC 使用了 HTTP 2.0,相较于传统的 HTTP 1.1 REST 调用有较高的性能。此外,gRPC 的服务定义使用了 Proto Buf,可以用多种语言生成客户端和服务端存根。

4. GraphQL 家族

它适用于移动应用程序,借助 GraphQL,客户端可以确定它们需要的数据以及格式,无需遍历多个 REST 请求 / 响应来查找应用程序所需的资源。这将减少调用客户端建立的网络连接次数,只检索需要的数据即可。如果客户端是移动应用程序或单页应用程序,使用 GraphQL 的话就可以提供更好的用户体验。
2015 年,Facebook 公开发布了 GraphQL 规范和参考实现。目前,GraphQL 的管理工作由 GraphQL 基金会负责。

5. OData 家族

它定义了构建和使用 RESTful API 的最佳实践,由微软于 2007 年开发。
OData 是 HTTP、REST 和 JSON 之上的一组通用约定,如果采用这些约定,API 提供程序将以标准且一致的方式来处理查询、分页、排序和过滤 API 等问题。OData API 经常出现在运行 Microsoft 和 SAP 服务的生态系统中。

6. IoT 家族

具体包括 MQTT 和 AMQP。
先来看 MQTT,即消息队列遥测传输。这是一种基于发布 / 订阅的 ISO 标准消息传递协议,它在 TCP/IP 协议上工作。对于带宽昂贵且所需开销较小的嵌入式系统等客户端来说,MQTT 是一种完美的协议。
再来看 AMQP,即高级消息队列协议。它是异步通信中最流行的协议之一,也是面向消息中间件的开放标准应用层协议。它的主要特点是消息定向、排队、路由、可靠性和安全性。与 MQTT 相比,AMQP 的功能更强大,因此,它更适合在需要更高处理和内存要求的客户端系统上运行。这也意味着,它无法在物联网的传感器或嵌入式世界中很好地发挥作用。
以上就是大卫·麦肯纳的观点,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • William Ning
    个人认为,rest api接下来一段时间会继续发挥作用,但是本文确实给大家整理了目前客户端可访问性的方式集合,也算是增长了见识。
  • 文武木子
    目前看死不了🤣
    2
收起评论
大纲
固定大纲
1. 反向 API 家族
2. 事件驱动家族
3. gRPC 家族
4. GraphQL 家族
5. OData 家族
6. IoT 家族
显示
设置
留言
2
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部