针对Oracle数据库源的c# web服务有时不可用

本文关键字:服务 web 数据库 Oracle 针对 | 更新日期: 2023-09-27 17:54:51

我们现有一个包含大量数据的大型应用程序。我们想把它用作各种内部编写的c# web应用程序的数据源,这样我们就不会有更多冗余的数据。

我们正在查看的数据没有太大的变化,所以缓存在大多数情况下都可以正常工作。因此,我们正在编写一个c# Web服务,用于在各种内部编写的应用程序中重用这些数据。

但是,大约每个月有一次Oracle数据库源不可用。

在web服务中处理这个问题的最好方法是什么,以便那些依赖于该数据的其他应用程序也不会中断?

针对Oracle数据库源的c# web服务有时不可用

设置复制或故障转移伙伴?老实说,这似乎不是一个需要更多代码的工作;这听起来像是一个需要更多基础设施的工作。我知道Oracle的许可证很贵,但是花钱让开发人员解决不可用的问题也很贵。

如果您必须简单地用代码解决它,那么如果任何定期调度的DB查询因超时或连接失败类型消息而失败,则web服务应该简单地保留并返回其缓存的数据。在这种情况下,缓存的数据应该保留尽可能长的时间,直到刷新该数据的调用成功。如果没有缓存数据,您可以忽略错误并不返回任何数据,或者返回一个错误,说明数据在两个地方都不可用。

解决方案是使用不会过期的二级缓存。
如果第一个(较短的)缓存成功地从数据库更新,则用最新的值更新辅助缓存。如果数据库查询失败并且第一个缓存已经过期,那么第一个缓存将由第二个缓存更新。所以总有一个二级缓存