下载APP
登录
关闭
讲堂
部落
算法训练营
前端进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者

观点:API已死,APIs万岁

2020-01-29 极客时间编辑部

讲述:丁婵

时长05:59大小8.23M

近日,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 的功能更强大,因此,它更适合在需要更高处理和内存要求的客户端系统上运行。这也意味着,它无法在物联网的传感器或嵌入式世界中很好地发挥作用。
以上就是大卫·麦肯纳的观点,希望对你有所帮助。
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
技术管理者的管理视野
下一篇
一个通用的数据中台架构应该如何构建?
 写留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。