【发布时间】:2017-12-09 13:47:33
【问题描述】:
我最近遇到了一个术语“反应式套接字”。到目前为止,我一直认为 websockets 是实现完全成熟的异步风格的方式。
那么什么是反应式套接字。
这个链接 (http://rsocket.io/) 甚至谈到了 websockets 的比较。
【问题讨论】:
-
你能解释一下为什么这个问题被否决了吗?
标签: websocket reactive rsocket
我最近遇到了一个术语“反应式套接字”。到目前为止,我一直认为 websockets 是实现完全成熟的异步风格的方式。
那么什么是反应式套接字。
这个链接 (http://rsocket.io/) 甚至谈到了 websockets 的比较。
【问题讨论】:
标签: websocket reactive rsocket
RSocket 在网络边界上实现Reactive Streams 规范。它是一种应用程序级通信协议,具有内置的框架、会话恢复和背压功能,可在网络上运行。
RSocket 与传输无关。 RSocket 可以在 Websockets、TCP、HTTP/2 和 Aeron 上运行。
Websockets 不提供应用级背压,仅提供基于 TCP 的字节级背压。 Websockets 也只提供框架,它们不提供应用程序语义。由开发人员来构建与 websocket 交互的应用程序协议。
RSocket 提供框架、应用程序语义、应用程序级背压,并且它不依赖于特定的传输。
有关创建 RSocket 背后的动机的更多信息,请查看 RSocket 网站上的motivations doc。
【讨论】:
WebSocket 和 RSocket 都是具有双向、多路、双工通信的协议。但两者都在不同的层次上工作。
WebSocket 是一种基于 TCP 的底层通信协议。它定义了如何将字节流转换为帧。但是 WebSocket 消息本身并没有关于如何路由或处理它的说明。因此,我们需要在应用层的 websocket 之上运行的消息传递协议,以实现双向通信。
RSocket 是一个完全反应式的应用程序级协议,它运行在 TCP、WebSocket、UDP 等字节流传输上。它提供对网络的应用程序流控制,以防止中断并提高弹性。 RSocket 采用了具有非阻塞背压的异步流处理的思想,其中失败的组件将与其简单地丢弃流量,不如将其压力传达给上游组件,让它们减少负载。
【讨论】: