问题标签 [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.
messaging - 按时间戳排序的流数据聚合
我有一个用例,我从客户端接收事件,其中一些事件在逻辑上是相关的(属于单个会话),并且基于时间戳的事件之间有明确的顺序。
现在,我想构建一个解决方案,该解决方案应该继续聚合事件,直到以时间戳的递增顺序接收到特定组的最后一个。因此,如果收到不按顺序的事件,则应将其保留到收到之前的事件为止。然后,继续根据特定组的密钥将其存储在 HBase 等数据存储中。
问题是一次此类不完整组的数量可能达到数百万,并且需要能够支持快速附加到不完整组并保持接收到的事件无序的东西。我该怎么办?
browser - 如何在不使用应用程序的情况下通过浏览器访问 Android 文件系统(例如导航目录)并流式传输数据?
我正在尝试开发远程音频播放器的客户端应用程序。我开发了服务器端应用程序,但我在 android 端迷路了。
我想浏览音乐目录中的所有文件,获取存储在我的 android 手机中的列表并通过 wifi 将音乐数据发送到我的 PC。这可能吗?我可以在不制作合适的应用程序的情况下实现这一点吗?我怎样才能做到这一点?
apache-storm - Storm 多字段分组
我想做的是按两个字段("remote-client-ip", "request-params"
)对流进行分组,并计算每个组中元组的数量。并将它们组合成一张地图。这是我的拓扑:
但是调试后发现数据流一开始就被阻塞了groupBy()
,是多字段分组。Count()
在随后的聚合语句中,我没有执行任何操作。
所以我想我误解了关于多字段分组和聚合之间交互的一些概念。
请让我知道我的猜测是对还是错。谢谢!
cpu-architecture - 真实世界模拟到 TIS-100
最近的游戏TIS-100以一个相当有趣的机器架构为中心,其中 CPU 由可以与相邻邻居通信的“节点”组成。遗憾的是,我找不到公开讨论的参考手册的官方链接,但总而言之,每个节点都支持一个非常简单的 ISA,但在同一时钟上并行运行。每个节点有两个寄存器,一个ACC
寄存器和一个BCK
辅助寄存器。参考手册说 CPU 是为流处理而设计的。
这让我觉得这是一个相当有趣且可能有用的设计。这种架构是否在现实世界中使用?它有点像是时钟处理器和 FPGA 的混合体。
javascript - RxJS 中涉及异步步骤的批处理流
我正在处理一个数据流,通常是从RxNode.fromReadableStream()
一个中间步骤中提取的,该步骤是异步的,并且可能只能以一定的并发性运行,同时输出步骤只能以串行、离散的批次运行。
基本上是一个经典的转换管道:
有了承诺,它会是这样的(非常简化):
通过在转换后插入控制器,我可以确保转换独立执行,从而实现流水线化;而延迟和合并的结合似乎让我可以控制异步性和并发性。
但是,我controlled()
用来确保 map 步骤有效地暂停处理直到完成。它看起来真的很难看——难道没有更好的、非手动的方式来实现无损背压吗?
另外,我相信我必须对转换器使用相同的控制技巧,否则整个流将一次性转换并消耗内存。有没有更惯用的方法?
最后:如果输入的大小不能被批量大小整除,则上述内容实际上不起作用。出于某种原因,如果我request()
处理的项目数量超过了剩余项目的数量,整个管道就会退出;onComplete
甚至没有被调用。实际上,如果我最初request()
用一个很大的数字调用,整个管道似乎无限期地重复相同的内容。错误或预期行为?
编辑:我发现我可以使用. 没关系。concatMap
apache-storm - 达到 Apache Storm 的极限
我们正在尝试使用Apache Storm
.
应用程序
接收到大量的广告请求(100 TPS
- 一百个事务/秒),对它们
进行一些简单的计算,然后
将结果存储在 NoSQL 数据库
中,最大延迟为 10 毫秒。
我们将Cassandra
其用作接收器的写入功能。
但是,我们已经超过了8 ms
要求,我们在100ms
.
我们尝试使用螺栓的并行性来最小化缓冲区(Disruptor 缓冲区)的大小并很好地平衡拓扑。
但是我们还在20ms
。
有 4 个工作人员(8 个核心 / 16GB),我们20k TPS
仍然处于非常低的水平。
是否有任何优化建议,或者
我们是否刚刚达到Apache Storm
(limits of Java
) 的限制?
neo4j - Apache Samza 本地存储 - OrientDB / Neo4J 图而不是 KV 存储
Apache Samza 使用 RocksDB 作为本地存储的存储引擎。这允许有状态的流处理,这里有一个很好的概述。
我的用例:
- 我有多个事件流,我希望从 Apache Kafka 等系统中获取这些事件流。
- 这些事件创建状态 - 我希望跟踪的状态基于以前收到的消息。
- 我希望根据计算的状态生成新的流事件。
- 输入流事件高度连接,OrientDB / Neo4J 等图形是查询数据以创建新流事件的理想媒介。
我的问题:
是否可以使用非 KV 存储作为 Samza 的本地存储?有没有人用 OrientDB / Neo4J 做过这个,有人知道一个例子吗?
real-time - Apache Samza 聚合规则,用于在滚动时间段内丢失预期事件
我的用例是实时识别 X 时间后未收到预期事件的实体。
例如:如果我们在时间 T 收到了 PaymentInitiated 事件,但在 T+X 时没有收到 PaymentFailed / PaymentAborted / PaymentSucedded 中的任何一个,则引发一个触发器,说明 PaymentStuck 以及 PaymentIntitiated 事件的详细信息。
我如何在 Apache Samza 中为此类用例建模,因为它在每个事件上滚动时间段 X,而不是固定时间间隔。
谢谢, 哈里什
linkedin - LinkedIn 使用 Kafka 的目的
谁能告诉我 LinkedIn 使用 Kafka 的具体目的是什么。我从linkedin博客中阅读了很多关于Kafka的文章。他们在哪里解释了他们如何使用 Kafka 以及他们获得了多少性能优势。
Linkedin 是否使用 Kafka 通知网络中的其他用户您的朋友 xxx 有新的状态更新。类似的东西
xml - 流解析xml而不知道子标签的顺序
我必须解析一些 xml,我决定使用 xml-conduit 来完成该任务并使用它的流式传输部分。
xml 的结构由包含元素及其出现频率的 xsd 文件给出。但不是他们预期的顺序。
如何使用 xml 结构的子级解析所有可能的重新排序Text.XML.Stream.Parse
?
问题
假设我们有一个 xml 描述,例如
那么两者<Root><A>atext</A><B>btext</B></Root>
和 <Root><B>btext</B><A>atext</A></Root>
都是此 xml 结构的有效实例。但是在流设置中解析需要一个顺序才能成功。
我想过使用类似的东西,parseRoot1 <|> parseRoot2
但后来我必须实现Alternative
实例并手动编写所有可能性,我真的不想这样做。
这是一个最小的示例 haskell 程序。
Example.hs
笔记
example.cabal