HTTP REST API 和 WebSocket REST API 之间的性能差异
什么是API?
应用程序编程接口 (API) 是一种软件,它为其他软件提供与之交互的接口。
什么是 REST API?
REST 或 RESTful API 设计(Representational State Transfer)是一种使用现有协议的架构风格。 REST API 设计有六个关键约束:
- 使用统一界面 (UI)
- 基于客户端-服务器
- 无状态操作
- RESTful 资源缓存
- 分层系统
- 按需编码
什么是HTTP REST API?
虽然 REST 几乎可以用于任何协议,但它通常利用 HTTP。 所以基本上 HTTP REST API 是一个 API,它使用 HTTP 协议在服务器和客户端之间传输请求/响应数据,同时使用 REST API 设计原则。
什么是 WebSocket REST API?
这是一个使用 WebSockets 协议的 API,它使用 WebSockets 协议(构建在 HTTP 协议之上)在服务器和客户端之间传输请求/响应数据,同时使用 REST API 设计原则。
为什么这对响应速度很重要?
虽然 WebSocket 在仅用于单个请求(打开 Web 套接字 -> 发送请求 -> 获取响应 -> 关闭 Web 套接字)时可能会过大,但当我们在单个连接上执行多个请求时,它们会非常快。 WebSockets 背后的整个想法是在客户端和服务器之间建立双向通信通道。 这意味着两件事:
- 这种类型的连接使我们能够在不发送任何请求的情况下从服务器接收更新(例如,我们可以创建通知)
- 因为我们只创建一次连接并多次使用它(对于我们想要的任意数量的请求),则可以节省大量服务器资源和带宽,因此我们可以获得更快的响应。
性能测试和结果
用于执行测试的硬件是具有 M1 Max 处理器和 32GB RAM 和 iPad mini 4 的 Apple MacBook Pro 16"。服务器是在 VM(2 核,4GB ram)内创建的。NodeJS(v.18.2 .0) 用于为 HTTP REST API 和 WebSocket REST API 创建相同的“书籍”模拟数据。响应长度为 358 字节。
为了我们的测试目的,我们创建了一个简单的 Flutter 应用程序(v3.0.1)来扮演测试工具的角色。 我选择 Dio 包来创建 HTTP 请求并测试 HTTP RESP API 部分和 web_socket_channel 包用于 WebSocket REST API 部分。 多个请求的结果以毫秒为单位。
最后的想法
从上面的表格和图表中,我们可以毫不奇怪地看到,随着请求数量的增加,WebSocket 的优势越来越大,无论我们是在模拟器还是真实设备上进行测试。
在我的下一篇文章中,我们将解释如何使用 WebSocket REST API 的 API 版本控制构建简单的 NodeJS 服务器架构。
相关文章
构建 MongoDB REST API
发布时间:2023/04/20 浏览次数:153 分类:MongoDB
-
MongoDB 没有成熟的 REST 接口,因为服务器使用本机二进制协议来提高效率。 但是,各种应用程序都允许创建 MongoDB REST API。
Node.js 中的 HTTP 发送 POST 请求
发布时间:2023/03/27 浏览次数:187 分类:Node.js
-
在本文中,我们将学习如何使用 Node.js 使用第三方包发出发送 post 请求。
Angularjs 使用 HTTP Post 发送数据
发布时间:2023/03/24 浏览次数:97 分类:Angular
-
本教程重点介绍如何使用 Angular 中的 http.post() 函数将数据发送到服务器。
如何在 Go 中重用 Http 连接
发布时间:2023/01/17 浏览次数:139 分类:Go
-
HTTP 1.1 协议支持 HTTP 持久连接,也称为 HTTP Keep-Alive 。 这允许客户端和服务器在发送多个 HTTP 请求/响应时重新使用相同的底层 TCP 连接。 因此,客户端不是为每个 HTTP 请求建立连接,而