apache-storm - 如何在 Apache Storm Cluster 中维护分布式 HashMap
问题描述
我们在 Apache Storm 中有一个用例,我们需要从源系统获取数据,然后对收到的元组执行一些操作,但还想在数据库中查找数据。但是每次对数百万条记录进行数据库调用是不可行的。那么有没有一种方法可以在启动时加载分布式哈希映射,当元组在 Bolt 或 Spout 中处理时,首先查找此哈希映射,如果 HashMap 中不存在该值,则进行数据库调用并更新应该可以访问的相应地图。
解决方案
没有任何内置的东西(即不运行外部服务)可供整个拓扑访问,因为您的螺栓可能会在不同的 JVM 甚至不同的主机上运行。如果您需要分布式缓存,请查看 Redis https://redis.io/之类的内容。
您可能想查看https://storm.apache.org/releases/2.0.0-SNAPSHOT/State-checkpointing.html,API 应该能够做您想做的事情,并且支持 Redis 集成。如果不需要检查点功能,当然也可以直接使用 Redis。
推荐阅读
- django - Django我如何过滤ManyToMany字段
- rust - Rust 对临时值的引用不报错
- r - 拟合负二项式模型
- ios - 如何在 UICollectionViewCell 上设置约束?
- c# - 无法访问 Startup.cs 之外的 IApplicationBuilder 的所有扩展方法
- python - Python unittest:对值列表运行相同的测试,但将它们视为单独的测试
- python - 如何从 python 的列表中提取特定的电子邮件?
- php - Laravel:在刀片中显示两个日期之间的差异
- mysql - RMySQL 和 data.frame:强制引入整数范围的 NA
- c++ - 如何使用管道将字符串从孩子发送到父母