来自/到 pubsub 和 websocket 的实时转换推送到客户端

Posted

技术标签:

【中文标题】来自/到 pubsub 和 websocket 的实时转换推送到客户端【英文标题】:Real time transformations from/to pubsub and websocket push to client 【发布时间】:2017-02-26 13:37:14 【问题描述】:

我需要从第三方提供商那里获取一些实时数据,将它们转换并通过 websockets 推送到浏览器。

从我收到数据到浏览器获取数据,整个过程不应超过 200 毫秒。

我正在考虑再次使用 pub/sub 到 pub/sub 的数据流,其中 websocket 服务器将订阅并将消息推送到浏览器。

这种方法是否正确或数据流不是为这样的事情设计的?

【问题讨论】:

【参考方案1】:

Dataflow 专为可靠的流式聚合和分析而设计,并非专为保证通过系统的亚秒级延迟而设计。像窗口化和触发这样的核心原语允许在定义的数据窗口上可靠地处理流,尽管延迟数据和潜在的机器或管道错误。例如,我们优化的主要用例是聚合和输出数据流上的统计信息,输出每个窗口的可靠统计信息,同时将日志记录到磁盘以实现容错,并在必要时在触发前等待,以容纳迟到的数据。因此,我们没有针对您需要的端到端延迟进行优化。

【讨论】:

我明白了,谷歌云中还有其他东西可以用于这种情况吗?我想我仍然会使用 pub/sub,但是对于内存转换我应该使用什么? 并说可以有 600 毫秒的延迟。这种方法是否仍然错误。有任何性能统计数据吗? 嗯,在这篇文章中他们说如果不应用窗口,数据流是低延迟***.com/questions/34279297/… 此管道还将一对一地转换消息。不需要窗口,因为不会有聚合 @chchrist 根据您的转换有多复杂,您可以简单地在App Engine 虚拟机上执行计算,甚至可以在Cloud Functions 上执行计算,因为可以从任何虚拟机调用Pub/Sub APIs。如果您知道 Dataflow 可以满足您的需求,我建议您对其进行测试,看看它是否符合您的延迟要求。

以上是关于来自/到 pubsub 和 websocket 的实时转换推送到客户端的主要内容,如果未能解决你的问题,请参考以下文章

将 pubsub 消息转换为 websocket 事件

基于 geohashes 的 pubsub 主题划分的建议,以实现巧妙的 websocket 连接服务

使用来自 Google Pubsub 的消息并将其发布到 Kafka

把酒言欢话聊天,基于Vue3.0+Tornado6.1+Redis发布订阅(pubsub)模式打造异步非阻塞(aioredis)实时(websocket)通信聊天系统

来自 PubSub 主题的 Google Cloud 函数触发器是订阅吗

我们可以使用单个 Google Cloud Dataflow 将来自多个 Pubsub(源)的数据写入多个 GCS(接收器)吗?