redispub/sub是套接字的替代方案吗



我是redis的新手,在阅读时我了解了pub/sub。我发现pub/sub和socket之间有很多相似之处。我在谷歌上搜索了同样的问题,但没有得到任何令人满意的答案。请帮忙。

套接字和pub/sub从根本上讲是非常不同的。

  • 拓扑-套接字是点对点的,即一对一Pub/sub是多对多的,即M对N,其中M和N可能不同,或者可能为零,所以你可能发送没有人在听的消息,或者监听没有人在发送的消息。

  • Broker-Pub/sub需要Broker来转发/保留/重试消息并管理发布者和订阅者。套接字中不涉及代理。

  • 消息定向-Pub/sub是面向消息的,因此,如果发布者发送10或80字节的消息,订阅者将收到10或80个字节。插座是";流导向的">,因此没有内置的消息结尾分界,只有一个字节流。因此,客户端套接字可以发送1000字节,然后再发送1000字节;接收器可以接收10字节,然后接收3字节,然后是1987字节。

  • 同步性-套接字本质上是同步的,因此接收方必须在发送方发送的同时进行交互Pub/sub本质上更异步,发布者可以发送消息,代理可以保留消息,并在新客户端连接时稍后发送,因此发送方和接收方不一定同时存在。

  • Persistence-套接字上发送的数据是短暂的,除非两个端点中的一个决定将其存储,否则不会将其存储在任何位置。Pub/sub消息可以由代理存储和持久化,用于日志记录或重试,或通知新连接的客户端某个发布者的最后已知状态。

最新更新