【发布时间】:2013-01-10 18:22:29
【问题描述】:
为了避免 GAE 数据存储写入中的高延迟(峰值),我想实现一个后写缓存(使用 Java 低级 API)。这意味着数据先同步写入memcache,然后异步写入datastore,这样请求可以快速返回。
然而,这意味着我需要以某种方式也需要异步处理由数据存储争用引起的异常(例如,启动重试)。更准确地说,我需要能够在请求返回后对发生的争用做出反应。我怎样才能做到这一点?使用任务队列进行异步写入处理不是一种选择,因为据说推送到队列仅比数据存储写入快一点。
如果这是不可能的,那么实现后写缓存的好方法是什么?或者在数据丢失不是一种选择的情况下如何处理缓慢的写入。
【问题讨论】:
-
你检查过 Objectify 4 API。保存和加载操作在其中是异步的。也许您可以使用它或从那里获得一些想法。
-
我不是很肯定,但从我的阅读来看,Objectify 4 的异步操作似乎仍然必须在请求完成之前完成,因此它们仅相对于请求期间运行的其他代码是异步的。我认为这个问题是关于推迟写入,以便在请求返回后(可能)完成。
-
是的,完全正确。感谢安迪的澄清。
标签: java google-app-engine caching google-cloud-datastore