我有一个任务,用户使用第三方的 XML。XML 提要每天仅更新一次。XML 存储在数据库中,并在请求时返回给用户。如果 XML 不在数据库中,则从第三方检索,存储在数据库中并返回给用户。所有后续请求都将简单地从数据库中读取 XML。
现在我的问题。假设对第三方的请求需要 10 秒才能返回。在此期间,有多个服务器调用相同的数据。我不希望这些中的每一个都向第三方发出请求,我不希望用户什么也没有收到或收到错误。他们可能应该等待第一个请求完成,此时 XML 可用。这是一个相对简单的问题,但我想知道最好的解决方法是什么。
我是只使用一个简单的标志来控制请求还是使用信号量之类的东西?是否有基于我打算使用的堆栈的更好的解决方案,即 Play 框架和 cassandra 后端。我可以用回调或触发器做些什么吗?
顺便说一句,当第一个请求进来时,我需要延迟加载数据。因此,在此任务中,不能选择在单独的进程中或在应用程序启动时获取数据......
谢谢