我们有一个包含大量数据的现有大型应用程序。我们希望将它用作各种内部编写的C#Web应用程序的数据源,因此我们没有更多的冗余数据。
我们正在查看的数据不会发生太大变化,因此缓存在大多数情况下都可以正常工作。因此,我们正在针对要在各种内部编写的应用程序中重用的数据编写C#Web服务。
但是,每月大约一次,Oracle数据库源不可用。
在Web服务中处理此问题的最佳方法是什么,以便依赖该数据的其他应用程序也不会中断?
答案 0 :(得分:1)
设置复制或故障转移合作伙伴?老实说,这似乎不是更多代码的工作;这听起来像是更多基础设施的工作。我知道Oracle许可证价格昂贵,但支付开发人员的费用也是如此。
如果您只需要使用代码解决它,那么如果任何定期调度的数据库查询因超时或连接失败类型消息而失败,则Web服务应该只保留并返回其缓存数据。在这种情况下,缓存数据应该尽可能长时间保留,直到调用刷新数据成功为止。如果没有缓存数据,您可以吞下错误并不返回任何内容,也可以返回错误,指出两个地方的数据都不可用。
答案 1 :(得分:1)
解决方案是使用不会过期的辅助缓存 如果从数据库成功更新第一个(较短)缓存,则使用最新值更新二级缓存。如果数据库查询失败并且第一个缓存已过期,则第二个缓存会更新第一个缓存。所以总有一个二级缓存。