我们在ApacheStorm中有一个用例,我们需要从源系统获取数据,然后对接收到的元组执行一些操作,但也希望在数据库中查找数据。但是每次对数百万条记录进行数据库调用是不可行的。因此,有没有一种方法可以让我们在启动时加载一个分布式哈希Map,当元组在bolt或spout中处理时,首先查找这个哈希Map,如果哈希Map中不存在该值,那么进行datbase调用并更新相应的Map,该Map应该可以通过访问。
我们在ApacheStorm中有一个用例,我们需要从源系统获取数据,然后对接收到的元组执行一些操作,但也希望在数据库中查找数据。但是每次对数百万条记录进行数据库调用是不可行的。因此,有没有一种方法可以让我们在启动时加载一个分布式哈希Map,当元组在bolt或spout中处理时,首先查找这个哈希Map,如果哈希Map中不存在该值,那么进行datbase调用并更新相应的Map,该Map应该可以通过访问。
1条答案
按热度按时间c6ubokkw1#
由于您的bolt可能运行在不同的jvm中,甚至运行在不同的主机上,因此没有任何内置的(即不运行外部服务)可以访问整个拓扑。如果你需要一个分布式缓存,可以看看redis之类的东西https://redis.io/.
你可能想看看https://storm.apache.org/releases/2.0.0-snapshot/state-checkpointing.html,api应该可以做你想做的事情,并且支持redis集成。如果不需要检查点功能,当然也可以直接使用redis。