问题标签 [event-stream-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
38 浏览

database - 是否可以使用 BASE-fashioned 数据库实现 Exacly Once Semantics?

在流处理应用程序(基于 Apache Flink 或 Apache Spark Streaming 的 fe)中,有时需要只处理一次数据。

在数据库世界中,通过使用遵循 ACID 标准的数据库可以实现相同的目标(如果我在这里错了,请纠正我)。

但是有很多(非关系)数据库不遵循 ACID 而是遵循 BASE。

现在我的问题是:如果我要将这样的 BASE 数据库集成到流处理应用程序中(仅一次),我还能保证对整个管道进行一次处理吗?如果这是可能的,在什么情况下?

0 投票
0 回答
30 浏览

graphql - 哪种 AWS 产品适用于 HTTP 事件流需求?

哪种 AWS 产品适用于 HTTP 事件流需求?

我们有一个场景,客户端订阅实时事件,并且对于每个新事件,客户端都会在 HTTP 事件流(服务器端事件)处获得事件通知。

它应具有以下特点:

  1. 让我们考虑一个使用来自源的实时消息流并将该通知推送到客户端订阅的 HTTP 端点的应用程序。

  2. 此外,每个事件可能仅特定于特定客户端,然后该事件应仅由该客户端拉取。

(例如,正在进行现场板球比赛,并且对于每个球,我们都会收到事件。让我们考虑订阅我们的客户是ABCXYZ,“ABC”需要逐个球的覆盖范围以及每个结束的摘要,但“XYZ”需要只是每个结束的摘要。)

  1. 我们担心的是,每当我们的任何客户端断开连接时,客户端都会丢失在客户端断开连接之前发布的数据。

(假设ABC再次上线时断开了 10 分钟,它应该会收到断开时最近 10 分钟内发生的所有事件。)

我们尝试了以下产品,并确定了以下限制:

  1. 带有 GraphQL 订阅的 API 网关:Api 网关在 29 秒后超时,因此我们的订阅将断开连接。

  2. AWS AppSync 订阅:我们无法根据订阅参数控制突变,因为它是从突变到订阅的一种方式,反之亦然。

  3. AWS SNS 和它作为 HTTP/HTTPS 的扇出端点:我对 AWS SNS 理解的当前行为是将消息推送到准备接受发布请求的 http 端点(例如 http://www.xyz.com/beta/events) ),但我正在寻找一种机制,即客户端正在拉动事件。

如果有人能建议哪种 AWS 产品或其他产品适合我们的 HTTP Event Stream 需求,这对我来说将是很大的帮助。

0 投票
0 回答
54 浏览

python - scan_iter 的预期行为,因为它返回整个关键数据,而不是计数,并且随着数据规模的增加其性能问题

这是我正在处理的异步功能。这里的思路是连接Redis,里面有key-val对,val是json对象或者list,需要进一步处理。

这些 key-val 对由上游进程生成,该进程使用 Redis 作为临时存储。输入速率约为每分钟 5000 对。

这里的过程是 while 循环连续运行(使用 cou 测试 1 次迭代),检查 dbsize 并使用异步过程处理一批键。

现在我在测试这段代码时的期望是 scan_iter 会给我一批 10 个键,这些键将被处理,并且 cou 将递减并退出 while 循环。但它返回了所有内容,并且所有内容都立即得到处理。

我的问题:

  1. scan_iter 是否会出现这种行为?有没有办法强制 scan_iter 只返回特定数量的键?

  2. 如果 Redis 中有数百万个键,这种行为不会导致性能问题吗?如何避免这种性能下降?

  3. 有没有更优雅的方式来处理 Redis 中传入数据的批处理?

0 投票
2 回答
29 浏览

hazelcast - Hazelcast Jet Reliable Topic Sinks 是幂等的吗?(websocket源的Hazelcast容错)

我在 Hazelcast Jet 5.0(或 4.x)文档中找不到这个,所以我希望有人可以在这里回答这个问题 - 可以将可靠的主题用作幂等接收器,例如对来自两个相同不可靠来源的重复事件进行去重(如网络套接字)。或者我应该按照https://hazelcast.com/blog/stream-deduplication-with-hazelcast-jet/的建议使用明确的事件重复数据删除?或者有没有更好的方法来处理像 websockets 这样的不可靠来源(我的意思是我不想错过通过 websocket 摄取的事件,并且单个 websocket 实例可能失败的可能性非零)?