我正在开发一个应用程序,可以在用户之间聊天。使用Pub/Sub来达到这个目的有意义吗?我在文档中找不到可能的用例。有没有什么好的理由来解释为什么它不适合呢?
发布于 2018-12-11 22:11:22
Google Cloud Pub/Sub不适合在聊天产品中与最终用户设备进行通信。云发布/订阅是为torrents设计的:相对较少的长寿命流,需要高吞吐量。在聊天应用程序中,您需要细流:具有低吞吐量的大量短暂流。
云发布/订阅quotas仅允许10,000个主题项目和每个主题或每个项目10,000个订阅。当设置一个新的流水线时,人们通常在开始时创建一次主题及其订阅,然后从那一点开始发布和订阅。因此,云发布/订阅更适合于服务器到服务器的通信或大型流媒体事件的摄取,通常与Dataflow和/或BigQuery相关。
Cloud Pub/Sub的权限模型也不是聊天应用的好选择。对主题或订阅的写入或读取权限需要对用户进行身份验证。在您的项目中使用权限对每个用户进行身份验证实际上并不可行,因此您可以选择对所有用户使用通用凭据,这可能是不安全的。
这并不是说Cloud Pub/Sub不能成为聊天服务的一部分,它只是不能用来向特定用户发送消息。事实上,对于发送到Hangout聊天机器人的消息,云发布/订阅可以是used as the transport mechanism。不过,在这种情况下,对用户的响应将直接转到Hangout聊天API,而不是通过Pub/Sub返回。因此,如果您正在实现一个聊天服务,您可能会让您的用户将消息发送到您设计的前端服务器,然后将这些消息发布到Cloud Pub/Sub。您构建的另一个服务器可以是这些消息的订阅者,然后将相应的消息传递给相应的单个用户。在这种情况下,Cloud Pub/Sub用于从您的前端服务器(torrent)摄取所有消息,而将消息传递给单个用户则依赖于其他机制(细流)。谷歌云中为这种个人设备交付而设计的产品是Firebase Cloud Messaging,
发布于 2018-12-09 13:38:07
谷歌发布/订阅可以用于聊天消息吗?
是。我不会将发布/订阅用于个人对个人的chat消息传递。发布/订阅是为系统本身解耦而设计的,以支持分布式系统。
为什么不使用发布/订阅:
poll。这意味着每个聊天人员都有一个订阅。这既不是一个好的设计,也不是inexpensive.对于chat,还有更好的解决方案。
发布于 2020-08-13 22:22:48
用于聊天的Pub/Sub?不是的。正如上面正确提到的,发布/订阅有两个主要用例,用于数据摄取和系统解耦。
我建议你搜索一下网页套接字,如果你仍然有兴趣制作聊天应用程序。
https://stackoverflow.com/questions/53689633
复制相似问题