用于实时解决方案的事件驱动架构
对于成功的实时解决方案,您需要考虑一种事件驱动的异步通信方法。在事件驱动模型中,事件指示可能会触发感兴趣的客户端(或事件使用者)执行某些操作(例如更新 UI)的更改。事件通过事件通道作为消息传递给使用者。事件生成者正在传递反映数据或状态实时更改的事件。
事件驱动系统中的典型模式是"发布和订阅"。当状态发生更改时,事件生成者(发布者)发送事件消息,事件订阅者可以使用这些消息并调用其业务逻辑作为响应。
实时更新协议
在事件驱动的体系结构中,事件使用者需要能够异步接收更新。可供选择的协议包括:
- HTTP 长轮询:服务器保持客户端连接打开状态,以便在新数据可用或达到连接超时阈值时提供响应。
- WebSocket:通过持久 TCP 连接提供双向全双工通信通道,与半双工替代方案(如 HTTP 长轮询)相比,开销要低得多。
- MQTT:用于在 CPU 功率和/或电池寿命有限的设备(例如 IoT 设备)之间流式传输数据的首选协议。
- SSE:一种开放、轻量级、仅订阅的协议,用于事件驱动的数据流。 WebSocket 可以说是支持实时用户体验的最广泛使用的协议。WebSocket 于 2011 年由 - RFC 6455 标准化,是建立在设备的 TCP/IP 堆栈之上的薄传输层。
WebSocket的出现标志着 Web 开发的转折点。
WebSocket 连接专为事件驱动架构而设计,并针对最小开销和低延迟进行了优化,可通过持久的单套接字连接在客户端和服务器之间实现双向全双工通信。其目的是提供本质上尽可能接近原始的 TCP 通信层。
与 REST 相比,WebSocket 连接提高了效率;它们的扩展性更好,并且 WebSocket 协议是基于推送的,因此连接的客户端在事件发生时立即接收更新。
