【发布时间】:2018-02-12 18:38:37
【问题描述】:
我正在向 Java 数据流管道内的一个 DoFns 添加缓存功能。 DoFn 目前正在使用 REST 客户端向每个输入元素的端点发送请求(根据请求数量收费,并且响应大约每小时更改一次),我想要实现的是缓存来自的响应端点,并让它每 15 分钟到期一次。
我找到了两种方法来做到这一点:一种来自类似的stackoverflow question,它建议使用静态变量来托管缓存服务(我使用番石榴进行缓存)。但是我不确定如何从 DoFn 之外更新到期时间。
我发现的另一种方法是使用stateful processing 存储跟踪请求和响应的哈希,并使用 TimerSpec 每 15 分钟清除一次“缓存”。虽然看起来没有办法为缓存中的每个元素设置一个计时器。
我还没有尝试过第二种方法。虽然我要实现它,但我想知道是否有人遇到过类似的情况,有什么建议,或者有更好的方法。
【问题讨论】:
-
REST 响应大约每小时更改一次,但您希望它每 15 分钟过期一次?
-
是的,因为响应不会根据固定的时间表更改,并且它可能会在获得更新之前发送响应以进行缓存
标签: java caching google-cloud-dataflow apache-beam