我们在Apache Storm中有一个用例,我们需要从源系统获取数据,然后对收到的元组执行一些操作,但也想查找数据库中的数据。但是每次为数百万条记录进行数据库调用是不可行的。 那么有没有一种方法可以在启动时加载分布式哈希映射,当在Bolt或Spout中处理元组时,首先查找此哈希映射,如果HashMap中不存在该值,则进行数据库调用和更新应该可以访问的相应地图。
答案 0 :(得分:0)
没有任何内置(即没有运行外部服务)可以访问整个拓扑,因为您的螺栓可能会在不同的JVM中运行,甚至可能在不同的主机上运行。如果您需要分布式缓存,请查看Redis https://redis.io/等内容。
您可能希望查看https://storm.apache.org/releases/2.0.0-SNAPSHOT/State-checkpointing.html,API应该能够执行您想要的操作,以及对Redis集成的支持。如果您不需要检查点功能,您当然也可以直接使用Redis。