这不是Storm特有的问题,而是与用户会话管理相关联的。如果您希望您的系统面临大量会话,这些会话需要很长时间才能获得某种状态(在您的情况下,会到达n
事件),并最终生成大量数据,那么您需要在设计中考虑到这一点,这意味着明智地选择n
并围绕它构建大量集成测试,以检查系统在负载下是否保持响应能力。
你可以
n
动态化(我想这就是DevOps的全部内容)userid
的n
并将数据保存在数据库或文件系统中,如果n
达到临界值,则将其取回。这在某种程度上与流式拓扑的思想相矛盾,但它开始变得有意义,特别是在处理数据后需要持久化(部分)数据时。这并不是说,如果您想部署软件更新,除了n
之外,还需要考虑时间值t
,因为会话越短,就越容易连续部署。
我有一个非常简单的Storm螺栓,从Kafka喷口输入,应该只是写到标准输出。它扩展了BaseRichBolt。有关的两种方法是:
编辑:我向Bolt添加了一个。ack()(这要求我使用一个丰富的Bolt而不是基本的Bolt)并且遇到了同样的问题--没有任何信息告诉我Bolt正在处理元组。 如果有关系的话,我会在EC2实例上的CentOS映像上运行这个。如有任何帮助,不胜感激。 查看生成的Storm worker日志,我看到这一行: 下面几行如下: 工作日志的其余部分没有显示螺栓处理的消息的日志/打印。我不明白为什么螺栓似乎没
我正在尝试测量拓扑中每个bolt的延迟。Storm给出的延迟数是不够的,因为我们想要计算百分位数。在我当前的设置中,我通过测量完成execute方法(包括发出调用)所需的时间来测量bolt的延迟。该方法的假设是,即使当前bolt实例和下一个bolt实例在拓扑结构中共享同一个执行器,收集器的emit也会立即返回,而不需要调用下一个bolt实例执行方法。
来自Kafka喷泉的Storm--有条件消耗的溪流? 我如何获得这个bolt中数据中所有字段的模式,而不是基本上重新解析所有数据并重新创建它?
因此,如果您使用基于JUnit的单元测试,是否建议您运行一个小型模拟拓扑(?)并测试该拓扑下的(或)的隐含契约?或者,是否可以使用JUnit,但这意味着我们必须仔细模拟Bolt的生命周期(创建它、调用、嘲弄等)?在这种情况下,被测类(螺栓/喷口)有哪些一般的测试点需要考虑? 其他开发人员在创建正确的单元测试方面做了什么? 我注意到有一个拓扑测试API(参见:https://github.com/x
在我的拓扑中,当元组从spout转移到bolt或从bolt转移到bolt时,我看到大约1-2 ms的延迟。我使用纳秒时间戳来计算延迟,因为整个拓扑运行在单个Worker中。拓扑是在集群中运行的,集群运行在具有生产能力的硬件中。 根据我的理解,在这种情况下,元组不需要序列化/反序列化,因为所有东西都在单个JVM中。我已经将大多数喷流和螺栓的并行性提示设置为5,并且喷流仅以每秒100的速率产生事件。我